ImGraph
 All Classes Functions Variables Enumerations Pages
GraphicView.h
1 #ifndef _GRAPHICVIEW_HEADER_
2 #define _GRAPHICVIEW_HEADER_
3 
4 #ifdef _WIN32
5 #pragma warning(disable:4503)
6 #pragma warning(push)
7 #pragma warning(disable:4996 4244 4251 4275 4800 4503)
8 #endif
9 #include <QGraphicsView>
10 #include <QResizeEvent>
11 #include <QDialog >
12 #include <QPainter>
13 #include <QRect>
14 #include <QString>
15 #include <QDialog>
16 #include <QLabel>
17 #include <QWidget>
18 #include <QLayout>
19 #include <QMainWindow>
20 #include <QComboBox>
21 #include <QDial>
22 #include <QCheckBox>
23 #include <QPainterPath>
24 #include <QGroupBox>
25 
26 #include <boost/bimap.hpp>
27 
28 #ifdef _WIN32
29 #pragma warning(pop)
30 #endif
31 
32 #include "Block.h"
33 
34 #include <map>
35 #include "Window.h"
36 
37 namespace charliesoft
38 {
39  class SubBlock;
40  class LinkPath;
41  class VertexRepresentation;
42  class LinkConnexionRepresentation;
43  class SubGraphParamRepresentation;
44 
45  class GraphLayout :public QLayout
46  {
47  Q_OBJECT;
48  boost::mutex _mtx; // explicit mutex declaration
49 
50  std::map<Block*, QLayoutItem*> _items;
51  std::map<BlockLink, LinkPath*> _links;
52  std::map<BlockLink, LinkPath*> _sublinks;
53  std::vector<Block*> _orderedBlocks;
54  public:
55  GraphLayout();
56 
57  void removeLinks(VertexRepresentation* vertex);
58  void removeSelectedLinks();
59  void addLink(const BlockLink& link, LinkPath* path=NULL);
60 
61  void clearLayout(QLayout* layout = NULL);
62  const std::map<Block*, QLayoutItem*>& getItems() const { return _items; }
63  const std::map<BlockLink, LinkPath*>& getLinks() const { return _links; }
64  const std::map<BlockLink, LinkPath*>& getSubLinks() const { return _sublinks; }
65 
66  virtual void addItem(QLayoutItem *);
67  virtual QLayoutItem * itemAt(int index) const;
68  virtual QLayoutItem * takeAt(int index);
69  virtual int indexOf(QWidget *) const;
70  virtual int indexOf(Block *) const;
71  virtual int count() const;
72  virtual QSize sizeHint() const;
73 
74  void drawEdges(QPainter& p);
75  VertexRepresentation* getVertexRepresentation(Block* b);
76 
77  public slots:
78  void synchronize();
79 
80  signals:
81  void updateDock(GroupParamRepresentation*);
82  };
83 
84  class MainWidget :public QWidget
85  {
86  Q_OBJECT;
87 
89 
90  LinkConnexionRepresentation* _startParam;
91  QPoint _startMouse;
92  QPoint _endMouse;
93  QRectF _selectBox;
94  bool _isSelecting;
95  bool _creatingLink;
96 
97  virtual void paintEvent(QPaintEvent *);
98  virtual void mouseMoveEvent(QMouseEvent *);
99  virtual void mousePressEvent(QMouseEvent *);
100  virtual void mouseReleaseEvent(QMouseEvent *);
101 
102  virtual void dragEnterEvent(QDragEnterEvent *);
103  virtual void dropEvent(QDropEvent *);
104  public:
105  MainWidget(GraphOfProcess *model);
106 
107  virtual QSize sizeHint() const;
108  virtual QSize minimumSizeHint() const;
109 
110  charliesoft::GraphOfProcess *getModel() const { return _model; };
111 
112  public slots:
113  void initLinkCreation(QPoint start);
114  void endLinkCreation(QPoint end);
115  };
116 
118  {
119  protected:
120  SubBlock* _subModel;
121  int _posInput;
122  int _posOutput;
123 
124  std::map<std::string, SubGraphParamRepresentation*> _params;
125 
126  void addParameter(SubGraphParamRepresentation* param);
127  virtual void resizeEvent(QResizeEvent * event);
128  public:
130 
131  SubBlock* getSubModel() const { return _subModel; }
132 
133  SubGraphParamRepresentation* getParamRepresentation(std::string paramName) const;
134 
135  void addNewParamLink(const BlockLink& link);
136  void removeParamLink(const BlockLink& link);
137  };
138 
140  {
141  public:
143  };
144 }
145 
146 
147 #endif
Definition: Graph.h:26
Definition: VertexRepresentation.h:79
Definition: Block.h:197
virtual QLayoutItem * takeAt(int index)
Definition: GraphicView.cpp:99
Definition: VertexRepresentation.h:167
Definition: GraphicView.h:117
Definition: GraphicView.h:139
Definition: SubBlock.h:20
Definition: GraphicView.h:84
Definition: GraphicView.h:45
Definition: Connectors.h:93