Toggle Toolbar Orientation
This commit is contained in:
parent
16bd4c5d1a
commit
e7ed5341b2
10 changed files with 185 additions and 39 deletions
|
@ -1897,14 +1897,24 @@ ParamFieldKeyToggle {
|
|||
margin-top: 1;
|
||||
margin-bottom: 1;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button {
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_vertical {
|
||||
qproperty-icon: url('../Medium/imgs/white/toolbar_extension_vertical.png');
|
||||
padding-bottom: 1;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button:hover {
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_vertical:hover {
|
||||
background-color: #595959;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button:pressed {
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_vertical:pressed {
|
||||
background-color: #141414;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_horizontal {
|
||||
qproperty-icon: url('../Medium/imgs/white/toolbar_extension_horizontal.png');
|
||||
padding-bottom: 1;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_horizontal:hover {
|
||||
background-color: #595959;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_horizontal:pressed {
|
||||
background-color: #141414;
|
||||
}
|
||||
#expandButton:checked {
|
||||
|
|
|
@ -1897,14 +1897,24 @@ ParamFieldKeyToggle {
|
|||
margin-top: 1;
|
||||
margin-bottom: 1;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button {
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_vertical {
|
||||
qproperty-icon: url('../Medium/imgs/white/toolbar_extension_vertical.png');
|
||||
padding-bottom: 1;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button:hover {
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_vertical:hover {
|
||||
background-color: #494949;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button:pressed {
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_vertical:pressed {
|
||||
background-color: #040404;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_horizontal {
|
||||
qproperty-icon: url('../Medium/imgs/white/toolbar_extension_horizontal.png');
|
||||
padding-bottom: 1;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_horizontal:hover {
|
||||
background-color: #494949;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_horizontal:pressed {
|
||||
background-color: #040404;
|
||||
}
|
||||
#expandButton:checked {
|
||||
|
|
|
@ -1897,14 +1897,24 @@ ParamFieldKeyToggle {
|
|||
margin-top: 1;
|
||||
margin-bottom: 1;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button {
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_vertical {
|
||||
qproperty-icon: url('../Medium/imgs/black/toolbar_extension_vertical.png');
|
||||
padding-bottom: 1;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button:hover {
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_vertical:hover {
|
||||
background-color: #d3d3d3;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button:pressed {
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_vertical:pressed {
|
||||
background-color: #8f8f8f;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_horizontal {
|
||||
qproperty-icon: url('../Medium/imgs/black/toolbar_extension_horizontal.png');
|
||||
padding-bottom: 1;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_horizontal:hover {
|
||||
background-color: #d3d3d3;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_horizontal:pressed {
|
||||
background-color: #8f8f8f;
|
||||
}
|
||||
#expandButton:checked {
|
||||
|
|
|
@ -1897,14 +1897,24 @@ ParamFieldKeyToggle {
|
|||
margin-top: 1;
|
||||
margin-bottom: 1;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button {
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_vertical {
|
||||
qproperty-icon: url('imgs/white/toolbar_extension_vertical.png');
|
||||
padding-bottom: 1;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button:hover {
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_vertical:hover {
|
||||
background-color: #717171;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button:pressed {
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_vertical:pressed {
|
||||
background-color: #2c2c2c;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_horizontal {
|
||||
qproperty-icon: url('imgs/white/toolbar_extension_horizontal.png');
|
||||
padding-bottom: 1;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_horizontal:hover {
|
||||
background-color: #717171;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_horizontal:pressed {
|
||||
background-color: #2c2c2c;
|
||||
}
|
||||
#expandButton:checked {
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
margin-top: 1;
|
||||
margin-bottom: 1;
|
||||
}
|
||||
& QToolButton#qt_toolbar_ext_button {
|
||||
& QToolButton#qt_toolbar_ext_button_vertical {
|
||||
qproperty-icon: url('@{img-url}/toolbar_extension_vertical.png');
|
||||
padding-bottom: 1;
|
||||
&:hover {
|
||||
|
@ -21,6 +21,16 @@
|
|||
background-color: @toolbutton-bg-color-pressed;
|
||||
}
|
||||
}
|
||||
& QToolButton#qt_toolbar_ext_button_horizontal {
|
||||
qproperty-icon: url('@{img-url}/toolbar_extension_horizontal.png');
|
||||
padding-bottom: 1;
|
||||
&:hover {
|
||||
background-color: @button-bg-color-hover;
|
||||
}
|
||||
&:pressed {
|
||||
background-color: @toolbutton-bg-color-pressed;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#expandButton {
|
||||
|
|
|
@ -1897,14 +1897,24 @@ ParamFieldKeyToggle {
|
|||
margin-top: 1;
|
||||
margin-bottom: 1;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button {
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_vertical {
|
||||
qproperty-icon: url('../Medium/imgs/black/toolbar_extension_vertical.png');
|
||||
padding-bottom: 1;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button:hover {
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_vertical:hover {
|
||||
background-color: #b3b3b3;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button:pressed {
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_vertical:pressed {
|
||||
background-color: #676767;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_horizontal {
|
||||
qproperty-icon: url('../Medium/imgs/black/toolbar_extension_horizontal.png');
|
||||
padding-bottom: 1;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_horizontal:hover {
|
||||
background-color: #b3b3b3;
|
||||
}
|
||||
#ToolBar QToolButton#qt_toolbar_ext_button_horizontal:pressed {
|
||||
background-color: #676767;
|
||||
}
|
||||
#expandButton:checked {
|
||||
|
|
|
@ -93,7 +93,7 @@ ComboViewerPanel::ComboViewerPanel(QWidget *parent, Qt::WFlags flags)
|
|||
setObjectName("ComboViewerPanel");
|
||||
|
||||
// ToolBar
|
||||
m_toolbar = new Toolbar(this, false);
|
||||
m_toolbar = new Toolbar(this, true);
|
||||
// Tool Options
|
||||
m_toolOptions = new ToolOptions();
|
||||
m_toolOptions->setObjectName("ComboViewerToolOptions");
|
||||
|
|
|
@ -28,6 +28,8 @@
|
|||
#include <QToolButton>
|
||||
#include <QVBoxLayout>
|
||||
#include <QObject>
|
||||
#include <QContextMenuEvent>
|
||||
#include <QStyle>
|
||||
|
||||
TEnv::IntVar ShowAllToolsToggle("ShowAllToolsToggle", 1);
|
||||
|
||||
|
@ -35,41 +37,35 @@ TEnv::IntVar ShowAllToolsToggle("ShowAllToolsToggle", 1);
|
|||
// Toolbar
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
Toolbar::Toolbar(QWidget *parent, bool isVertical)
|
||||
: QToolBar(parent), m_isExpanded(ShowAllToolsToggle != 0) {
|
||||
Toolbar::Toolbar(QWidget *parent, bool isViewerToolbar)
|
||||
: QToolBar(parent)
|
||||
, m_isExpanded(ShowAllToolsToggle != 0)
|
||||
, m_isViewerToolbar(isViewerToolbar)
|
||||
, m_isVertical(true) {
|
||||
// Fondamentale per lo style sheet
|
||||
setObjectName("toolBar");
|
||||
|
||||
setMovable(false);
|
||||
if (isVertical)
|
||||
setOrientation(Qt::Vertical);
|
||||
else
|
||||
setOrientation(Qt::Horizontal);
|
||||
if (m_isViewerToolbar) m_isVertical = false;
|
||||
|
||||
m_panel = dynamic_cast<TPanel *>(parent);
|
||||
|
||||
setMovable(false);
|
||||
setIconSize(QSize(20, 20));
|
||||
setToolButtonStyle(Qt::ToolButtonIconOnly);
|
||||
|
||||
m_moreButton = findChild<QToolButton *>("qt_toolbar_ext_button");
|
||||
|
||||
m_expandButton = new QToolButton(this);
|
||||
m_expandButton->setObjectName("expandButton");
|
||||
m_expandButton->setCheckable(true);
|
||||
m_expandButton->setChecked(m_isExpanded);
|
||||
m_expandButton->setArrowType((isVertical) ? Qt::DownArrow : Qt::RightArrow);
|
||||
m_expandButton->hide();
|
||||
m_expandAction = addWidget(m_expandButton);
|
||||
|
||||
connect(m_expandButton, SIGNAL(toggled(bool)), this,
|
||||
SLOT(setIsExpanded(bool)));
|
||||
|
||||
updateToolbar();
|
||||
if (isVertical) {
|
||||
QIcon moreIcon(":Resources/moredown.svg");
|
||||
QToolButton *more = findChild<QToolButton *>("qt_toolbar_ext_button");
|
||||
more->setIcon(moreIcon);
|
||||
} else {
|
||||
QIcon moreIcon(":Resources/more.svg");
|
||||
QToolButton *more = findChild<QToolButton *>("qt_toolbar_ext_button");
|
||||
more->setIcon(moreIcon);
|
||||
}
|
||||
updateOrientation(m_isVertical);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -269,6 +265,79 @@ void Toolbar::hideEvent(QHideEvent *e) {
|
|||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void Toolbar::contextMenuEvent(QContextMenuEvent *event) {
|
||||
if (m_isViewerToolbar) return;
|
||||
|
||||
QMenu *menu = new QMenu();
|
||||
|
||||
QAction *toggleOrientation = menu->addAction(tr("Toggle Orientation"));
|
||||
connect(toggleOrientation, SIGNAL(triggered(bool)), this,
|
||||
SLOT(orientationToggled(bool)));
|
||||
|
||||
toggleOrientation->setEnabled(m_panel->isFloating());
|
||||
|
||||
menu->exec(event->globalPos());
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void Toolbar::orientationToggled(bool ignore) {
|
||||
if (m_isViewerToolbar) return;
|
||||
|
||||
updateOrientation(!m_isVertical);
|
||||
}
|
||||
|
||||
void Toolbar::updateOrientation(bool isVertical) {
|
||||
bool wasVertical = m_isVertical;
|
||||
|
||||
m_isVertical = isVertical;
|
||||
|
||||
if (!m_isViewerToolbar) {
|
||||
// Current dimensions
|
||||
int x = wasVertical ? m_panel->height() : m_panel->width();
|
||||
|
||||
m_panel->setOrientation(m_isVertical);
|
||||
m_panel->setFixedWidth(m_isVertical ? 44 : QWIDGETSIZE_MAX);
|
||||
m_panel->setFixedHeight(m_isVertical ? QWIDGETSIZE_MAX : 44);
|
||||
if (m_isVertical)
|
||||
m_panel->resize(44, x);
|
||||
else
|
||||
m_panel->resize(x, 44);
|
||||
}
|
||||
|
||||
setFixedWidth(m_isVertical ? 34 : QWIDGETSIZE_MAX);
|
||||
setFixedHeight(m_isVertical ? QWIDGETSIZE_MAX : 34);
|
||||
setOrientation(m_isVertical ? Qt::Vertical : Qt::Horizontal);
|
||||
setSizePolicy(QSizePolicy::Policy::Expanding,
|
||||
QSizePolicy::Policy::Expanding);
|
||||
|
||||
// m_moreButton->setIcon(m_isVertical ? m_moreDownIcon : m_moreIcon);
|
||||
m_moreButton->setObjectName(m_isVertical
|
||||
? "qt_toolbar_ext_button_vertical"
|
||||
: "qt_toolbar_ext_button_horizontal");
|
||||
QStyle *s = m_moreButton->style();
|
||||
s->unpolish(m_moreButton);
|
||||
s->polish(m_moreButton);
|
||||
|
||||
m_expandButton->setArrowType(m_isVertical ? Qt::DownArrow : Qt::RightArrow);
|
||||
updateToolbar();
|
||||
}
|
||||
|
||||
// SaveLoadQSettings
|
||||
void Toolbar::save(QSettings &settings) const {
|
||||
UINT orientation = 0;
|
||||
orientation = m_isVertical ? 1 : 0;
|
||||
settings.setValue("vertical", orientation);
|
||||
}
|
||||
|
||||
void Toolbar::load(QSettings &settings) {
|
||||
UINT orientation = settings.value("vertical", 1).toUInt();
|
||||
m_isVertical = orientation == 1;
|
||||
updateOrientation(m_isVertical);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void Toolbar::onToolChanged() {
|
||||
ToolHandle *toolHandle = TApp::instance()->getCurrentTool();
|
||||
TTool *tool = toolHandle->getTool();
|
||||
|
|
|
@ -5,11 +5,14 @@
|
|||
|
||||
#include "tools/toolcommandids.h"
|
||||
|
||||
#include "pane.h"
|
||||
#include "saveloadqsettings.h"
|
||||
|
||||
#include <QToolBar>
|
||||
|
||||
class QToolButton;
|
||||
|
||||
class Toolbar final : public QToolBar {
|
||||
class Toolbar final : public QToolBar, public SaveLoadQSettings {
|
||||
Q_OBJECT
|
||||
|
||||
std::map<std::string, QAction *> m_toolbarList;
|
||||
|
@ -18,6 +21,11 @@ class Toolbar final : public QToolBar {
|
|||
bool m_isExpanded;
|
||||
int m_toolbarLevel;
|
||||
|
||||
bool m_isViewerToolbar;
|
||||
TPanel *m_panel;
|
||||
bool m_isVertical = true;
|
||||
QToolButton *m_moreButton;
|
||||
|
||||
struct {
|
||||
const char *toolName;
|
||||
bool isSeparator;
|
||||
|
@ -44,20 +52,29 @@ class Toolbar final : public QToolBar {
|
|||
{T_Hand, false, false, 0}, {0, false, false, 0}};
|
||||
|
||||
public:
|
||||
Toolbar(QWidget *parent, bool isVertical = true);
|
||||
Toolbar(QWidget *parent, bool isViewerToolbar = false);
|
||||
~Toolbar();
|
||||
|
||||
// SaveLoadQSettings
|
||||
virtual void save(QSettings &settings) const override;
|
||||
virtual void load(QSettings &settings) override;
|
||||
|
||||
void updateOrientation(bool isVertical);
|
||||
|
||||
protected:
|
||||
bool addAction(QAction *act);
|
||||
|
||||
void showEvent(QShowEvent *e) override;
|
||||
void hideEvent(QHideEvent *e) override;
|
||||
|
||||
void contextMenuEvent(QContextMenuEvent *event) override;
|
||||
|
||||
protected slots:
|
||||
void onToolChanged();
|
||||
void onPreferenceChanged(const QString &prefName);
|
||||
void setIsExpanded(bool expand);
|
||||
void updateToolbar();
|
||||
void orientationToggled(bool);
|
||||
};
|
||||
|
||||
#endif // TOOLBAR_H
|
||||
|
|
|
@ -1017,8 +1017,8 @@ public:
|
|||
panel->setWidget(toolbar);
|
||||
panel->setIsMaximizable(false);
|
||||
// panel->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);
|
||||
panel->setFixedWidth(44); // 35
|
||||
toolbar->setFixedWidth(34);
|
||||
// panel->setFixedWidth(44); // 35
|
||||
// toolbar->setFixedWidth(34);
|
||||
panel->setWindowTitle(QString(""));
|
||||
panel->getTitleBar()->showTitleBar(TApp::instance()->getShowTitleBars());
|
||||
connect(TApp::instance(), SIGNAL(showTitleBars(bool)), panel->getTitleBar(),
|
||||
|
|
Loading…
Reference in a new issue