Maki
Formally verfied low-code orchestration
Loading...
Searching...
No Matches
suggestion_menu.h
1#pragma once
2
3#include <QString>
4#include <QWidget>
5#include <vector>
6
7#include "../frame.h"
8#include "control_widget.h"
9
10class QEnterEvent;
11class QEvent;
12class QMouseEvent;
13class QPropertyAnimation;
14class QTimer;
15class QVBoxLayout;
16class NodeItem;
17class CanvasView;
18class QCheckBox;
19class QLabel;
20
21namespace maki
22{
23class WidgetGroup;
24}
25
26class SuggestionRow : public QWidget
27{
28 Q_OBJECT
29
30public:
31 SuggestionRow(const QString& svgPath, const QString& labelText, QWidget* parent = nullptr);
32
33 const QString& text() const;
34
35 bool isSelected() const;
36 void setSelected(bool selected);
37
38protected:
39 void enterEvent(QEnterEvent* event) override;
40 void leaveEvent(QEvent* event) override;
41 void mousePressEvent(QMouseEvent* event) override;
42 void paintEvent(QPaintEvent* event) override;
43
44private:
45 void setHovered(bool hovered);
46
47private:
48 QString mText;
49
50 QCheckBox* mCheckBox = nullptr;
51 QLabel* mLabel = nullptr;
52
53 bool mHovered = false;
54};
55
56class SuggestionMenu : public maki::ControlWidget
57{
58 Q_OBJECT
59
60public:
61 static SuggestionMenu* create(QWidget* parent = nullptr);
62 SuggestionMenu(QWidget* parent = nullptr);
63
64 void setSuggestions(const QStringList& consumers, const QStringList& producers);
65
66signals:
67 void accepted(const QStringList& suggestions);
68
69private:
70 maki::WidgetGroup* mConsumersGroup = nullptr;
71 maki::WidgetGroup* mProducersGroup = nullptr;
72
73 std::vector<SuggestionRow*> mConsumerRows;
74 std::vector<SuggestionRow*> mProducerRows;
75
76 void clearSuggestions();
77 QStringList selectedSuggestions() const;
78};
Custom QGraphicsView for a canvas application.
Definition canvas_view.h:15
Represents a graphical node item in a flowchart.
Definition node.h:26
A labelled container widget that groups widgets in a generic layout.
Definition widget_factory.h:146
Contains UI helper widgets and layout grouping utilities used by MAKI.
Definition generator.h:10