26 #include <QGraphicsView> 27 #include <QGraphicsProxyWidget> 28 #include <QInputDialog> 29 #include "planargraph.h" 30 #include "latexLink.h" 31 #include "latexcompiler.h" 43 enum InteractiveMode {
65 Diagram(QGraphicsScene *t_scene,
73 QString getName()
const {
return name; }
77 InteractiveMode getInteractiveMode()
const;
79 std::string
const&fileName
81 void exportSelfPNG(QString
const &fileName);
83 std::string
const&fileName
86 std::string
const&fileName
88 std::string getLatexSource()
const;
99 std::string
const& path
102 std::string
const&t_fileName
105 std::string
const&t_fileName
107 void forceNodeOnGrid(
110 void testRoundValues(
115 void insertionMode();
117 void selectionMode();
119 void modificationDone();
123 void setName(QString
const &t_name) { name = t_name; }
124 void setGridSize(qint32 t_gridSize);
125 void showNodes(
bool);
129 void setFocus(
Node const *focused);
133 void rotateTo(
int angle);
134 void moveTo(qint32 X0_new, qint32 Y0_new);
136 size_t getPosNode(
Node const*node)
const;
137 std::pair<size_t, size_t> getPosEdge(
Edge const*edge)
const;
139 void addNode(qreal x = 0,
141 void addNode(QPointF point);
142 void addEdge(
size_t i,
144 void addEdge(
Node *A,
147 Proxy *generateLabel(QString
const &text)
const;
158 QString
const &text);
159 void proxyDoubleClicked(
Proxy *);
161 void removeEdge(
Edge *edge);
162 void removeNode(
size_t i);
163 void removeSelected();
164 void removeSelectedNodes();
165 void removeSelectedEdges();
167 void setEdgeName(
Edge const *edge,
168 QString
const &name);
169 void setNodeName(
Node const *node,
170 QString
const &name);
171 void setEdgeType(
Edge const *edge,
172 drawer::ParticleType type,
175 void refreshLinker();
178 void labelReady(std::string
const&);
181 Node* buildNode(qreal x = 0,
185 void deleteNode(
Node *&node);
186 void deleteEdge(
Edge *&edge);
188 QPointF getNodeLabelPos(
192 QPointF getEdgeLabelPos(
199 void setFocusOn(
size_t pos);
200 void move(qreal x, qreal y);
201 void keyPressEvent(QKeyEvent *event) ;
202 void keyReleaseEvent(QKeyEvent *event) ;
203 QPointF getCursorPos()
const;
204 void mouseMoveEvent(QMouseEvent *event) ;
205 void mousePressEvent(QMouseEvent *event) ;
206 void mouseReleaseEvent(QMouseEvent *event) ;
207 void mouseDoubleClickEvent(QMouseEvent *event) ;
208 void wheelEvent(QWheelEvent *event) ;
211 static constexpr qreal scaleForGraph = 100;
213 inline static const std::string defaultFileName =
"None";
222 std::vector<Node*> nodes;
223 std::vector<Edge*> edges;
224 QGraphicsScene *scene;
232 std::string outputPath =
".";
233 std::string saveFile = defaultFileName;
234 std::string exportFile = defaultFileName;
236 InteractiveMode mode;
243 class Proxy:
public QGraphicsProxyWidget {
250 :QGraphicsProxyWidget(),
258 void mouseMoveEvent(QGraphicsSceneMouseEvent *event)
override 260 QGraphicsItem::mouseMoveEvent(event);
263 void mousePressEvent(QGraphicsSceneMouseEvent *event)
override 265 QGraphicsItem::mousePressEvent(event);
268 void mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
override 270 QGraphicsItem::mouseReleaseEvent(event);
273 void dropEvent(QGraphicsSceneDragDropEvent *event)
override 275 QGraphicsItem::dropEvent(event);
278 void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
override;
282 void doubleClicked(
Proxy *);
Definition: latexLink.h:52
Definition: planargraph.h:169
Definition: latexcompiler.h:25
Definition: diagramrenderer.h:40
Definition: latexLink.h:116
Definition: diagram.h:243
Definition: mainwindow.h:33
Definition: mainwidget.h:34