diff --git a/pglab/QueryToolModule.cpp b/pglab/QueryToolModule.cpp index 0cf0c4a..418b59e 100644 --- a/pglab/QueryToolModule.cpp +++ b/pglab/QueryToolModule.cpp @@ -13,6 +13,7 @@ void QueryToolModule::init() MenuAction ma("New SQL", [this] (IPluginContentWidgetContext* context) { menuAction_new(context); }); ma.setMenuLocation(MenuPath("File/New")); + ma.setToolbarLocation(ToolbarLocation("main", "new")); ma.setIcon(QIcon(":/icons/new_query_tab.png")); ma.setShortcut(QKeySequence(Qt::CTRL + Qt::Key_N)); registerMenuAction(ma); @@ -21,12 +22,14 @@ void QueryToolModule::init() MenuAction ma("Open SQL", [this] (IPluginContentWidgetContext* context) { menuAction_open(context); }); ma.setMenuLocation(MenuPath("File/Open")); + ma.setToolbarLocation(ToolbarLocation("main", "open")); ma.setIcon(QIcon(":/icons/folder.png")); registerMenuAction(ma); } { LWidgetAction wa("Save SQL", SLOT(save())); wa.setMenuLocation("File/Save"); + wa.setToolbarLocation(ToolbarLocation("main", "save")); wa.setIcon(":/icons/script_save.png"); wa.setShortcut(QKeySequence(Qt::CTRL + Qt::Key_S)); registerWidgetAction(wa); @@ -34,24 +37,28 @@ void QueryToolModule::init() { LWidgetAction wa("Save SQL as", SLOT(saveAs())); wa.setMenuLocation("File/Save"); + wa.setToolbarLocation(ToolbarLocation("main", "save")); wa.setIcon(":/icons/script_save.png"); registerWidgetAction(wa); } { LWidgetAction wa("Save copy of SQL as", SLOT(saveCopyAs())); wa.setMenuLocation("File/Save"); + wa.setToolbarLocation(ToolbarLocation("main", "save")); //wa.setIcon(":/icons/script_save.png"); registerWidgetAction(wa); } { LWidgetAction wa("&Export data", SLOT(exportData())); wa.setMenuLocation("File/Export"); + wa.setToolbarLocation(ToolbarLocation("main", "save")); wa.setIcon(":/icons/table_save.png"); registerWidgetAction(wa); } { LWidgetAction wa("Copy as C string", SLOT(copyQueryAsCString())); wa.setMenuLocation("Edit/Copy"); + wa.setToolbarLocation(ToolbarLocation("edit", "copy")); wa.setIcon(":/icons/token_shortland_character.png"); registerWidgetAction(wa); } diff --git a/pglab/plugin_support/LMainWindow.cpp b/pglab/plugin_support/LMainWindow.cpp index f782878..fc4db07 100644 --- a/pglab/plugin_support/LMainWindow.cpp +++ b/pglab/plugin_support/LMainWindow.cpp @@ -50,6 +50,7 @@ namespace LMainWindow_details { using namespace LMainWindow_details; + LMainWindow::LMainWindow(QWidget *parent) : QMainWindow(parent) { @@ -73,7 +74,7 @@ LMainWindow::LMainWindow(QWidget *parent) auto statusBar = new QStatusBar(this); setStatusBar(statusBar); - m_fileMenu = new QMenu("File", this); + m_fileMenu = new QMenu(tr("File"), this); createActions(); m_mainToolBar->addAction(m_closeAction); diff --git a/pglab/plugin_support/LWidgetAction.cpp b/pglab/plugin_support/LWidgetAction.cpp index 6196143..da387a8 100644 --- a/pglab/plugin_support/LWidgetAction.cpp +++ b/pglab/plugin_support/LWidgetAction.cpp @@ -25,6 +25,11 @@ void LWidgetAction::setMenuLocation(MenuLocation menu_location) m_menuLocation = std::move(menu_location); } +void LWidgetAction::setToolbarLocation(ToolbarLocation toolbar_location) +{ + m_toolbarLocation = toolbar_location; +} + void LWidgetAction::setShortcut(QKeySequence shortcut) { m_shortCut = std::move(shortcut); diff --git a/pglab/plugin_support/LWidgetAction.h b/pglab/plugin_support/LWidgetAction.h index 3169061..285c25d 100644 --- a/pglab/plugin_support/LWidgetAction.h +++ b/pglab/plugin_support/LWidgetAction.h @@ -2,6 +2,7 @@ #define LWIDGETACTION_H #include "MenuLocation.h" +#include "ToolbarLocation.h" #include #include #include @@ -23,6 +24,7 @@ public: void setIcon(const char * icon) { setIcon(QIcon(icon)); } void setMenuLocation(MenuLocation menu_location); void setMenuLocation(const char * menu_location) { setMenuLocation(MenuPath(menu_location)); } + void setToolbarLocation(ToolbarLocation toolbar_location); void setShortcut(QKeySequence shortcut); void setText(QString text); void setToolTip(QString tooltip); @@ -37,6 +39,7 @@ private: QIcon m_icon; QKeySequence m_shortCut; MenuLocation m_menuLocation; + ToolbarLocation m_toolbarLocation; const char * m_slotname; }; diff --git a/pglab/plugin_support/MenuAction.cpp b/pglab/plugin_support/MenuAction.cpp index 205b898..bfe4a9b 100644 --- a/pglab/plugin_support/MenuAction.cpp +++ b/pglab/plugin_support/MenuAction.cpp @@ -25,6 +25,11 @@ void MenuAction::setMenuLocation(MenuLocation menu_location) m_menuLocation = std::move(menu_location); } +void MenuAction::setToolbarLocation(ToolbarLocation toolbar_location) +{ + m_toolbarLocation = toolbar_location; +} + void MenuAction::setShortcut(QKeySequence shortcut) { m_shortcut = std::move(shortcut); diff --git a/pglab/plugin_support/MenuAction.h b/pglab/plugin_support/MenuAction.h index d987660..1601efa 100644 --- a/pglab/plugin_support/MenuAction.h +++ b/pglab/plugin_support/MenuAction.h @@ -27,6 +27,7 @@ public: const MenuLocation& menuLocation() const; void setIcon(QIcon icon); void setMenuLocation(MenuLocation menu_location); + void setToolbarLocation(ToolbarLocation toolbar_location); void setShortcut(QKeySequence shortcut); void setText(QString text); void setToolTip(QString tooltip); @@ -41,6 +42,7 @@ private: QIcon m_icon; QKeySequence m_shortcut; MenuLocation m_menuLocation; + ToolbarLocation m_toolbarLocation; Func m_func; }; diff --git a/pglab/plugin_support/MenuPath.h b/pglab/plugin_support/MenuPath.h index 98f0b96..6137e59 100644 --- a/pglab/plugin_support/MenuPath.h +++ b/pglab/plugin_support/MenuPath.h @@ -12,9 +12,6 @@ public: private: QString m_menuPath; - /// Contains the elements of the path, in general - /// more then 3 levels is a bad idea but small_vector can grow when required. -// boost::container::small_vector m_menuItemSeperators; }; diff --git a/pglab/plugin_support/PluginModule.h b/pglab/plugin_support/PluginModule.h index 9927b34..223599d 100644 --- a/pglab/plugin_support/PluginModule.h +++ b/pglab/plugin_support/PluginModule.h @@ -35,6 +35,8 @@ public: void registerMenuAction(MenuAction action); const MenuActionList& menuActions() const; + /// "API" action that other modules can trigger by name without being linked to + /// this module. Allows for loose coupling. void registerModuleAction(QString module_action, ModuleAction action); /// Searches for and returns a pointer to the requested module action.