From 7354a9d4b186e5c8a1e7080e034490997529ed34 Mon Sep 17 00:00:00 2001 From: justburner Date: Mon, 22 Aug 2022 04:02:43 +0100 Subject: [PATCH] Added: menu to hide toolbar buttons, Name Editor button and missing icons --- toonz/sources/include/toonzqt/paletteviewer.h | 34 ++++- .../toonz/icons/dark/actions/16/new_page.svg | 11 ++ .../toonz/icons/dark/actions/16/new_style.svg | 9 ++ toonz/sources/toonz/toonz.qrc | 2 + toonz/sources/toonzqt/paletteviewer.cpp | 132 +++++++++++++++++- toonz/sources/toonzqt/paletteviewergui.cpp | 7 +- 6 files changed, 187 insertions(+), 8 deletions(-) create mode 100644 toonz/sources/toonz/icons/dark/actions/16/new_page.svg create mode 100644 toonz/sources/toonz/icons/dark/actions/16/new_style.svg diff --git a/toonz/sources/include/toonzqt/paletteviewer.h b/toonz/sources/include/toonzqt/paletteviewer.h index 6ce1e657..1ae899ff 100644 --- a/toonz/sources/include/toonzqt/paletteviewer.h +++ b/toonz/sources/include/toonzqt/paletteviewer.h @@ -4,6 +4,7 @@ #define PALETTEVIEWER_H #include "paletteviewergui.h" +#include "saveloadqsettings.h" #include "toonz/tpalettehandle.h" #include "toonz/tapplication.h" @@ -41,7 +42,7 @@ class TXsheetHandle; // PaletteViewer //----------------------------------------------------------------------------- -class DVAPI PaletteViewer final : public QFrame { +class DVAPI PaletteViewer final : public QFrame, public SaveLoadQSettings { Q_OBJECT public: @@ -50,7 +51,16 @@ public: bool hasPasteColors = true); ~PaletteViewer(); - const TPaletteHandle *getPaletteHandle() const { return m_paletteHandle; } + enum ToolbarButtons : int //! Toolbar buttons to display + { + TBVisKeyframe, + TBVisNewStylePage, + TBVisPaletteGizmo, + TBVisNameEditor, + TBVisTotal + }; + + TPaletteHandle *getPaletteHandle() const { return m_paletteHandle; } void setPaletteHandle(TPaletteHandle *paletteHandle); const TFrameHandle *getFrameHandle() const { return m_frameHandle; } @@ -86,6 +96,10 @@ public: int geCurrentPageIndex() { return m_currentIndexPage; } + // SaveLoadQSettings + virtual void save(QSettings &settings) const override; + virtual void load(QSettings &settings) override; + protected: TPaletteHandle *m_paletteHandle; TFrameHandle *m_frameHandle; @@ -123,6 +137,16 @@ protected: TApplication *m_app; + StyleNameEditor *m_styleNameEditor; + QAction *m_sharedGizmoAction; + + int m_toolbarVisibleOtherParts; + QMultiMap m_toolbarParts; + QAction *m_visibleKeysAction; +// QAction *m_visibleNewAction; + QAction *m_visibleGizmoAction; + QAction *m_visibleNameAction; + protected: void createTabBar(); @@ -157,6 +181,8 @@ protected: void clearStyleSelection(); + void applyToolbarPartVisibility(int part, bool visible); + protected slots: void setPageView(int currentIndexPage); @@ -186,6 +212,10 @@ protected slots: void onSwitchToPage(int pageIndex); void onShowNewStyleButtonToggled(); + void toggleKeyframeVisibility(bool); +// void toggleNewStylePageVisibility(bool); + void togglePaletteGizmoVisibility(bool); + void toggleNameEditorVisibility(bool); signals: void frozenChanged(bool frozen); diff --git a/toonz/sources/toonz/icons/dark/actions/16/new_page.svg b/toonz/sources/toonz/icons/dark/actions/16/new_page.svg new file mode 100644 index 00000000..b7eb70e3 --- /dev/null +++ b/toonz/sources/toonz/icons/dark/actions/16/new_page.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/toonz/sources/toonz/icons/dark/actions/16/new_style.svg b/toonz/sources/toonz/icons/dark/actions/16/new_style.svg new file mode 100644 index 00000000..f2c48955 --- /dev/null +++ b/toonz/sources/toonz/icons/dark/actions/16/new_style.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/toonz/sources/toonz/toonz.qrc b/toonz/sources/toonz/toonz.qrc index 6b4306ed..e115e45e 100644 --- a/toonz/sources/toonz/toonz.qrc +++ b/toonz/sources/toonz/toonz.qrc @@ -474,6 +474,8 @@ icons/dark/actions/16/palette_tab.svg icons/dark/actions/20/dragpalette.svg icons/dark/actions/16/palettegizmo.svg + icons/dark/actions/16/new_style.svg + icons/dark/actions/16/new_page.svg icons/dark/actions/20/pane_table.svg diff --git a/toonz/sources/toonzqt/paletteviewer.cpp b/toonz/sources/toonzqt/paletteviewer.cpp index d87f49a1..1a0497bc 100644 --- a/toonz/sources/toonzqt/paletteviewer.cpp +++ b/toonz/sources/toonzqt/paletteviewer.cpp @@ -10,6 +10,7 @@ #include "toonzqt/dvscrollwidget.h" #include "toonzqt/studiopaletteviewer.h" #include "toonzqt/styleselection.h" +#include "toonzqt/stylenameeditor.h" #include "palettedata.h" // TnzLib includes @@ -106,6 +107,7 @@ PaletteViewer::PaletteViewer(QWidget *parent, PaletteViewType viewType, , m_frozen(false) , m_freezePaletteToolButton(0) , m_lockPaletteToolButton(0) + , m_styleNameEditor(nullptr) , m_app(0) { setObjectName("OnePixelMarginFrame"); setFrameStyle(QFrame::StyledPanel); @@ -308,6 +310,38 @@ void PaletteViewer::updateView() { //----------------------------------------------------------------------------- +void PaletteViewer::save(QSettings &settings) const { + int visibleParts = m_toolbarVisibleOtherParts; + if (m_visibleKeysAction->isChecked()) visibleParts |= 0x01; +// if (m_visibleNewAction->isChecked()) visibleParts |= 0x02; + if (m_visibleGizmoAction->isChecked()) visibleParts |= 0x04; + if (m_visibleNameAction->isChecked()) visibleParts |= 0x08; + settings.setValue("toolbarVisibleMsk", visibleParts); + } + + void PaletteViewer::load(QSettings &settings) { + int visibleParts; + QVariant visibleVar = settings.value("toolbarVisibleMsk"); + if (visibleVar.canConvert(QVariant::Int)) { + visibleParts = visibleVar.toInt(); + } else { + visibleParts = 3; // Show keyframes and new style/page + } + + m_visibleKeysAction->setChecked(visibleParts & 0x01); +// m_visibleNewAction->setChecked(visibleParts & 0x02); + m_visibleGizmoAction->setChecked(visibleParts & 0x04); + m_visibleNameAction->setChecked(visibleParts & 0x08); + m_toolbarVisibleOtherParts = visibleParts & ~0x0F; // Reserve + + applyToolbarPartVisibility(TBVisKeyframe, visibleParts & 0x01); +// applyToolbarPartVisibility(TBVisNewStylePage, visibleParts & 0x02); + applyToolbarPartVisibility(TBVisPaletteGizmo, visibleParts & 0x04); + applyToolbarPartVisibility(TBVisNameEditor, visibleParts & 0x08); + } + +//----------------------------------------------------------------------------- + void PaletteViewer::enableSaveAction(bool enable) { if (!m_savePaletteToolBar) return; QList actions; @@ -327,6 +361,33 @@ void PaletteViewer::enableSaveAction(bool enable) { } } +//----------------------------------------------------------------------------- + +void PaletteViewer::applyToolbarPartVisibility(int part, bool visible) { + assert(m_toolbarParts.contains(part)); + for (QAction *action : m_toolbarParts.values(part)) { + action->setVisible(visible); + } +} + +//----------------------------------------------------------------------------- + +void PaletteViewer::toggleKeyframeVisibility(bool checked) { + applyToolbarPartVisibility(TBVisKeyframe, checked); +} + +//void PaletteViewer::toggleNewStylePageVisibility(bool checked) { +// applyToolbarPartVisibility(TBVisNewStylePage, checked); +//} + +void PaletteViewer::togglePaletteGizmoVisibility(bool checked) { + applyToolbarPartVisibility(TBVisPaletteGizmo, checked); +} + +void PaletteViewer::toggleNameEditorVisibility(bool checked) { + applyToolbarPartVisibility(TBVisNameEditor, checked); +} + //----------------------------------------------------------------------------- /*! Create tab bar to select palette page. */ @@ -350,6 +411,9 @@ void PaletteViewer::createPaletteToolBar() { m_paletteToolBar->setIconSize(QSize(20, 20)); m_paletteToolBar->setLayoutDirection(Qt::LeftToRight); + m_toolbarParts.clear(); + + // m_toolbarParts.insert(TBVisNewStylePage, addPage); // QIcon newColorIcon = createQIcon("newstyle"); // QAction* addColor = // new QAction(newColorIcon, tr("&New Style"), m_paletteToolBar); @@ -358,12 +422,14 @@ void PaletteViewer::createPaletteToolBar() { // m_paletteToolBar->addAction(addColor); // m_paletteToolBar->addSeparator(); + // m_toolbarParts.insert(TBVisNewStylePage, addColor); + // m_toolbarParts.insert(TBVisNewStylePage, m_paletteToolBar->addSeparator()); // KeyFrame button if (m_viewType != CLEANUP_PALETTE) { m_keyFrameButton = new PaletteKeyframeNavigator(m_paletteToolBar); - m_paletteToolBar->addWidget(m_keyFrameButton); - m_paletteToolBar->addSeparator(); + m_toolbarParts.insert(TBVisKeyframe, m_paletteToolBar->addWidget(m_keyFrameButton)); + m_toolbarParts.insert(TBVisKeyframe, m_paletteToolBar->addSeparator()); m_keyFrameButton->setSelection(m_pageViewer->getSelection()); } @@ -395,8 +461,15 @@ void PaletteViewer::createPaletteToolBar() { m_paletteToolBar->addSeparator(); CommandManager *cmd = CommandManager::instance(); - QAction *gizmo = cmd->getAction("MI_OpenPltGizmo"); - m_paletteToolBar->addAction(gizmo); + m_sharedGizmoAction = cmd->getAction("MI_OpenPltGizmo"); + + // Clone palette gizmo action so visibility can be control + QAction *palGizmo = new DVAction(m_sharedGizmoAction->icon(), + m_sharedGizmoAction->text(), this); + connect(palGizmo, &QAction::triggered, + [&]() { m_sharedGizmoAction->trigger(); }); + m_paletteToolBar->addAction(palGizmo); + m_toolbarParts.insert(TBVisPaletteGizmo, palGizmo); } else if (m_viewType == STUDIO_PALETTE) { QToolButton *toolButton = new QToolButton(this); toolButton->setPopupMode(QToolButton::InstantPopup); @@ -420,8 +493,23 @@ void PaletteViewer::createPaletteToolBar() { SLOT(setChecked(bool))); m_paletteToolBar->addWidget(toolButton); + m_paletteToolBar->addSeparator(); } + QAction *openStyleNameEditorAct = new QAction(tr("Name Editor")); + openStyleNameEditorAct->setIcon(createQIcon("rename", false, true)); + connect(openStyleNameEditorAct, &QAction::triggered, [&]() { + if (!m_styleNameEditor) { + m_styleNameEditor = new StyleNameEditor(this); + m_styleNameEditor->setPaletteHandle(getPaletteHandle()); + } + m_styleNameEditor->show(); + m_styleNameEditor->raise(); + m_styleNameEditor->activateWindow(); + }); + m_paletteToolBar->addAction(openStyleNameEditorAct); + m_toolbarParts.insert(TBVisNameEditor, openStyleNameEditorAct); + updatePaletteToolBar(); } @@ -510,6 +598,42 @@ void PaletteViewer::createSavePaletteToolBar() { }); m_viewMode->addAction(m_showStyleIndex); + m_viewMode->addSeparator(); + + // Add ability to show or hide buttons + QMenu *visibleButtons = new QMenu(tr("Visible Toolbar Buttons")); + + m_visibleKeysAction = new QAction(tr("KeyFrame")); + m_visibleKeysAction->setCheckable(true); + m_visibleKeysAction->setChecked(true); + visibleButtons->addAction(m_visibleKeysAction); +// m_visibleNewAction = new QAction(tr("New Style/Page")); +// m_visibleNewAction->setCheckable(true); +// m_visibleNewAction->setChecked(true); +// visibleButtons->addAction(m_visibleNewAction); + m_visibleGizmoAction = new QAction(tr("Palette Gizmo")); + m_visibleGizmoAction->setCheckable(true); + m_visibleGizmoAction->setChecked(true); + visibleButtons->addAction(m_visibleGizmoAction); + m_visibleNameAction = new QAction(tr("Name Editor")); + m_visibleNameAction->setCheckable(true); + m_visibleNameAction->setChecked(true); + visibleButtons->addAction(m_visibleNameAction); + m_viewMode->addMenu(visibleButtons); + + if (m_viewType == CLEANUP_PALETTE) m_visibleKeysAction->setVisible(false); + + if (m_viewType != LEVEL_PALETTE) m_visibleGizmoAction->setVisible(false); + + connect(m_visibleKeysAction, SIGNAL(toggled(bool)), this, + SLOT(toggleKeyframeVisibility(bool))); +// connect(m_visibleNewAction, SIGNAL(toggled(bool)), this, +// SLOT(toggleNewStylePageVisibility(bool))); + connect(m_visibleGizmoAction, SIGNAL(toggled(bool)), this, + SLOT(togglePaletteGizmoVisibility(bool))); + connect(m_visibleNameAction, SIGNAL(toggled(bool)), this, + SLOT(toggleNameEditorVisibility(bool))); + if (m_viewType == STUDIO_PALETTE) { QIcon savePaletteIcon = createQIcon("save"); QAction *savePalette = diff --git a/toonz/sources/toonzqt/paletteviewergui.cpp b/toonz/sources/toonzqt/paletteviewergui.cpp index c8638847..249b495e 100644 --- a/toonz/sources/toonzqt/paletteviewergui.cpp +++ b/toonz/sources/toonzqt/paletteviewergui.cpp @@ -1185,6 +1185,7 @@ void PageViewer::contextMenuEvent(QContextMenuEvent *event) { QAction *openStyleControlAct = cmd->getAction("MI_OpenStyleControl"); menu.addAction(openStyleControlAct); QAction *openStyleNameEditorAct = menu.addAction(tr("Name Editor")); + openStyleNameEditorAct->setIcon(createQIcon("rename", false, true)); connect(openStyleNameEditorAct, &QAction::triggered, [&]() { if (!m_styleNameEditor) { m_styleNameEditor = new StyleNameEditor(this); @@ -1238,9 +1239,11 @@ void PageViewer::contextMenuEvent(QContextMenuEvent *event) { if (m_page) { menu.addSeparator(); - QAction *newStyle = menu.addAction(tr("New Style")); + QIcon newStyleIco = createQIcon("new_style", false, true); + QAction *newStyle = menu.addAction(newStyleIco, tr("New Style")); connect(newStyle, SIGNAL(triggered()), SLOT(addNewColor())); - QAction *newPage = menu.addAction(tr("New Page")); + QIcon newPageIco = createQIcon("new_page", false, true); + QAction *newPage = menu.addAction(newPageIco, tr("New Page")); connect(newPage, SIGNAL(triggered()), SLOT(addNewPage())); }