diff --git a/stuff/config/qss/Astral_048_VeryDark/Astral_048_VeryDark.qss b/stuff/config/qss/Astral_048_VeryDark/Astral_048_VeryDark.qss
index 943c3d3..1413593 100644
--- a/stuff/config/qss/Astral_048_VeryDark/Astral_048_VeryDark.qss
+++ b/stuff/config/qss/Astral_048_VeryDark/Astral_048_VeryDark.qss
@@ -1488,7 +1488,8 @@ FxSettings QToolBar QToolBar {
/* -----------------------------------------------------------------------------
Tool Options
----------------------------------------------------------------------------- */
-#ToolOptions TPanelTitleBar {
+#ToolOptions TPanelTitleBar,
+#CommandBar TPanelTitleBar {
background-color: #303030;
background-image: url('../Astral_072_Dark/imgs/white/title_grip_vertical.svg');
background-repeat: no-repeat;
@@ -1551,6 +1552,15 @@ PopupButton::menu-indicator:disabled {
#XSheetToolbar #XSheetToolbarLevelButton {
padding: 2;
}
+#CommandBar {
+ margin: 0;
+ padding: 0;
+ border: 0;
+}
+#CommandBar::separator:horizontal {
+ margin-right: 3;
+ margin-left: 3;
+}
QToolBar#MediumPaddingToolBar QToolButton {
padding-left: 3;
padding-right: 3;
diff --git a/stuff/config/qss/Astral_072_Dark/Astral_072_Dark.qss b/stuff/config/qss/Astral_072_Dark/Astral_072_Dark.qss
index 994bef1..673aeec 100644
--- a/stuff/config/qss/Astral_072_Dark/Astral_072_Dark.qss
+++ b/stuff/config/qss/Astral_072_Dark/Astral_072_Dark.qss
@@ -1488,7 +1488,8 @@ FxSettings QToolBar QToolBar {
/* -----------------------------------------------------------------------------
Tool Options
----------------------------------------------------------------------------- */
-#ToolOptions TPanelTitleBar {
+#ToolOptions TPanelTitleBar,
+#CommandBar TPanelTitleBar {
background-color: #484848;
background-image: url('imgs/white/title_grip_vertical.svg');
background-repeat: no-repeat;
@@ -1551,6 +1552,15 @@ PopupButton::menu-indicator:disabled {
#XSheetToolbar #XSheetToolbarLevelButton {
padding: 2;
}
+#CommandBar {
+ margin: 0;
+ padding: 0;
+ border: 0;
+}
+#CommandBar::separator:horizontal {
+ margin-right: 3;
+ margin-left: 3;
+}
QToolBar#MediumPaddingToolBar QToolButton {
padding-left: 3;
padding-right: 3;
diff --git a/stuff/config/qss/Astral_072_Dark/less/layouts/toolbar.less b/stuff/config/qss/Astral_072_Dark/less/layouts/toolbar.less
index 8c90d2d..7cb7065 100644
--- a/stuff/config/qss/Astral_072_Dark/less/layouts/toolbar.less
+++ b/stuff/config/qss/Astral_072_Dark/less/layouts/toolbar.less
@@ -29,7 +29,7 @@
Tool Options
----------------------------------------------------------------------------- */
-#ToolOptions {
+#ToolOptions, #CommandBar {
& TPanelTitleBar {
// Use grip handles for title bar
background-color: @bg;
@@ -113,6 +113,16 @@ PopupButton {
}
}
+#CommandBar {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ &::separator:horizontal {
+ margin-right: 3;
+ margin-left: 3;
+ }
+}
+
QToolBar#MediumPaddingToolBar { //Schematic Toolbars
& QToolButton {
padding-left: 3;
diff --git a/stuff/config/qss/Astral_128_Neutral/Astral_128_Neutral.qss b/stuff/config/qss/Astral_128_Neutral/Astral_128_Neutral.qss
index 35a43e6..059b984 100644
--- a/stuff/config/qss/Astral_128_Neutral/Astral_128_Neutral.qss
+++ b/stuff/config/qss/Astral_128_Neutral/Astral_128_Neutral.qss
@@ -1488,7 +1488,8 @@ FxSettings QToolBar QToolBar {
/* -----------------------------------------------------------------------------
Tool Options
----------------------------------------------------------------------------- */
-#ToolOptions TPanelTitleBar {
+#ToolOptions TPanelTitleBar,
+#CommandBar TPanelTitleBar {
background-color: #808080;
background-image: url('../Astral_072_Dark/imgs/black/title_grip_vertical.svg');
background-repeat: no-repeat;
@@ -1551,6 +1552,15 @@ PopupButton::menu-indicator:disabled {
#XSheetToolbar #XSheetToolbarLevelButton {
padding: 2;
}
+#CommandBar {
+ margin: 0;
+ padding: 0;
+ border: 0;
+}
+#CommandBar::separator:horizontal {
+ margin-right: 3;
+ margin-left: 3;
+}
QToolBar#MediumPaddingToolBar QToolButton {
padding-left: 3;
padding-right: 3;
diff --git a/stuff/profiles/layouts/rooms/Default/menubar_template.xml b/stuff/profiles/layouts/rooms/Default/menubar_template.xml
index b9e1347..8867a81 100644
--- a/stuff/profiles/layouts/rooms/Default/menubar_template.xml
+++ b/stuff/profiles/layouts/rooms/Default/menubar_template.xml
@@ -226,6 +226,7 @@
MI_OpenTasks
MI_OpenTMessage
MI_OpenToolbar
+ MI_OpenCommandToolbar
MI_OpenToolOptionBar
MI_OpenLevelView
MI_OpenComboViewer
diff --git a/toonz/sources/toonz/CMakeLists.txt b/toonz/sources/toonz/CMakeLists.txt
index 8818d87..2d960c1 100644
--- a/toonz/sources/toonz/CMakeLists.txt
+++ b/toonz/sources/toonz/CMakeLists.txt
@@ -29,6 +29,7 @@ set(MOC_HEADERS
colormodelviewer.h
columncommand.h
columnselection.h
+ commandbar.h
convertpopup.h
curveio.h
drawingdata.h
@@ -163,6 +164,7 @@ set(HEADERS ${MOC_HEADERS})
set(SOURCES
floatingpanelcommand.cpp
canvassizepopup.cpp
+ commandbar.cpp
history.cpp
loadfoldercommand.cpp
loadfolderpopup.cpp
diff --git a/toonz/sources/toonz/commandbar.cpp b/toonz/sources/toonz/commandbar.cpp
new file mode 100644
index 0000000..ceea7fb
--- /dev/null
+++ b/toonz/sources/toonz/commandbar.cpp
@@ -0,0 +1,84 @@
+
+
+#include "commandbar.h"
+
+// Tnz6 includes
+#include "tapp.h"
+#include "menubarcommandids.h"
+// TnzQt includes
+#include "toonzqt/gutil.h"
+
+// TnzLib includes
+#include "toonz/preferences.h"
+#include "toonz/tscenehandle.h"
+#include "toonzqt/menubarcommand.h"
+
+// Qt includes
+#include
+
+
+//=============================================================================
+// Toolbar
+//-----------------------------------------------------------------------------
+
+#if QT_VERSION >= 0x050500
+CommandBar::CommandBar(QWidget *parent, Qt::WindowFlags flags,
+ bool isCollapsible)
+#else
+CommandBar::CommandBar(XsheetViewer *parent, Qt::WFlags flags)
+#endif
+ : QToolBar(parent), m_isCollapsible(isCollapsible) {
+ setObjectName("cornerWidget");
+ setObjectName("CommandBar");
+
+ TApp *app = TApp::instance();
+ m_keyFrameButton = new ViewerKeyframeNavigator(this, app->getCurrentFrame());
+ m_keyFrameButton->setObjectHandle(app->getCurrentObject());
+ m_keyFrameButton->setXsheetHandle(app->getCurrentXsheet());
+
+ QWidgetAction *keyFrameAction = new QWidgetAction(this);
+ keyFrameAction->setDefaultWidget(m_keyFrameButton);
+
+ {
+ QAction *newVectorLevel =
+ CommandManager::instance()->getAction("MI_NewVectorLevel");
+ addAction(newVectorLevel);
+ QAction *newToonzRasterLevel =
+ CommandManager::instance()->getAction("MI_NewToonzRasterLevel");
+ addAction(newToonzRasterLevel);
+ QAction *newRasterLevel =
+ CommandManager::instance()->getAction("MI_NewRasterLevel");
+ addAction(newRasterLevel);
+ addSeparator();
+ QAction *reframeOnes = CommandManager::instance()->getAction("MI_Reframe1");
+ addAction(reframeOnes);
+ QAction *reframeTwos = CommandManager::instance()->getAction("MI_Reframe2");
+ addAction(reframeTwos);
+ QAction *reframeThrees =
+ CommandManager::instance()->getAction("MI_Reframe3");
+ addAction(reframeThrees);
+
+ addSeparator();
+
+ QAction *repeat = CommandManager::instance()->getAction("MI_Dup");
+ addAction(repeat);
+
+ addSeparator();
+
+ QAction *collapse = CommandManager::instance()->getAction("MI_Collapse");
+ addAction(collapse);
+ QAction *open = CommandManager::instance()->getAction("MI_OpenChild");
+ addAction(open);
+ QAction *leave = CommandManager::instance()->getAction("MI_CloseChild");
+ addAction(leave);
+
+ addSeparator();
+ addAction(keyFrameAction);
+ }
+}
+
+
+
+
+
+
diff --git a/toonz/sources/toonz/commandbar.h b/toonz/sources/toonz/commandbar.h
new file mode 100644
index 0000000..12262d7
--- /dev/null
+++ b/toonz/sources/toonz/commandbar.h
@@ -0,0 +1,44 @@
+#pragma once
+
+#ifndef COMMANDBAR_H
+#define COMMANDBAR_H
+
+#include
+
+#include "toonz/txsheet.h"
+#include "toonz/txshleveltypes.h"
+#include "toonzqt/keyframenavigator.h"
+
+#include
+
+//-----------------------------------------------------------------------------
+
+// forward declaration
+class XsheetViewer;
+class QPushButton;
+
+//=============================================================================
+// XSheet Toolbar
+//-----------------------------------------------------------------------------
+
+class CommandBar final : public QToolBar {
+ Q_OBJECT
+
+ //XsheetViewer *m_viewer;
+ ViewerKeyframeNavigator *m_keyFrameButton;
+ bool m_isCollapsible;
+
+public:
+#if QT_VERSION >= 0x050500
+ CommandBar(QWidget *parent = 0, Qt::WindowFlags flags = 0,
+ bool isCollapsible = false);
+#else
+ CommandBar(XsheetViewer *parent = 0, Qt::WFlags flags = 0);
+#endif
+
+signals:
+ void updateVisibility();
+
+};
+
+#endif // COMMANDBAR_H
diff --git a/toonz/sources/toonz/mainwindow.cpp b/toonz/sources/toonz/mainwindow.cpp
index 65e0fb3..6d44d82 100644
--- a/toonz/sources/toonz/mainwindow.cpp
+++ b/toonz/sources/toonz/mainwindow.cpp
@@ -307,8 +307,9 @@ void Room::load(const TFilePath &fp) {
QVariant name = settings.value("name");
if (name.canConvert(QVariant::String)) {
// Allocate panel
- paneObjectName = name.toString();
- pane = TPanelFactory::createPanel(this, paneObjectName);
+ paneObjectName = name.toString();
+ std::string paneStrName = paneObjectName.toStdString();
+ pane = TPanelFactory::createPanel(this, paneObjectName);
if (SaveLoadQSettings *persistent =
dynamic_cast(pane->widget()))
persistent->load(settings);
@@ -445,6 +446,12 @@ centralWidget->setLayout(centralWidgetLayout);*/
setCommandHandler(MI_About, this, &MainWindow::onAbout);
setCommandHandler(MI_MaximizePanel, this, &MainWindow::maximizePanel);
setCommandHandler(MI_FullScreenWindow, this, &MainWindow::fullScreenWindow);
+ setCommandHandler("MI_NewVectorLevel", this,
+ &MainWindow::onNewVectorLevelButtonPressed);
+ setCommandHandler("MI_NewToonzRasterLevel", this,
+ &MainWindow::onNewToonzRasterLevelButtonPressed);
+ setCommandHandler("MI_NewRasterLevel", this,
+ &MainWindow::onNewRasterLevelButtonPressed);
// remove ffmpegCache if still exists from crashed exit
QString ffmpegCachePath =
ToonzFolder::getCacheRootFolder().getQString() + "//ffmpeg";
@@ -1601,6 +1608,20 @@ void MainWindow::defineActions() {
createMenuFileAction(MI_ClearRecentLevel, tr("&Clear Recent level File List"),
"");
createMenuFileAction(MI_NewLevel, tr("&New Level..."), "Alt+N");
+
+ QAction *newVectorLevelAction =
+ createMenuFileAction(MI_NewVectorLevel, tr("&New Vector Level"), "");
+ newVectorLevelAction->setIconText(tr("New Vector Level"));
+ newVectorLevelAction->setIcon(createQIconPNG("new_vector_level"));
+ QAction *newToonzRasterLevelAction = createMenuFileAction(
+ MI_NewToonzRasterLevel, tr("&New Toonz Raster Level"), "");
+ newToonzRasterLevelAction->setIconText(tr("New Toonz Raster Level"));
+ newToonzRasterLevelAction->setIcon(createQIconPNG("new_toonz_raster_level"));
+ QAction *newRasterLevelAction =
+ createMenuFileAction(MI_NewRasterLevel, tr("&New Raster Level"), "");
+ newRasterLevelAction->setIconText(tr("New Raster Level"));
+ newRasterLevelAction->setIcon(createQIconPNG("new_raster_level"));
+
createMenuFileAction(MI_LoadLevel, tr("&Load Level..."), "");
createMenuFileAction(MI_SaveLevel, tr("&Save Level"), "");
createMenuFileAction(MI_SaveAllLevels, tr("&Save All Levels"), "");
@@ -1957,6 +1978,7 @@ void MainWindow::defineActions() {
createMenuWindowsAction(MI_OpenStyleControl, tr("&Style Editor"), "");
createMenuWindowsAction(MI_OpenToolbar, tr("&Toolbar"), "");
createMenuWindowsAction(MI_OpenToolOptionBar, tr("&Tool Option Bar"), "");
+ createMenuWindowsAction(MI_OpenCommandToolbar, tr("&Command Bar"), "");
createMenuWindowsAction(MI_OpenLevelView, tr("&Viewer"), "");
#ifdef LINETEST
createMenuWindowsAction(MI_OpenLineTestCapture, tr("&LineTest Capture"), "");
@@ -2259,6 +2281,33 @@ void MainWindow::togglePickStyleLines() {
//-----------------------------------------------------------------------------
+void MainWindow::onNewVectorLevelButtonPressed() {
+ int defaultLevelType = Preferences::instance()->getDefLevelType();
+ Preferences::instance()->setDefLevelType(PLI_XSHLEVEL);
+ CommandManager::instance()->execute("MI_NewLevel");
+ Preferences::instance()->setDefLevelType(defaultLevelType);
+}
+
+//-----------------------------------------------------------------------------
+
+void MainWindow::onNewToonzRasterLevelButtonPressed() {
+ int defaultLevelType = Preferences::instance()->getDefLevelType();
+ Preferences::instance()->setDefLevelType(TZP_XSHLEVEL);
+ CommandManager::instance()->execute("MI_NewLevel");
+ Preferences::instance()->setDefLevelType(defaultLevelType);
+}
+
+//-----------------------------------------------------------------------------
+
+void MainWindow::onNewRasterLevelButtonPressed() {
+ int defaultLevelType = Preferences::instance()->getDefLevelType();
+ Preferences::instance()->setDefLevelType(OVL_XSHLEVEL);
+ CommandManager::instance()->execute("MI_NewLevel");
+ Preferences::instance()->setDefLevelType(defaultLevelType);
+}
+
+//-----------------------------------------------------------------------------
+
class ReloadStyle final : public MenuItemHandler {
public:
ReloadStyle() : MenuItemHandler("MI_ReloadStyle") {}
diff --git a/toonz/sources/toonz/mainwindow.h b/toonz/sources/toonz/mainwindow.h
index bfdb041..1c07330 100644
--- a/toonz/sources/toonz/mainwindow.h
+++ b/toonz/sources/toonz/mainwindow.h
@@ -118,6 +118,9 @@ public:
/*-- StylepickerAreas,StylepickerLinesに直接切り替えるコマンド --*/
void togglePickStyleAreas();
void togglePickStyleLines();
+ void onNewVectorLevelButtonPressed();
+ void onNewToonzRasterLevelButtonPressed();
+ void onNewRasterLevelButtonPressed();
QString getLayoutName() { return m_layoutName; }
diff --git a/toonz/sources/toonz/menubar.cpp b/toonz/sources/toonz/menubar.cpp
index f8ec356..4d68975 100644
--- a/toonz/sources/toonz/menubar.cpp
+++ b/toonz/sources/toonz/menubar.cpp
@@ -1335,6 +1335,7 @@ QMenuBar *StackedMenuBar::createFullMenuBar() {
addMenuItem(windowsMenu, MI_OpenTasks);
addMenuItem(windowsMenu, MI_OpenTMessage);
addMenuItem(windowsMenu, MI_OpenToolbar);
+ addMenuItem(windowsMenu, MI_OpenCommandToolbar);
addMenuItem(windowsMenu, MI_OpenToolOptionBar);
addMenuItem(windowsMenu, MI_OpenLevelView);
addMenuItem(windowsMenu, MI_OpenComboViewer);
diff --git a/toonz/sources/toonz/menubarcommandids.h b/toonz/sources/toonz/menubarcommandids.h
index 8f023f6..912ca8c 100644
--- a/toonz/sources/toonz/menubarcommandids.h
+++ b/toonz/sources/toonz/menubarcommandids.h
@@ -26,6 +26,9 @@
#define MI_ClearRecentLevel "MI_ClearRecentLevel"
#define MI_PrintXsheet "MI_PrintXsheet"
#define MI_NewLevel "MI_NewLevel"
+#define MI_NewVectorLevel "MI_NewVectorLevel"
+#define MI_NewToonzRasterLevel "MI_NewToonzRasterLevel"
+#define MI_NewRasterLevel "MI_NewRasterLevel"
#define MI_LoadLevel "MI_LoadLevel"
#define MI_LoadFolder "MI_LoadFolder"
#define MI_SaveLevel "MI_SaveLevel"
@@ -86,6 +89,7 @@
#define MI_OpenFileBrowser2 "MI_OpenFileBrowser2"
#define MI_OpenStyleControl "MI_OpenStyleControl"
#define MI_OpenToolbar "MI_OpenToolbar"
+#define MI_OpenCommandToolbar "MI_OpenCommandToolbar"
#define MI_OpenToolOptionBar "MI_OpenToolOptionBar"
#define MI_OpenLevelView "MI_OpenLevelView"
#ifdef LINETEST
diff --git a/toonz/sources/toonz/tpanels.cpp b/toonz/sources/toonz/tpanels.cpp
index 0fe5898..951753e 100644
--- a/toonz/sources/toonz/tpanels.cpp
+++ b/toonz/sources/toonz/tpanels.cpp
@@ -14,6 +14,7 @@
#include "xsheetviewer.h"
#include "sceneviewer.h"
#include "toolbar.h"
+#include "commandbar.h"
#include "flipbook.h"
#include "castviewer.h"
#include "filebrowser.h"
@@ -862,6 +863,35 @@ public:
} toolbarFactory;
//=========================================================
+// Command Bar Panel
+//---------------------------------------------------------
+
+//-----------------------------------------------------------------------------
+CommandBarPanel::CommandBarPanel(QWidget *parent)
+ : TPanel(parent, 0, TDockWidget::horizontal) {
+ CommandBar *xsheetToolbar = new CommandBar();
+ setWidget(xsheetToolbar);
+ setIsMaximizable(false);
+ setFixedHeight(36);
+}
+
+class CommandBarFactory final : public TPanelFactory {
+public:
+ CommandBarFactory() : TPanelFactory("CommandBar") {}
+ TPanel *createPanel(QWidget *parent) override {
+ TPanel *panel = new CommandBarPanel(parent);
+ panel->setObjectName(getPanelType());
+ return panel;
+ }
+ void initialize(TPanel *panel) override {}
+} commandBarFactory;
+
+//=============================================================================
+OpenFloatingPanel openCommandBarCommand(MI_OpenCommandToolbar, "CommandBar",
+ QObject::tr("Command Bar"));
+//-----------------------------------------------------------------------------
+
+//=========================================================
// ToolOptionPanel
//---------------------------------------------------------
diff --git a/toonz/sources/toonz/tpanels.h b/toonz/sources/toonz/tpanels.h
index d6501d8..db50598 100644
--- a/toonz/sources/toonz/tpanels.h
+++ b/toonz/sources/toonz/tpanels.h
@@ -210,6 +210,15 @@ public:
ToolOptionPanel(QWidget *parent);
};
+class CommandBarPanel final : public TPanel {
+ Q_OBJECT
+
+ // ToolOptions *m_toolOption;
+
+public:
+ CommandBarPanel(QWidget *parent);
+};
+
//=========================================================
// FlipbookPanel
//---------------------------------------------------------
diff --git a/toonz/sources/toonz/xsheetviewer.cpp b/toonz/sources/toonz/xsheetviewer.cpp
index b34eeb9..e8bd779 100644
--- a/toonz/sources/toonz/xsheetviewer.cpp
+++ b/toonz/sources/toonz/xsheetviewer.cpp
@@ -169,13 +169,9 @@ XsheetViewer::XsheetViewer(QWidget *parent, Qt::WFlags flags)
TApp::instance()->getCurrentXsheet());
m_toolbarScrollArea = new XsheetScrollArea(this);
- m_toolbarScrollArea->setFixedSize(m_orientation->cellWidth() * 12,
- XsheetGUI::TOOLBAR_HEIGHT);
m_toolbarScrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
m_toolbarScrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
- m_toolbar = new XsheetGUI::Toolbar(this);
- m_toolbar->setFixedSize(m_orientation->cellWidth() * 12,
- XsheetGUI::TOOLBAR_HEIGHT);
+ m_toolbar = new XsheetGUI::XSheetToolbar(this, 0, true);
m_toolbarScrollArea->setWidget(m_toolbar);
QRect noteArea(0, 0, 75, 120);
@@ -215,6 +211,8 @@ XsheetViewer::XsheetViewer(QWidget *parent, Qt::WFlags flags)
connect(this, &XsheetViewer::orientationChanged, this,
&XsheetViewer::onOrientationChanged);
+ connect(m_toolbar, SIGNAL(updateVisibility()), this,
+ SLOT(positionSections()));
emit orientationChanged(orientation());
}
@@ -313,10 +311,9 @@ void XsheetViewer::positionSections() {
if (Preferences::instance()->isShowXSheetToolbarEnabled()) {
m_toolbar->showToolbar(true);
-
- int w = geometry().size().width();
+ int w = visibleRegion().boundingRect().width() - 5;
m_toolbarScrollArea->setGeometry(0, 0, w, XsheetGUI::TOOLBAR_HEIGHT);
-
+ m_toolbar->setFixedWidth(w);
if (o->isVerticalTimeline()) {
headerFrame = headerFrame.adjusted(XsheetGUI::TOOLBAR_HEIGHT,
XsheetGUI::TOOLBAR_HEIGHT);
diff --git a/toonz/sources/toonz/xsheetviewer.h b/toonz/sources/toonz/xsheetviewer.h
index 7a8238c..c55624c 100644
--- a/toonz/sources/toonz/xsheetviewer.h
+++ b/toonz/sources/toonz/xsheetviewer.h
@@ -325,7 +325,7 @@ class XsheetViewer final : public QFrame, public SaveLoadQSettings {
XsheetGUI::RowArea *m_rowArea;
XsheetGUI::CellArea *m_cellArea;
XsheetGUI::NoteArea *m_noteArea;
- XsheetGUI::Toolbar *m_toolbar;
+ XsheetGUI::XSheetToolbar *m_toolbar;
Spreadsheet::FrameScroller m_frameScroller;
@@ -698,7 +698,6 @@ protected:
void wheelEvent(QWheelEvent *event) override;
void timerEvent(QTimerEvent *) override;
- void positionSections();
void disconnectScrollBars();
void connectScrollBars();
void connectOrDisconnectScrollBars(bool toConnect);
@@ -708,6 +707,7 @@ signals:
void orientationChanged(const Orientation *newOrientation);
public slots:
+ void positionSections();
void onSceneSwitched();
void onXsheetChanged();
void onCurrentFrameSwitched();
diff --git a/toonz/sources/toonz/xshtoolbar.cpp b/toonz/sources/toonz/xshtoolbar.cpp
index 114d9cc..eafafb5 100644
--- a/toonz/sources/toonz/xshtoolbar.cpp
+++ b/toonz/sources/toonz/xshtoolbar.cpp
@@ -12,9 +12,11 @@
// TnzLib includes
#include "toonz/preferences.h"
#include "toonz/tscenehandle.h"
+#include "toonzqt/menubarcommand.h"
// Qt includes
#include
+#include
//=============================================================================
@@ -25,144 +27,77 @@ namespace XsheetGUI {
//-----------------------------------------------------------------------------
#if QT_VERSION >= 0x050500
-Toolbar::Toolbar(XsheetViewer *parent, Qt::WindowFlags flags)
+XSheetToolbar::XSheetToolbar(XsheetViewer *parent, Qt::WindowFlags flags,
+ bool isCollapsible)
#else
-Toolbar::Toolbar(XsheetViewer *parent, Qt::WFlags flags)
+XSheetToolbar::XSheetToolbar(XsheetViewer *parent, Qt::WFlags flags)
#endif
- : QFrame(parent), m_viewer(parent) {
- setFrameStyle(QFrame::StyledPanel);
+ : QToolBar(parent), m_viewer(parent), m_isCollapsible(isCollapsible) {
setObjectName("cornerWidget");
- m_toolbar = new QToolBar();
- m_toolbar->setFixedHeight(30);
- m_toolbar->setObjectName("XSheetToolbar");
-
- m_newVectorLevelButton = new QPushButton(this);
- m_newVectorLevelButton->setIconSize(QSize(18, 18));
- QIcon newVectorIcon = createQIconPNG("new_vector_level");
- m_newVectorLevelButton->setIcon(newVectorIcon);
- m_newVectorLevelButton->setObjectName("XSheetToolbarLevelButton");
- m_newVectorLevelButton->setToolTip(tr("New Vector Level"));
-
- m_newToonzRasterLevelButton = new QPushButton(this);
- m_newToonzRasterLevelButton->setIconSize(QSize(18, 18));
- QIcon newToonzRasterIcon = createQIconPNG("new_toonz_raster_level");
- m_newToonzRasterLevelButton->setIcon(newToonzRasterIcon);
- m_newToonzRasterLevelButton->setObjectName("XSheetToolbarLevelButton");
- m_newToonzRasterLevelButton->setToolTip(tr("New Toonz Raster Level"));
-
- m_newRasterLevelButton = new QPushButton(this);
- m_newRasterLevelButton->setIconSize(QSize(18, 18));
- QIcon newRasterIcon = createQIconPNG("new_raster_level");
- m_newRasterLevelButton->setIcon(newRasterIcon);
- m_newRasterLevelButton->setObjectName("XSheetToolbarLevelButton");
- m_newRasterLevelButton->setToolTip(tr("New Raster Level"));
+ setFixedHeight(30);
+ setObjectName("XSheetToolbar");
TApp *app = TApp::instance();
m_keyFrameButton = new ViewerKeyframeNavigator(this, app->getCurrentFrame());
m_keyFrameButton->setObjectHandle(app->getCurrentObject());
m_keyFrameButton->setXsheetHandle(app->getCurrentXsheet());
- QVBoxLayout *mainLay = new QVBoxLayout();
- mainLay->setMargin(0);
- mainLay->setSpacing(5);
+ QWidgetAction *keyFrameAction = new QWidgetAction(this);
+ keyFrameAction->setDefaultWidget(m_keyFrameButton);
+
{
- mainLay->addStretch(1);
- QHBoxLayout *toolbarLayout = new QHBoxLayout();
- toolbarLayout->setSpacing(2);
- toolbarLayout->setMargin(0);
- {
- m_toolbar->addWidget(m_newVectorLevelButton);
- m_toolbar->addWidget(m_newToonzRasterLevelButton);
- m_toolbar->addWidget(m_newRasterLevelButton);
- m_toolbar->addSeparator();
- QAction *reframeOnes =
- CommandManager::instance()->getAction("MI_Reframe1");
- m_toolbar->addAction(reframeOnes);
- QAction *reframeTwos =
- CommandManager::instance()->getAction("MI_Reframe2");
- m_toolbar->addAction(reframeTwos);
- QAction *reframeThrees =
- CommandManager::instance()->getAction("MI_Reframe3");
- m_toolbar->addAction(reframeThrees);
-
- m_toolbar->addSeparator();
-
- QAction *repeat = CommandManager::instance()->getAction("MI_Dup");
- m_toolbar->addAction(repeat);
-
- m_toolbar->addSeparator();
-
- QAction *collapse = CommandManager::instance()->getAction("MI_Collapse");
- m_toolbar->addAction(collapse);
- QAction *open = CommandManager::instance()->getAction("MI_OpenChild");
- m_toolbar->addAction(open);
- QAction *leave = CommandManager::instance()->getAction("MI_CloseChild");
- m_toolbar->addAction(leave);
-
- m_toolbar->addSeparator();
- m_toolbar->addWidget(m_keyFrameButton);
- toolbarLayout->addWidget(m_toolbar);
- toolbarLayout->addStretch(0);
- }
- mainLay->addLayout(toolbarLayout, 0);
- if (!Preferences::instance()->isShowXSheetToolbarEnabled()) {
- m_toolbar->hide();
+ QAction *newVectorLevel =
+ CommandManager::instance()->getAction("MI_NewVectorLevel");
+ addAction(newVectorLevel);
+ QAction *newToonzRasterLevel =
+ CommandManager::instance()->getAction("MI_NewToonzRasterLevel");
+ addAction(newToonzRasterLevel);
+ QAction *newRasterLevel =
+ CommandManager::instance()->getAction("MI_NewRasterLevel");
+ addAction(newRasterLevel);
+ addSeparator();
+ QAction *reframeOnes = CommandManager::instance()->getAction("MI_Reframe1");
+ addAction(reframeOnes);
+ QAction *reframeTwos = CommandManager::instance()->getAction("MI_Reframe2");
+ addAction(reframeTwos);
+ QAction *reframeThrees =
+ CommandManager::instance()->getAction("MI_Reframe3");
+ addAction(reframeThrees);
+
+ addSeparator();
+
+ QAction *repeat = CommandManager::instance()->getAction("MI_Dup");
+ addAction(repeat);
+
+ addSeparator();
+
+ QAction *collapse = CommandManager::instance()->getAction("MI_Collapse");
+ addAction(collapse);
+ QAction *open = CommandManager::instance()->getAction("MI_OpenChild");
+ addAction(open);
+ QAction *leave = CommandManager::instance()->getAction("MI_CloseChild");
+ addAction(leave);
+
+ addSeparator();
+ addAction(keyFrameAction);
+
+ if (!Preferences::instance()->isShowXSheetToolbarEnabled() &&
+ m_isCollapsible) {
+ hide();
}
-
- mainLay->addStretch(1);
}
- setLayout(mainLay);
-
- // signal-slot connections
- bool ret = true;
- ret = ret && connect(m_newVectorLevelButton, SIGNAL(released()), this,
- SLOT(onNewVectorLevelButtonPressed()));
- ret = ret && connect(m_newToonzRasterLevelButton, SIGNAL(released()), this,
- SLOT(onNewToonzRasterLevelButtonPressed()));
- ret = ret && connect(m_newRasterLevelButton, SIGNAL(released()), this,
- SLOT(onNewRasterLevelButtonPressed()));
- assert(ret);
-
- // m_leaveSubButton->hide();
}
//-----------------------------------------------------------------------------
-void Toolbar::onNewVectorLevelButtonPressed() {
- int defaultLevelType = Preferences::instance()->getDefLevelType();
- Preferences::instance()->setDefLevelType(PLI_XSHLEVEL);
- CommandManager::instance()->execute("MI_NewLevel");
- Preferences::instance()->setDefLevelType(defaultLevelType);
+void XSheetToolbar::showToolbar(bool show) {
+ if (!m_isCollapsible) return;
+ show ? this->show() : this->hide();
}
//-----------------------------------------------------------------------------
-void Toolbar::onNewToonzRasterLevelButtonPressed() {
- int defaultLevelType = Preferences::instance()->getDefLevelType();
- // Preferences::instance()->setOldDefLevelType(defaultLevelType);
- Preferences::instance()->setDefLevelType(TZP_XSHLEVEL);
- CommandManager::instance()->execute("MI_NewLevel");
- Preferences::instance()->setDefLevelType(defaultLevelType);
-}
-
-//-----------------------------------------------------------------------------
-
-void Toolbar::onNewRasterLevelButtonPressed() {
- int defaultLevelType = Preferences::instance()->getDefLevelType();
- Preferences::instance()->setDefLevelType(OVL_XSHLEVEL);
- CommandManager::instance()->execute("MI_NewLevel");
- Preferences::instance()->setDefLevelType(defaultLevelType);
-}
-
-//-----------------------------------------------------------------------------
-
-void Toolbar::showToolbar(bool show) {
- show ? m_toolbar->show() : m_toolbar->hide();
-}
-
-//-----------------------------------------------------------------------------
-
-void Toolbar::toggleXSheetToolbar() {
+void XSheetToolbar::toggleXSheetToolbar() {
bool toolbarEnabled = Preferences::instance()->isShowXSheetToolbarEnabled();
Preferences::instance()->enableShowXSheetToolbar(!toolbarEnabled);
TApp::instance()->getCurrentScene()->notifyPreferenceChanged("XSheetToolbar");
@@ -170,12 +105,20 @@ void Toolbar::toggleXSheetToolbar() {
//-----------------------------------------------------------------------------
+void XSheetToolbar::showEvent(QShowEvent *e) {
+ if (Preferences::instance()->isShowXSheetToolbarEnabled() || !m_isCollapsible)
+ show();
+ else
+ hide();
+ emit updateVisibility();
+}
+
//============================================================
class ToggleXSheetToolbarCommand final : public MenuItemHandler {
public:
ToggleXSheetToolbarCommand() : MenuItemHandler(MI_ToggleXSheetToolbar) {}
- void execute() override { Toolbar::toggleXSheetToolbar(); }
+ void execute() override { XSheetToolbar::toggleXSheetToolbar(); }
} ToggleXSheetToolbarCommand;
//============================================================
diff --git a/toonz/sources/toonz/xshtoolbar.h b/toonz/sources/toonz/xshtoolbar.h
index 18e5f70..0ca8690 100644
--- a/toonz/sources/toonz/xshtoolbar.h
+++ b/toonz/sources/toonz/xshtoolbar.h
@@ -26,30 +26,27 @@ namespace XsheetGUI {
// XSheet Toolbar
//-----------------------------------------------------------------------------
-class Toolbar final : public QFrame {
+class XSheetToolbar final : public QToolBar {
Q_OBJECT
XsheetViewer *m_viewer;
-
- QPushButton *m_newVectorLevelButton;
- QPushButton *m_newToonzRasterLevelButton;
- QPushButton *m_newRasterLevelButton;
ViewerKeyframeNavigator *m_keyFrameButton;
- QToolBar *m_toolbar;
+ bool m_isCollapsible;
public:
#if QT_VERSION >= 0x050500
- Toolbar(XsheetViewer *parent = 0, Qt::WindowFlags flags = 0);
+ XSheetToolbar(XsheetViewer *parent = 0, Qt::WindowFlags flags = 0,
+ bool isCollapsible = false);
#else
- Toolbar(XsheetViewer *parent = 0, Qt::WFlags flags = 0);
+ XSheetToolbar(XsheetViewer *parent = 0, Qt::WFlags flags = 0);
#endif
static void toggleXSheetToolbar();
void showToolbar(bool show);
+signals:
+ void updateVisibility();
-protected slots:
- void onNewVectorLevelButtonPressed();
- void onNewToonzRasterLevelButtonPressed();
- void onNewRasterLevelButtonPressed();
+protected:
+ void showEvent(QShowEvent *e) override;
};
} // namespace XsheetGUI;