feat(tab menu): connect buttons to place node
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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(
|
||||||
|
|||||||
@@ -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;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user