]> git.sven.stormbind.net Git - sven/vym.git/blobdiff - src/xlink.h
New upstream version 2.9.22
[sven/vym.git] / src / xlink.h
diff --git a/src/xlink.h b/src/xlink.h
new file mode 100644 (file)
index 0000000..66f0fb5
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef LINK_H
+#define LINK_H
+
+#include <QColor>
+#include <QPen>
+
+#include "xmlobj.h"
+
+class QPointF;
+class QGraphicsScene;
+class QString;
+
+class BranchItem;
+class MapObj;
+class LinkableMapObj;
+class VymModel;
+class XLinkItem;
+class XLinkObj;
+
+class Link : public XMLObj {
+  public:
+    enum XLinkState { undefinedXLink, initXLink, activeXLink, deleteXLink };
+    enum LinkType { Linear, Bezier };
+
+    Link(VymModel *m);
+    virtual ~Link();
+    virtual void init();
+    VymModel *getModel();
+    void setBeginBranch(BranchItem *);
+    BranchItem *getBeginBranch();
+    void setEndBranch(BranchItem *);
+    void setEndPoint(QPointF);
+    BranchItem *getEndBranch();
+    void setBeginLinkItem(XLinkItem *);
+    XLinkItem *getBeginLinkItem();
+    void setEndLinkItem(XLinkItem *);
+    XLinkItem *getEndLinkItem();
+    XLinkItem *getOtherEnd(XLinkItem *);
+    void setPen(const QPen &p);
+    QPen getPen();
+    void setLinkType(const QString &s);
+    void setStyleBegin(const QString &s);
+    QString getStyleBeginString();
+    void setStyleEnd(const QString &s);
+    QString getStyleEndString();
+    bool activate();
+    void deactivate();
+    XLinkState getState();
+    void removeXLinkItem(XLinkItem *xli);
+    void updateLink();
+    QString saveToDir();
+    XLinkObj *getXLinkObj();
+    XLinkObj *createMapObj();
+    MapObj *getMO();
+
+  private:
+    XLinkState xLinkState; // init during drawing or active
+    LinkType type;
+    QPen pen;
+
+    XLinkObj *xlo;
+    VymModel *model;
+
+    BranchItem *beginBranch;
+    BranchItem *endBranch;
+    XLinkItem *beginLinkItem;
+    XLinkItem *endLinkItem;
+};
+
+#endif