From 534ba5f9ec1d0a54b6f8d3316a85893ac312b378 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Wed, 5 Jul 2017 02:40:52 +0200 Subject: [PATCH] Ref T30, integrated font menu into view base --- src/blackgui/views/viewbase.cpp | 12 ++++++++++-- src/blackgui/views/viewbase.h | 27 ++++++++++++++++----------- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/src/blackgui/views/viewbase.cpp b/src/blackgui/views/viewbase.cpp index 6417fa633..b40527efe 100644 --- a/src/blackgui/views/viewbase.cpp +++ b/src/blackgui/views/viewbase.cpp @@ -17,6 +17,7 @@ #include "blackgui/models/allmodels.h" #include "blackgui/menus/menuaction.h" #include "blackgui/menus/menudelegate.h" +#include "blackgui/menus/fontmenus.h" #include "blackgui/shortcut.h" #include "blackgui/views/viewbase.h" #include "blackgui/views/viewbaseproxystyle.h" @@ -126,6 +127,9 @@ namespace BlackGui deleteRow->setObjectName("Delete selected rows for " + this->objectName()); QShortcut *copy = new QShortcut(CShortcut::keyCopy(), this, SLOT(ps_copy()), nullptr, Qt::WidgetShortcut); copy->setObjectName("Copy rows for " + this->objectName()); + + // Font menus + m_fontMenu = new CFontMenu(this, true); } bool CViewBaseNonTemplate::setParentDockWidgetInfoArea(CDockWidgetInfoArea *parentDockableWidget) @@ -165,7 +169,7 @@ namespace BlackGui this->setFilterWidgetImpl(filterDialog); if (filterDialog) { - bool s = connect(filterDialog, &CFilterDialog::finished, this, &CViewBaseNonTemplate::ps_filterDialogFinished); + const bool s = connect(filterDialog, &CFilterDialog::finished, this, &CViewBaseNonTemplate::ps_filterDialogFinished); Q_ASSERT_X(s, Q_FUNC_INFO, "filter dialog connect"); Q_UNUSED(s); } @@ -226,7 +230,7 @@ namespace BlackGui { // new menu with nesting menu->setNestedDelegate(this->m_menu); - m_menu = menu; + m_menu = menu; } else if (!menu && nestPreviousMenu) { @@ -352,6 +356,10 @@ namespace BlackGui if (this->m_menus.testFlag(MenuCopy)) { menuActions.addActions(this->initMenuActions(MenuCopy)); } if (this->m_menus.testFlag(MenuCut)) { menuActions.addActions(this->initMenuActions(MenuCut)); } if (this->m_menus.testFlag(MenuPaste)) { menuActions.addActions(this->initMenuActions(MenuPaste)); } + if (this->m_menus.testFlag(MenuFont)) + { + menuActions.addActions(m_fontMenu->getActions(), CMenuAction::pathFont()); + } if (this->m_menus.testFlag(MenuFilter) && m_filterWidget) { diff --git a/src/blackgui/views/viewbase.h b/src/blackgui/views/viewbase.h index 456bf4bef..89da46208 100644 --- a/src/blackgui/views/viewbase.h +++ b/src/blackgui/views/viewbase.h @@ -57,7 +57,12 @@ namespace BlackGui class CDockWidgetInfoArea; class CLoadIndicator; - namespace Menus { class IMenuDelegate; } + namespace Menus + { + class IMenuDelegate; + class CFontMenu; + } + namespace Filters { class CFilterDialog; @@ -116,16 +121,15 @@ namespace BlackGui MenuCopy = 1 << 11, //!< copy (for copy/paste) MenuPaste = 1 << 12, //!< paste (for copy/paste) MenuCut = 1 << 13, //!< cut (for copy/paste) - MenuStandard = MenuClear | MenuRemoveSelectedRows | MenuRefresh | MenuBackend | - MenuDisplayAutomatically | MenuFilter | MenuSave | MenuLoad | MenuToggleSelectionMode, + MenuFont = 1 << 14, //!< font related menu (size) MenuLoadAndSave = MenuLoad | MenuSave, - MenuDefault = MenuClear | MenuDisplayAutomaticallyAndRefresh | MenuToggleSelectionMode, - MenuDefaultNoClear = MenuDisplayAutomaticallyAndRefresh | MenuToggleSelectionMode, - MenuDefaultDbViews = MenuToggleSelectionMode | MenuBackend, + MenuDefault = MenuToggleSelectionMode | MenuDisplayAutomaticallyAndRefresh | MenuFont | MenuClear, + MenuDefaultNoClear = MenuToggleSelectionMode | MenuDisplayAutomaticallyAndRefresh | MenuFont, + MenuDefaultDbViews = MenuToggleSelectionMode | MenuBackend | MenuFont, // special menus, should be in derived classes, but enums cannot be inherited // maybe shifted in the future to elsewhere - MenuHighlightStashed = 1 << 14, //!< highlight stashed models - MenuCanStashModels = 1 << 15, //!< stash models + MenuHighlightStashed = 1 << 15, //!< highlight stashed models + MenuCanStashModels = 1 << 16, //!< stash models MenuStashing = MenuHighlightStashed | MenuCanStashModels, }; Q_DECLARE_FLAGS(Menu, MenuFlag) @@ -421,8 +425,9 @@ namespace BlackGui bool m_enableDeleteSelectedRows = false; //!< selected rows can be deleted bool m_dropIndicator = false; //!< draw indicator QWidget *m_filterWidget = nullptr; //!< filter widget or dialog - Menu m_menus = MenuDefault; //!< Default menu settings + Menu m_menus = MenuDefault; //!< Default menu settings BlackGui::Menus::IMenuDelegate *m_menu = nullptr; //!< custom menu if any + BlackGui::Menus::CFontMenu *m_fontMenu = nullptr; //!< font menu if applicable BlackGui::CLoadIndicator *m_loadIndicator = nullptr; //!< load indicator if needed QMap m_menuFlagActions; //!< initialized actions BlackMisc::CSettingReadOnly m_guiSettings { this, &CViewBaseNonTemplate::settingsChanged }; //!< general GUI settings @@ -527,8 +532,8 @@ namespace BlackGui public CViewBaseNonTemplate, public BlackGui::Models::ISelectionModel { - // I cannot use Q_OBJECT here, because of error: Template classes not supported by Q_OBJECT - // Cannot declare slots as SLOT because I have no Q_OBJECT macro + // I cannot use Q_OBJECT here, because: Template classes are not supported by Q_OBJECT + // and I cannot declare slots as SLOT because I have no Q_OBJECT macro public: //! Destructor