summaryrefslogtreecommitdiffstats
path: root/src/kscopeactions.cpp
diff options
context:
space:
mode:
authorSlávek Banko <slavek.banko@axis.cz>2013-10-07 23:28:24 +0200
committerSlávek Banko <slavek.banko@axis.cz>2013-10-08 05:14:51 +0200
commit3af5832abe7c802a384cd58d34f7cc4433595ced (patch)
treecc300d6fae4cb5798f0cf5db3ece63026f34379a /src/kscopeactions.cpp
downloadkscope-3af5832abe7c802a384cd58d34f7cc4433595ced.tar.gz
kscope-3af5832abe7c802a384cd58d34f7cc4433595ced.zip
Initial import of kscope 1.6.2
Diffstat (limited to 'src/kscopeactions.cpp')
-rw-r--r--src/kscopeactions.cpp533
1 files changed, 533 insertions, 0 deletions
diff --git a/src/kscopeactions.cpp b/src/kscopeactions.cpp
new file mode 100644
index 0000000..d5c64fc
--- /dev/null
+++ b/src/kscopeactions.cpp
@@ -0,0 +1,533 @@
+/***************************************************************************
+ *
+ * Copyright (C) 2007 Elad Lahav (elad_lahav@users.sourceforge.net)
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, m_pWindow list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, m_pWindow list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ ***************************************************************************/
+
+#include <klocale.h>
+#include "kscope.h"
+#include "kscopeactions.h"
+#include "kscopeconfig.h"
+#include "filelist.h"
+#include "editortabs.h"
+#include "querywidget.h"
+
+KScopeActions::KScopeActions(KScope* pWindow) : QObject(),
+ m_pWindow(pWindow),
+ m_pCollection(pWindow->actionCollection())
+{
+}
+
+KScopeActions::~KScopeActions()
+{
+}
+
+/**
+ * Connects menu bar and toolbar commands with class members. These members
+ * handle the actions associated with each command.
+ */
+void KScopeActions::init()
+{
+ // File menu
+ KStdAction::openNew(m_pWindow, SLOT(slotNewFile()), m_pCollection);
+ KStdAction::open(m_pWindow, SLOT(slotOpenFile()), m_pCollection);
+ KStdAction::close(m_pWindow, SLOT(slotCloseEditor()), m_pCollection);
+ KStdAction::quit(m_pWindow, SLOT(slotClose()), m_pCollection);
+
+ addAction(i18n("Go to File List"),
+ NULL,
+ "Ctrl+Shift+O",
+ m_pWindow->m_pFileList,
+ SLOT(slotSetFocus()),
+ "file_open_file_from_list",
+ SIGNAL(toggleProject(bool)));
+
+ addAction(i18n("Save Al&l"),
+ "save_all",
+ "Ctrl+L",
+ m_pWindow->m_pEditTabs,
+ SLOT(slotSaveAll()),
+ "file_save_all",
+ NULL);
+
+ // Edit menu
+ m_pExtEditAction = addAction(i18n("Edit in E&xternal Editor"),
+ NULL,
+ "Ctrl+E",
+ m_pWindow,
+ SLOT(slotExtEdit()),
+ "edit_external_editor",
+ SIGNAL(toggleFile(bool)));
+
+ addAction(i18n("Go To Tag"),
+ NULL,
+ "Ctrl+Shift+T",
+ m_pWindow,
+ SLOT(slotGotoTag()),
+ "edit_goto_tag",
+ SIGNAL(toggleFile(bool)));
+
+ addAction(i18n("Complete Symbol"),
+ NULL,
+ "Ctrl+Space",
+ m_pWindow,
+ SLOT(slotCompleteSymbol()),
+ "edit_comp_symbol",
+ SIGNAL(toggleFile(bool)));
+
+ // Project menu
+ addAction(i18n("&New Project..."),
+ NULL,
+ NULL,
+ m_pWindow,
+ SLOT(slotCreateProject()),
+ "project_new",
+ NULL);
+
+ addAction(i18n("&Open Project..."),
+ "project_open",
+ NULL,
+ m_pWindow,
+ SLOT(slotOpenProject()),
+ "project_open",
+ NULL);
+
+ addAction(i18n("Open &Cscope.out..."),
+ NULL,
+ NULL,
+ m_pWindow,
+ SLOT(slotProjectCscopeOut()),
+ "project_cscope_out",
+ NULL);
+
+ addAction(i18n("Add/Remove &Files..."),
+ NULL,
+ NULL,
+ m_pWindow,
+ SLOT(slotProjectFiles()),
+ "project_add_rem_files",
+ SIGNAL(toggleProject(bool)));
+
+ addAction(i18n("&Properties..."),
+ NULL,
+ NULL,
+ m_pWindow,
+ SLOT(slotProjectProps()),
+ "project_properties",
+ SIGNAL(toggleProject(bool)));
+
+ addAction(i18n("&Make Project"),
+ "make_kdevelop",
+ "Ctrl+M",
+ m_pWindow,
+ SLOT(slotProjectMake()),
+ "project_make",
+ SIGNAL(toggleProject(bool)));
+
+ addAction(i18n("&Remake Project"),
+ "rebuild",
+ "Ctrl+Shift+M",
+ m_pWindow,
+ SLOT(slotProjectRemake()),
+ "project_remake",
+ SIGNAL(toggleProject(bool)));
+
+ addAction(i18n("&Close Project"),
+ "fileclose",
+ NULL,
+ m_pWindow,
+ SLOT(slotCloseProject()),
+ "project_close",
+ SIGNAL(toggleProject(bool)));
+
+ // Cscope menu
+ addAction(i18n("&References..."),
+ NULL,
+ "Ctrl+0",
+ m_pWindow,
+ SLOT(slotQueryReference()),
+ "cscope_references",
+ SIGNAL(toggleProject(bool)));
+
+ addAction(i18n("&Definition..."),
+ NULL,
+ "Ctrl+1",
+ m_pWindow,
+ SLOT(slotQueryDefinition()),
+ "cscope_definition",
+ SIGNAL(toggleProject(bool)));
+
+ addAction(i18n("&Called Functions..."),
+ NULL,
+ "Ctrl+2",
+ m_pWindow,
+ SLOT(slotQueryCalled()),
+ "cscope_called",
+ SIGNAL(toggleProject(bool)));
+
+ addAction(i18n("C&alling Functions..."),
+ NULL,
+ "Ctrl+3",
+ m_pWindow,
+ SLOT(slotQueryCalling()),
+ "cscope_calling",
+ SIGNAL(toggleProject(bool)));
+
+ addAction(i18n("Find &Text..."),
+ NULL,
+ "Ctrl+4",
+ m_pWindow,
+ SLOT(slotQueryText()),
+ "cscope_text",
+ SIGNAL(toggleProject(bool)));
+
+ addAction(i18n("Find &EGrep Pattern..."),
+ NULL,
+ "Ctrl+5",
+ m_pWindow,
+ SLOT(slotQueryPattern()),
+ "cscope_pattern",
+ SIGNAL(toggleProject(bool)));
+
+ addAction(i18n("Find &File..."),
+ NULL,
+ "Ctrl+7",
+ m_pWindow,
+ SLOT(slotQueryFile()),
+ "cscope_file",
+ SIGNAL(toggleProject(bool)));
+
+ addAction(i18n("&Including Files..."),
+ NULL,
+ "Ctrl+8",
+ m_pWindow,
+ SLOT(slotQueryIncluding()),
+ "cscope_including",
+ SIGNAL(toggleProject(bool)));
+
+ addAction(i18n("&Quick Definition"),
+ NULL,
+ "Ctrl+]",
+ m_pWindow,
+ SLOT(slotQueryQuickDef()),
+ "cscope_quick_def",
+ SIGNAL(toggleProject(bool)));
+
+ addAction(i18n("Call &Graph..."),
+ NULL,
+ "Ctrl+\\",
+ m_pWindow,
+ SLOT(slotCallTree()),
+ "cscope_call_tree",
+ SIGNAL(toggleProject(bool)));
+
+ addAction(i18n("Re&build database"),
+ "vcs_update",
+ NULL,
+ m_pWindow,
+ SLOT(slotRebuildDB()),
+ "cscope_rebuild",
+ SIGNAL(toggleProject(bool)));
+
+ // Go menu
+ addAction(i18n("P&revious Result"),
+ "up",
+ "Alt+Up",
+ m_pWindow->m_pQueryWidget,
+ SLOT(slotPrevResult()),
+ "go_prev_result",
+ SIGNAL(toggleProject(bool)));
+
+ addAction(i18n("N&ext Result"),
+ "down",
+ "Alt+Down",
+ m_pWindow->m_pQueryWidget,
+ SLOT(slotNextResult()),
+ "go_next_result",
+ SIGNAL(toggleProject(bool)));
+
+ addAction(i18n("&Previous Position"),
+ "back",
+ "Alt+Left",
+ m_pWindow->m_pQueryWidget,
+ SLOT(slotHistoryPrev()),
+ "go_prev_pos",
+ NULL);
+
+ addAction(i18n("&Next Position"),
+ "forward",
+ "Alt+Right",
+ m_pWindow->m_pQueryWidget,
+ SLOT(slotHistoryNext()),
+ "go_next_pos",
+ NULL);
+
+ addAction(i18n("Position &History"),
+ "history",
+ "Ctrl+h",
+ m_pWindow,
+ SLOT(slotHistoryShow()),
+ "go_history",
+ NULL);
+
+ addAction(i18n("Global &Bookmarks"),
+ "bookmark",
+ "Ctrl+Shift+G",
+ m_pWindow,
+ SLOT(slotShowBookmarks()),
+ "go_bookmarks",
+ NULL);
+
+ // View menu
+ m_pToggleFileViewAction = addToggle(i18n("Toggle File List"),
+ "view_sidetree",
+ "Ctrl+/",
+ m_pWindow->m_pFileViewDock,
+ SLOT(changeHideShowState()),
+ "view_toggle_filelist_dock",
+ NULL);
+
+ m_pToggleQueryWindowAction = addToggle(i18n("Toggle Query Window"),
+ "view_top_bottom",
+ "Ctrl+.",
+ m_pWindow->m_pQueryDock,
+ SLOT(changeHideShowState()),
+ "view_toggle_query_dock",
+ NULL);
+
+ m_pToggleTagListAction = addToggle(i18n("Toggle Tag List"),
+ "view_detailed",
+ "Ctrl+'",
+ m_pWindow->m_pEditTabs,
+ SLOT(slotToggleTagList()),
+ "view_toggle_tag_list",
+ NULL);
+
+ // Window menu
+ addAction(i18n("Close &All"),
+ "fileclose",
+ NULL,
+ m_pWindow,
+ SLOT(slotCloseAllWindows()),
+ "window_close_all",
+ NULL);
+
+ addAction(i18n("Go &Left"),
+ "back",
+ "Alt+Shift+Left",
+ m_pWindow->m_pEditTabs,
+ SLOT(slotGoLeft()),
+ "window_go_left",
+ NULL);
+
+ addAction(i18n("Go &Right"),
+ "forward",
+ "Alt+Shift+Right",
+ m_pWindow->m_pEditTabs,
+ SLOT(slotGoRight()),
+ "window_go_right",
+ NULL);
+
+ // Settings menu
+ KStdAction::preferences(m_pWindow, SLOT(slotConfigure()), m_pCollection);
+ KStdAction::keyBindings(m_pWindow, SLOT(slotShortcuts()), m_pCollection);
+
+ // Help menu
+ addAction(i18n("Show &Welcome Message..."),
+ NULL,
+ NULL,
+ m_pWindow,
+ SLOT(slotShowWelcome()),
+ "help_welcome",
+ NULL);
+
+ // Query widget popup menu
+ addAction(i18n("&New"),
+ "filenew",
+ NULL,
+ m_pWindow->m_pQueryWidget,
+ SLOT(slotNewQueryPage()),
+ "query_new",
+ SIGNAL(toggleProject(bool)));
+
+ addAction(i18n("&Refresh"),
+ "reload",
+ NULL,
+ m_pWindow->m_pQueryWidget,
+ SLOT(slotRefreshCurrent()),
+ "query_refresh",
+ SIGNAL(toggleProject(bool)));
+
+ m_pLockAction = addToggle(i18n("&Lock/Unlock"),
+ "encrypted",
+ NULL,
+ m_pWindow->m_pQueryWidget,
+ SLOT(slotLockCurrent()),
+ "query_toggle_locked",
+ SIGNAL(toggleProject(bool)));
+
+ addAction(i18n("&Close"),
+ "fileclose",
+ NULL,
+ m_pWindow->m_pQueryWidget,
+ SLOT(slotCloseCurrent()),
+ "query_close",
+ SIGNAL(toggleProject(bool)));
+
+ m_pExtEditAction->setEnabled(Config().useExtEditor());
+}
+
+void KScopeActions::initLayoutActions()
+{
+ m_pToggleFileViewAction->setChecked(m_pWindow->m_pFileViewDock->isShown());
+ m_pToggleQueryWindowAction->setChecked(m_pWindow->m_pQueryDock->isShown());
+ m_pToggleTagListAction->setChecked(Config().getShowTagList());
+}
+
+/**
+ * Enables/disables the "Edit in External Editor" command.
+ * @param bEnable true to enable the command, false to disable it
+ */
+void KScopeActions::enableExtEditor(bool bEnable)
+{
+ m_pExtEditAction->setEnabled(bEnable);
+}
+
+void KScopeActions::slotQueryDockToggled(bool bVisible)
+{
+ m_pToggleQueryWindowAction->setChecked(bVisible);
+}
+
+/**
+ * Ensures the "Show/Hide Query Window" action is unchecked when the dock
+ * is closed through its close button.
+ * This slot is conncted to the headerCloseButtonClicked() signal of the
+ * query window dock widget.
+ */
+void KScopeActions::slotQueryDockClosed()
+{
+ m_pToggleQueryWindowAction->setChecked(false);
+}
+
+/**
+ * Ensures the "Show/Hide File View" action is unchecked when the dock
+ * is closed through its close button.
+ * This slot is conncted to the headerCloseButtonClicked() signal of the
+ * file view dock widget.
+ */
+void KScopeActions::slotFileViewDockClosed()
+{
+ m_pToggleFileViewAction->setChecked(false);
+}
+
+/**
+ * Enables/disables all actions related to open projects.
+ * This slot should be called whenever a project is opened or closed.
+ * @param bEnable true to enable actions, false to disable
+ */
+void KScopeActions::slotEnableProjectActions(bool bEnable)
+{
+ emit toggleProject(bEnable);
+}
+
+/**
+ * Enables/disables all actions related to open files.
+ * This slot should be called the first file is opened, or when the last one
+ * is closed.
+ * @param bEnable true to enable actions, false to disable
+ */
+void KScopeActions::slotEnableFileActions(bool bEnable)
+{
+ emit toggleFile(bEnable);
+}
+
+/**
+ * Creates a new action.
+ * @param sCaption The text to display in the menu item
+ * @param szIcon Optional icon associated with the action
+ * @param szShortcut Optional key-combination string
+ * @param pReceiver The widget to receive the action's signal
+ * @param szSlot The widget's slot that connect to the signal
+ * @param szName The XML entry corresponding to the action
+ * @param szSignal Optional signal to connect to the setEnabled() slot of
+ * the action
+ * @return The newly created action object
+ */
+KAction* KScopeActions::addAction(const QString& sCaption, const char* szIcon,
+ const char* szShortcut, QWidget* pReceiver, const char* szSlot,
+ const char* szName, const char* szSignal)
+{
+ KAction* pAction;
+
+ // Create the action
+ pAction = new KAction(sCaption,
+ szIcon,
+ szShortcut == NULL ? KShortcut() : KShortcut(szShortcut),
+ pReceiver,
+ szSlot,
+ m_pCollection,
+ szName);
+
+ // Add to the given action list, if any
+ if (szSignal)
+ connect(this, szSignal, pAction, SLOT(setEnabled(bool)));
+
+ return pAction;
+}
+
+/**
+ * Creates a new toggle action.
+ * @param sCaption The text to display in the menu item
+ * @param szIcon Optional icon associated with the action
+ * @param szShortcut Optional key-combination string
+ * @param pReceiver The widget to receive the action's signal
+ * @param szSlot The widget's slot that connect to the signal
+ * @param szName The XML entry corresponding to the action
+ * @param szSignal Optional signal to connect to the setEnabled() slot of
+ * the action
+ * @return The newly created action object
+ */
+KToggleAction* KScopeActions::addToggle(const QString& sCaption,
+ const char* szIcon, const char* szShortcut, QWidget* pReceiver,
+ const char* szSlot, const char* szName, const char* szSignal)
+{
+ KToggleAction* pAction;
+
+ // Create the action
+ pAction = new KToggleAction(sCaption,
+ szIcon,
+ szShortcut == NULL ? KShortcut() : KShortcut(szShortcut),
+ pReceiver,
+ szSlot,
+ m_pCollection,
+ szName);
+
+ // Add to the given action list, if any
+ if (szSignal)
+ connect(this, szSignal, pAction, SLOT(setEnabled(bool)));
+
+ return pAction;
+}
+
+#include "kscopeactions.moc"