YARP
Yet Another Robot Platform
 
Loading...
Searching...
No Matches
builderwindow.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT)
3 * SPDX-License-Identifier: LGPL-2.1-or-later
4 */
5
6#ifndef BUILDERWINDOW_H
7#define BUILDERWINDOW_H
8
9#include <QWidget>
10#include "builderscene.h"
11#include <QGraphicsView>
12#include "customtree.h"
13#include <QGraphicsItem>
14#include <QMenu>
15#include "commons.h"
16#include <QtOpenGL/QGLWidget>
17#include <QDebug>
18#include "builderitem.h"
19#include "sourceportitem.h"
20#include "destinationportitem.h"
21#include "moduleitem.h"
22#include "applicationitem.h"
25#include "safe_manager.h"
26#include "propertiestable.h"
27
28#include <QToolBar>
29#include <QSplitter>
30
31//namespace BuilderUi {
32//class BuilderWindow;
33//}
34// class YARPBUILDERLIBSHARED_EXPORT BuilderWindow : public QWidget
35
36class BuilderWindow : public QWidget
37{
38 Q_OBJECT
39
40 friend class CustomView;
41public:
42 explicit BuilderWindow(Application *app,Manager *lazyManager,SafeManager *safeManager,bool editingMode = false,QWidget *parent = 0);
43
44
46 void setModuleRunning(bool, int id);
47 void setConnectionConnected(bool, QString from, QString to);
48
49
50 void load(bool refresh = false);
51 bool save();
52
53 void setSelectedModules(QList<int>selectedIds);
54 void setSelectedConnections(QList<int>selectedIds);
55
56 //BuilderItem* addModule(QString itemName, QStringList inputPorts, QStringList outputPorts , QPointF pos, BuilderItem * parent = 0);
57 BuilderItem *addModule(Module *module, int moduleId);
58 BuilderItem *addSourcePort(QString name, bool editOnStart = false);
59 BuilderItem *addDestinantionPort(QString name, bool editOnStart = false);
60 BuilderItem *addConnection(void *startItem , void *endItem, int connectionId);
62 void setOutputPortAvailable(QString, bool);
63 void setInputPortAvailable(QString, bool);
64 QString getFileName();
65 void setFileName(QString filename);
66 QString getAppName();
67 void setAppName(QString appName);
68
69 QToolBar *getToolBar();
70
71 void removeToolBar();
72 void addToolBar();
73 void addModulesAction(QAction*);
74 void addAction(QAction*);
75 void addConnectionsAction(QAction*);
76 QRectF itemsBoundingRect();
77
78private:
79 void prepareManagerFrom(Manager* lazy,
80 const char* szAppName);
81 void init();
82 bool isApplicationPresent(Application *application);
83 bool isModulePresent(Module *module);
84 void initModuleTab(ModuleItem *it);
85 void findInputOutputData(Connection& cnn, ModulePContainer &modules,
86 InputData* &input_, OutputData* &output_, QString *inModulePrefix, QString *outModulePrefix);
87 PortItem* findModelFromOutput(OutputData* output, QString modulePrefix);
88 PortItem* findModelFromInput(InputData* input, QString modulePrefix);
89
90
91protected:
92 //BuilderUi::BuilderWindow *ui;
93 QSplitter *splitter;
94 QList <int> usedModulesId;
98// QTreeWidget *appProperties;
99// QTreeWidget *moduleProperties;
100// QTreeWidget *moduleDescription;
106 int index;
107 //QList <QGraphicsItem*> itemsList;
111
116
117 QList <QAction*> modulesAction;
118 QList <QAction*> builderActions;
119 QList <QAction*> connectionsAction;
120
121
122
123signals:
125 void setModuleSelected(QList<int>);
126 void setConnectionSelected(QList<int>);
127 void modified(bool);
128
129private slots:
130 void onMoved();
131 void onModified();
132 void onZoomIn();
133 void onZoomOut();
134 void onRestoreZoom();
135 void onSnap(bool);
136 void onShowGrid(bool);
137 void onModuleSelected(QGraphicsItem *it);
138 void onConnectionSelected(QGraphicsItem *it);
139 void onApplicationSelected(QGraphicsItem* it);
140 void initApplicationTab();
141 BuilderItem *onAddModule(void*, QPointF pos);
142 void onAddedApplication(void *app,QPointF pos);
143 BuilderItem *onAddNewConnection(void *, void *, int connectionId = -1);
144 BuilderItem *onAddSourcePort(QString, QPointF pos);
145 BuilderItem * onAddDestinationPort(QString,QPointF pos);
146
147};
148
149class CustomView : public QGraphicsView
150{
151 Q_OBJECT
152 friend class BuilderWindow;
153public:
154 CustomView(BuilderWindow *builder,QGraphicsView *parent = 0);
155
156 void setEditingMode(bool editing);
157 bool getEditingMode();
158
159
160
161protected:
162 void wheelEvent(QWheelEvent *event) override;
163 void keyPressEvent(QKeyEvent *event) override;
164 void mousePressEvent(QMouseEvent* event) override;
165 void mouseReleaseEvent(QMouseEvent* event) override;
166 void contextMenuEvent(QContextMenuEvent *event) override;
167
168 void deleteAllItems();
169 void deleteSelectedItems(QGraphicsItem *it = NULL);
170 void copySelectedItems();
171 void pasteSelectedItems(QPoint pos);
172private:
173 BuilderItem *pasteItem(QGraphicsItem *item, QSize *offset, bool *firstAdded, QPoint pos);
174
175private:
176 BuilderWindow *builder;
177 bool editingMode;
178 //QPoint origin;
179 QPoint m_lastDragPos;
180 QPoint m_rubberBandOrigin;
181 bool m_rubberBandActive;
182 bool mousepressed;
183 QRubberBand *rubberBand;
184 QList <QGraphicsItem*>copiedItems;
185
186signals:
188 void addSourcePort(QString,QPointF pos);
189 void addDestinationPort(QString,QPointF pos);
190 void modified();
191 void addModule(void* mod,QPointF);
192 void addNewConnection(void *start, void *end);
193
194
195
196
197};
198
199
200#endif // BUILDERWINDOW_H
void setSelectedConnections(QList< int >selectedIds)
QList< QAction * > modulesAction
void load(bool refresh=false)
void addModulesAction(QAction *)
QSplitter * splitter
Application * app
BuilderItem * addConnection(void *startItem, void *endItem, int connectionId)
BuilderScene * scene
SafeManager * safeManager
QList< QAction * > connectionsAction
QRectF itemsBoundingRect()
void refreshApplication()
QList< int > usedModulesId
void setConnectionSelected(QList< int >)
QString editingAppAuthors
CustomView * view
QString getAppName()
QString editingAppVersion
void setFileName(QString filename)
void setInputPortAvailable(QString, bool)
ApplicationItem * addApplication(Application *app, int *connectionsId=0)
Manager * lazyManager
QString getFileName()
void setConnectionConnected(bool, QString from, QString to)
void addAction(QAction *)
BuilderItem * addSourcePort(QString name, bool editOnStart=false)
QToolBar builderToolbar
void setAppName(QString appName)
QString editingAppDescr
void setModuleRunning(bool, int id)
BuilderItem * addModule(Module *module, int moduleId)
BuilderItem * addDestinantionPort(QString name, bool editOnStart=false)
void setOutputPortAvailable(QString, bool)
QToolBar * getToolBar()
QList< QAction * > builderActions
PropertiesTable * propertiesTab
QString editingAppName
void addConnectionsAction(QAction *)
void setModuleSelected(QList< int >)
void modified(bool)
void setSelectedModules(QList< int >selectedIds)
void wheelEvent(QWheelEvent *event) override
void modified()
void pressedNullItem()
void pasteSelectedItems(QPoint pos)
void keyPressEvent(QKeyEvent *event) override
void mouseReleaseEvent(QMouseEvent *event) override
void addNewConnection(void *start, void *end)
bool getEditingMode()
void copySelectedItems()
void addDestinationPort(QString, QPointF pos)
void addModule(void *mod, QPointF)
void addSourcePort(QString, QPointF pos)
void setEditingMode(bool editing)
void deleteAllItems()
void contextMenuEvent(QContextMenuEvent *event) override
void mousePressEvent(QMouseEvent *event) override
void deleteSelectedItems(QGraphicsItem *it=NULL)
Class Application.
Class Connection.
Definition application.h:56
Class InputData.
Definition data.h:21
Class Manager.
Definition manager.h:20
Class Module.
Definition module.h:99
std::vector< Module * > ModulePContainer
Definition module.h:230