]> git.sven.stormbind.net Git - sven/vym.git/blob - xlink.h
a4eec26f2d890ce22b3e3be96b09fb12d25003fc
[sven/vym.git] / xlink.h
1 #ifndef LINK_H
2 #define LINK_H
3
4 #include <QColor>
5 #include <QPen>
6
7 #include "xmlobj.h"
8
9 class QPointF;
10 class QGraphicsScene;
11 class QString;
12
13 class BranchItem;
14 class MapObj;
15 class LinkableMapObj;
16 class VymModel;
17 class XLinkItem;
18 class XLinkObj;
19
20
21 class Link:public XMLObj
22 {
23 public:
24     enum XLinkState {undefinedXLink,initXLink,activeXLink,deleteXLink}; 
25     enum LinkType {Linear, Bezier};
26
27     Link (VymModel *m);
28     virtual ~Link();
29     virtual void init ();
30     VymModel* getModel();
31     void setBeginBranch (BranchItem*);
32     BranchItem* getBeginBranch();
33     void setEndBranch   (BranchItem*);
34     void setEndPoint(QPointF);
35     BranchItem* getEndBranch();
36     void setBeginLinkItem (XLinkItem*);
37     XLinkItem* getBeginLinkItem();
38     void setEndLinkItem (XLinkItem*);
39     XLinkItem* getEndLinkItem ();
40     XLinkItem* getOtherEnd (XLinkItem*);
41     void setPen (const QPen &p);
42     QPen getPen();
43     void setLinkType (const QString &s);
44     void setStyleBegin( const QString &s);
45     QString  getStyleBeginString();
46     void setStyleEnd( const QString &s);
47     QString  getStyleEndString();
48     bool activate ();           
49     void deactivate ();         
50     XLinkState getState();
51     void removeXLinkItem (XLinkItem *xli);
52     void updateLink();
53     QString saveToDir ();
54     XLinkObj* getXLinkObj();
55     XLinkObj* createMapObj();
56     MapObj* getMO();
57
58 private:
59     XLinkState xLinkState;  // init during drawing or active
60     LinkType type;
61     QPen pen;
62
63     XLinkObj *xlo;
64     VymModel *model;
65
66     BranchItem *beginBranch;
67     BranchItem *endBranch;
68     XLinkItem *beginLinkItem;
69     XLinkItem *endLinkItem;
70 };
71
72
73 #endif
74