feat(tab menu): connect buttons to place node

This commit is contained in:
parker
2025-07-16 20:14:02 +01:00
parent 6c67d5cb36
commit 7e432e975e
3 changed files with 34 additions and 5 deletions

View File

@@ -33,6 +33,7 @@ public:
DEFAULT, DEFAULT,
MOVING_NODE MOVING_NODE
}; };
NodeGraphic* createNode(enzo::nt::opConstructor ctorFunc);
private: private:
QLayout* mainLayout_; QLayout* mainLayout_;
@@ -57,7 +58,6 @@ private:
void destroyFloatingEdge(); void destroyFloatingEdge();
void deleteEdge(QGraphicsItem* edge); void deleteEdge(QGraphicsItem* edge);
NodeGraphic* createNode(enzo::nt::opConstructor ctorFunc);
enzo::ui::TabMenu* tabMenu_; enzo::ui::TabMenu* tabMenu_;
void leftMousePressed(QMouseEvent* event); void leftMousePressed(QMouseEvent* event);

View File

@@ -1,5 +1,6 @@
#include "Gui/Network/TabMenu.h" #include "Gui/Network/TabMenu.h"
#include "Engine/Operator/OperatorTable.h" #include "Engine/Operator/OperatorTable.h"
#include "Gui/Network/Network.h"
#include <QLabel> #include <QLabel>
#include <QLineEdit> #include <QLineEdit>
#include <iostream> #include <iostream>
@@ -7,6 +8,7 @@
#include <qevent.h> #include <qevent.h>
#include <qlineedit.h> #include <qlineedit.h>
#include <qnamespace.h> #include <qnamespace.h>
#include <qobject.h>
#include <qpushbutton.h> #include <qpushbutton.h>
#include <qscrollarea.h> #include <qscrollarea.h>
#include <qwidget.h> #include <qwidget.h>
@@ -41,8 +43,10 @@ enzo::ui::TabMenu::TabMenu(QWidget *parent, Qt::WindowFlags f)
nodeScrollArea_->setFocusPolicy(Qt::NoFocus); nodeScrollArea_->setFocusPolicy(Qt::NoFocus);
for(auto tableItem : tableItems) for(auto tableItem : tableItems)
{ {
auto button = new QPushButton(tableItem.displayName.c_str()); auto button = new TabMenuButton(tableItem.displayName.c_str());
button->nodeName = tableItem.internalName;
button->setFocusPolicy(Qt::NoFocus); button->setFocusPolicy(Qt::NoFocus);
connect(button, &TabMenuButton::clicked, this, &enzo::ui::TabMenu::nodeClicked);
button->setStyleSheet(R"( button->setStyleSheet(R"(
QPushButton { QPushButton {
background-color: #181c1d; background-color: #181c1d;
@@ -66,6 +70,14 @@ enzo::ui::TabMenu::TabMenu(QWidget *parent, Qt::WindowFlags f)
setDisabled(true); setDisabled(true);
} }
void enzo::ui::TabMenu::nodeClicked()
{
TabMenuButton* buttonClicked = static_cast<TabMenuButton*>(sender());
static_cast<Network*>(parentWidget())->createNode(op::OperatorTable::getOpConstructor(buttonClicked->nodeName));
doHide();
}
void enzo::ui::TabMenu::showOnMouse(float dx, float dy) void enzo::ui::TabMenu::showOnMouse(float dx, float dy)
{ {
setDisabled(false); setDisabled(false);
@@ -80,14 +92,19 @@ void enzo::ui::TabMenu::showOnMouse(float dx, float dy)
raise(); raise();
} }
void enzo::ui::TabMenu::focusOutEvent(QFocusEvent *event) void enzo::ui::TabMenu::doHide()
{ {
std::cout << "focus lost\n";
QWidget::focusOutEvent(event);
setDisabled(true); setDisabled(true);
hide(); hide();
} }
void enzo::ui::TabMenu::focusOutEvent(QFocusEvent *event)
{
QWidget::focusOutEvent(event);
doHide();
}
bool enzo::ui::TabMenu::event(QEvent *event) bool enzo::ui::TabMenu::event(QEvent *event)
{ {
if( if(

View File

@@ -2,6 +2,7 @@
#include <qlineedit.h> #include <qlineedit.h>
#include <QLabel> #include <QLabel>
#include <qpushbutton.h>
#include <qscrollarea.h> #include <qscrollarea.h>
#include <qwidget.h> #include <qwidget.h>
#include <QVBoxLayout> #include <QVBoxLayout>
@@ -22,9 +23,20 @@ private:
QScrollArea* nodeScrollArea_; QScrollArea* nodeScrollArea_;
QWidget* nodeHolder_; QWidget* nodeHolder_;
QVBoxLayout* nodeHolderLayout_; QVBoxLayout* nodeHolderLayout_;
void doHide();
protected: protected:
void focusOutEvent(QFocusEvent *event) override; void focusOutEvent(QFocusEvent *event) override;
bool event(QEvent *event) override; bool event(QEvent *event) override;
// void resizeEvent(QResizeEvent *event) override; // void resizeEvent(QResizeEvent *event) override;
protected slots:
void nodeClicked();
};
class TabMenuButton
: public QPushButton
{
public:
using QPushButton::QPushButton;
std::string nodeName;
}; };
} }