diff --git a/app/panel/node/node.cpp b/app/panel/node/node.cpp index 18e207918..10ec25ce7 100644 --- a/app/panel/node/node.cpp +++ b/app/panel/node/node.cpp @@ -20,20 +20,38 @@ #include "node.h" +#include + namespace olive { NodePanel::NodePanel(QWidget *parent) : PanelWidget(QStringLiteral("NodePanel"), parent) { + QWidget *outer_widget = new QWidget(this); + + QVBoxLayout *outer_layout = new QVBoxLayout(outer_widget); + outer_layout->setMargin(0); + + NodeViewToolBar *toolbar = new NodeViewToolBar(); + outer_layout->addWidget(toolbar); + // Create NodeView widget node_view_ = new NodeView(this); + outer_layout->addWidget(node_view_); + + // Connect toolbar to NodeView + connect(toolbar, &NodeViewToolBar::MiniMapEnabledToggled, node_view_, &NodeView::SetMiniMapEnabled); + + // Set defaults + toolbar->SetMiniMapEnabled(true); + node_view_->SetMiniMapEnabled(true); // Connect node view signals to this panel connect(node_view_, &NodeView::NodesSelected, this, &NodePanel::NodesSelected); connect(node_view_, &NodeView::NodesDeselected, this, &NodePanel::NodesDeselected); // Set it as the main widget of this panel - SetWidgetWithPadding(node_view_); + SetWidgetWithPadding(outer_widget); // Set strings Retranslate(); diff --git a/app/panel/node/node.h b/app/panel/node/node.h index 447e88f9d..607671055 100644 --- a/app/panel/node/node.h +++ b/app/panel/node/node.h @@ -22,6 +22,7 @@ #define NODEPANEL_H #include "widget/nodeview/nodeview.h" +#include "widget/nodeview/nodeviewtoolbar.h" #include "widget/panel/panel.h" namespace olive { diff --git a/app/widget/nodeview/CMakeLists.txt b/app/widget/nodeview/CMakeLists.txt index ee13270b6..e73798ae5 100644 --- a/app/widget/nodeview/CMakeLists.txt +++ b/app/widget/nodeview/CMakeLists.txt @@ -27,6 +27,8 @@ set(OLIVE_SOURCES widget/nodeview/nodeviewminimap.h widget/nodeview/nodeviewscene.cpp widget/nodeview/nodeviewscene.h + widget/nodeview/nodeviewtoolbar.cpp + widget/nodeview/nodeviewtoolbar.h widget/nodeview/nodeviewundo.cpp widget/nodeview/nodeviewundo.h PARENT_SCOPE diff --git a/app/widget/nodeview/nodeview.h b/app/widget/nodeview/nodeview.h index 6c02ae837..7cec30e85 100644 --- a/app/widget/nodeview/nodeview.h +++ b/app/widget/nodeview/nodeview.h @@ -78,6 +78,12 @@ public: void ZoomOut(); +public slots: + void SetMiniMapEnabled(bool e) + { + minimap_->setVisible(e); + } + signals: void NodesSelected(const QVector& nodes); diff --git a/app/widget/nodeview/nodeviewtoolbar.cpp b/app/widget/nodeview/nodeviewtoolbar.cpp new file mode 100644 index 000000000..29fc65847 --- /dev/null +++ b/app/widget/nodeview/nodeviewtoolbar.cpp @@ -0,0 +1,47 @@ +#include "nodeviewtoolbar.h" + +#include +#include + +namespace olive { + +#define super QWidget + +NodeViewToolBar::NodeViewToolBar(QWidget *parent) : + QWidget(parent) +{ + QHBoxLayout *layout = new QHBoxLayout(this); + layout->setMargin(0); + + minimap_btn_ = new QPushButton(); + minimap_btn_->setCheckable(true); + connect(minimap_btn_, &QPushButton::clicked, this, &NodeViewToolBar::MiniMapEnabledToggled); + layout->addWidget(minimap_btn_); + + layout->addStretch(); + + Retranslate(); + UpdateIcons(); +} + +void NodeViewToolBar::changeEvent(QEvent *e) +{ + if (e->type() == QEvent::LanguageChange) { + Retranslate(); + } else if (e->type() == QEvent::StyleChange) { + UpdateIcons(); + } + super::changeEvent(e); +} + +void NodeViewToolBar::Retranslate() +{ + minimap_btn_->setText(tr("Mini-Map")); + minimap_btn_->setToolTip(tr("Toggle Mini-Map")); +} + +void NodeViewToolBar::UpdateIcons() +{ +} + +} diff --git a/app/widget/nodeview/nodeviewtoolbar.h b/app/widget/nodeview/nodeviewtoolbar.h new file mode 100644 index 000000000..60585fc5d --- /dev/null +++ b/app/widget/nodeview/nodeviewtoolbar.h @@ -0,0 +1,38 @@ +#ifndef NODEVIEWTOOLBAR_H +#define NODEVIEWTOOLBAR_H + +#include +#include + +namespace olive { + +class NodeViewToolBar : public QWidget +{ + Q_OBJECT +public: + NodeViewToolBar(QWidget *parent = nullptr); + +public slots: + void SetMiniMapEnabled(bool e) + { + minimap_btn_->setChecked(e); + } + +signals: + void MiniMapEnabledToggled(bool e); + +protected: + virtual void changeEvent(QEvent *e) override; + +private: + void Retranslate(); + + void UpdateIcons(); + + QPushButton *minimap_btn_; + +}; + +} + +#endif // NODEVIEWTOOLBAR_H