Ref T30, integrated font menu into view base

This commit is contained in:
Klaus Basan
2017-07-05 02:40:52 +02:00
committed by Mathew Sutcliffe
parent 3c9435c1cf
commit 534ba5f9ec
2 changed files with 26 additions and 13 deletions

View File

@@ -17,6 +17,7 @@
#include "blackgui/models/allmodels.h" #include "blackgui/models/allmodels.h"
#include "blackgui/menus/menuaction.h" #include "blackgui/menus/menuaction.h"
#include "blackgui/menus/menudelegate.h" #include "blackgui/menus/menudelegate.h"
#include "blackgui/menus/fontmenus.h"
#include "blackgui/shortcut.h" #include "blackgui/shortcut.h"
#include "blackgui/views/viewbase.h" #include "blackgui/views/viewbase.h"
#include "blackgui/views/viewbaseproxystyle.h" #include "blackgui/views/viewbaseproxystyle.h"
@@ -126,6 +127,9 @@ namespace BlackGui
deleteRow->setObjectName("Delete selected rows for " + this->objectName()); deleteRow->setObjectName("Delete selected rows for " + this->objectName());
QShortcut *copy = new QShortcut(CShortcut::keyCopy(), this, SLOT(ps_copy()), nullptr, Qt::WidgetShortcut); QShortcut *copy = new QShortcut(CShortcut::keyCopy(), this, SLOT(ps_copy()), nullptr, Qt::WidgetShortcut);
copy->setObjectName("Copy rows for " + this->objectName()); copy->setObjectName("Copy rows for " + this->objectName());
// Font menus
m_fontMenu = new CFontMenu(this, true);
} }
bool CViewBaseNonTemplate::setParentDockWidgetInfoArea(CDockWidgetInfoArea *parentDockableWidget) bool CViewBaseNonTemplate::setParentDockWidgetInfoArea(CDockWidgetInfoArea *parentDockableWidget)
@@ -165,7 +169,7 @@ namespace BlackGui
this->setFilterWidgetImpl(filterDialog); this->setFilterWidgetImpl(filterDialog);
if (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_ASSERT_X(s, Q_FUNC_INFO, "filter dialog connect");
Q_UNUSED(s); Q_UNUSED(s);
} }
@@ -226,7 +230,7 @@ namespace BlackGui
{ {
// new menu with nesting // new menu with nesting
menu->setNestedDelegate(this->m_menu); menu->setNestedDelegate(this->m_menu);
m_menu = menu; m_menu = menu;
} }
else if (!menu && nestPreviousMenu) 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(MenuCopy)) { menuActions.addActions(this->initMenuActions(MenuCopy)); }
if (this->m_menus.testFlag(MenuCut)) { menuActions.addActions(this->initMenuActions(MenuCut)); } 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(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) if (this->m_menus.testFlag(MenuFilter) && m_filterWidget)
{ {

View File

@@ -57,7 +57,12 @@ namespace BlackGui
class CDockWidgetInfoArea; class CDockWidgetInfoArea;
class CLoadIndicator; class CLoadIndicator;
namespace Menus { class IMenuDelegate; } namespace Menus
{
class IMenuDelegate;
class CFontMenu;
}
namespace Filters namespace Filters
{ {
class CFilterDialog; class CFilterDialog;
@@ -116,16 +121,15 @@ namespace BlackGui
MenuCopy = 1 << 11, //!< copy (for copy/paste) MenuCopy = 1 << 11, //!< copy (for copy/paste)
MenuPaste = 1 << 12, //!< paste (for copy/paste) MenuPaste = 1 << 12, //!< paste (for copy/paste)
MenuCut = 1 << 13, //!< cut (for copy/paste) MenuCut = 1 << 13, //!< cut (for copy/paste)
MenuStandard = MenuClear | MenuRemoveSelectedRows | MenuRefresh | MenuBackend | MenuFont = 1 << 14, //!< font related menu (size)
MenuDisplayAutomatically | MenuFilter | MenuSave | MenuLoad | MenuToggleSelectionMode,
MenuLoadAndSave = MenuLoad | MenuSave, MenuLoadAndSave = MenuLoad | MenuSave,
MenuDefault = MenuClear | MenuDisplayAutomaticallyAndRefresh | MenuToggleSelectionMode, MenuDefault = MenuToggleSelectionMode | MenuDisplayAutomaticallyAndRefresh | MenuFont | MenuClear,
MenuDefaultNoClear = MenuDisplayAutomaticallyAndRefresh | MenuToggleSelectionMode, MenuDefaultNoClear = MenuToggleSelectionMode | MenuDisplayAutomaticallyAndRefresh | MenuFont,
MenuDefaultDbViews = MenuToggleSelectionMode | MenuBackend, MenuDefaultDbViews = MenuToggleSelectionMode | MenuBackend | MenuFont,
// special menus, should be in derived classes, but enums cannot be inherited // special menus, should be in derived classes, but enums cannot be inherited
// maybe shifted in the future to elsewhere // maybe shifted in the future to elsewhere
MenuHighlightStashed = 1 << 14, //!< highlight stashed models MenuHighlightStashed = 1 << 15, //!< highlight stashed models
MenuCanStashModels = 1 << 15, //!< stash models MenuCanStashModels = 1 << 16, //!< stash models
MenuStashing = MenuHighlightStashed | MenuCanStashModels, MenuStashing = MenuHighlightStashed | MenuCanStashModels,
}; };
Q_DECLARE_FLAGS(Menu, MenuFlag) Q_DECLARE_FLAGS(Menu, MenuFlag)
@@ -421,8 +425,9 @@ namespace BlackGui
bool m_enableDeleteSelectedRows = false; //!< selected rows can be deleted bool m_enableDeleteSelectedRows = false; //!< selected rows can be deleted
bool m_dropIndicator = false; //!< draw indicator bool m_dropIndicator = false; //!< draw indicator
QWidget *m_filterWidget = nullptr; //!< filter widget or dialog 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::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 BlackGui::CLoadIndicator *m_loadIndicator = nullptr; //!< load indicator if needed
QMap<MenuFlag, BlackGui::Menus::CMenuActions> m_menuFlagActions; //!< initialized actions QMap<MenuFlag, BlackGui::Menus::CMenuActions> m_menuFlagActions; //!< initialized actions
BlackMisc::CSettingReadOnly<BlackGui::Settings::TGeneralGui> m_guiSettings { this, &CViewBaseNonTemplate::settingsChanged }; //!< general GUI settings BlackMisc::CSettingReadOnly<BlackGui::Settings::TGeneralGui> m_guiSettings { this, &CViewBaseNonTemplate::settingsChanged }; //!< general GUI settings
@@ -527,8 +532,8 @@ namespace BlackGui
public CViewBaseNonTemplate, public CViewBaseNonTemplate,
public BlackGui::Models::ISelectionModel<ContainerType> public BlackGui::Models::ISelectionModel<ContainerType>
{ {
// I cannot use Q_OBJECT here, because of error: Template classes not supported by Q_OBJECT // I cannot use Q_OBJECT here, because: Template classes are not supported by Q_OBJECT
// Cannot declare slots as SLOT because I have no Q_OBJECT macro // and I cannot declare slots as SLOT because I have no Q_OBJECT macro
public: public:
//! Destructor //! Destructor