#ifndef __PROG_DATA__ #define __PROG_DATA__ #include #include #include #include class Area; class Source; class Target; class Connection; class Field; class Area : public QGraphicsRectItem { // attribute Title private: QString Title; public: QString getTitle () { return Title; } void setTitle (QString p_value); // list Items private: Area * firstItem; Area * lastItem; Area * prevItem; Area * nextItem; Area * aboveArea; protected: void linkItem (Area * item, Area * bef, Area * aft); public: Area * getFirstItem () { return firstItem; } Area * getLastItem () { return lastItem; } Area * getPrevItem () { return prevItem; } Area * getNextItem () { return nextItem; } Area * getAboveArea () { return aboveArea; } void insertFirstItem (Area * item); void insertLastItem (Area * item); void insertPrevItem (Area * item); void insertNextItem (Area * item); void removeItem (); void removeAllItems (); // list Sources private: Source * firstSource; Source * lastSource; protected: void linkSource (Source * item, Source * bef, Source * aft); public: Source * getFirstSource () { return firstSource; } Source * getLastSource () { return lastSource; } void insertFirstSource (Source * item); void insertLastSource (Source * item); void removeAllSources (); // list Targets private: Target * firstTarget; Target * lastTarget; protected: void linkTarget (Target * item, Target * bef, Target * aft); public: Target * getFirstTarget () { return firstTarget; } Target * getLastTarget () { return lastTarget; } void insertFirstTarget (Target * item); void insertLastTarget (Target * item); void removeAllTargets (); // list Fields private: Field * firstField; Field * lastField; protected: void linkField (Field * item, Field * bef, Field * aft); public: Field * getFirstField () { return firstField; } Field * getLastField () { return lastField; } void insertFirstField (Field * item); void insertLastField (Field * item); void removeAllFields (); // user declarations private: void initialize (); void connected (); void disconnected (); public: void addArea (Area * a) { insertLastItem (a); } void addSource (Source * s) { insertLastSource (s); } void addTarget (Target * t) { insertLastTarget (t); } void addField (Field * f) { insertLastField (f); } void initializeTopLevel (); void updateConnections (); void updateTargets (Area * target_area); virtual QVariant itemChange (GraphicsItemChange change, const QVariant & value); protected: void dragEnterEvent (QGraphicsSceneDragDropEvent * event); void dropEvent (QGraphicsSceneDragDropEvent * event); public: virtual ~Area (); Area (); public: friend class Source; friend class Target; friend class Field; }; class Source : public QGraphicsRectItem { // list Connections private: Connection * firstConnection; Connection * lastConnection; protected: void linkConnection (Connection * item, Connection * bef, Connection * aft); public: Connection * getFirstConnection () { return firstConnection; } Connection * getLastConnection () { return lastConnection; } void insertFirstConnection (Connection * item); void insertLastConnection (Connection * item); void removeAllConnections (); // list Sources private: Source * prevSource; Source * nextSource; Area * area; public: Source * getPrevSource () { return prevSource; } Source * getNextSource () { return nextSource; } Area * getArea () { return area; } void insertPrevSource (Source * item); void insertNextSource (Source * item); void removeSource (); // user declarations private: void initialize (); void connected (); void disconnected (); public: virtual ~Source (); Source (); public: friend class Area; friend class Connection; }; class Target : public QGraphicsRectItem { // list Targets private: Target * prevTarget; Target * nextTarget; Area * area; public: Target * getPrevTarget () { return prevTarget; } Target * getNextTarget () { return nextTarget; } Area * getArea () { return area; } void insertPrevTarget (Target * item); void insertNextTarget (Target * item); void removeTarget (); // user declarations private: void initialize (); void connected (); void disconnected (); public: virtual ~Target (); Target (); public: friend class Area; }; class Connection { // attribute target private: Target * target; public: Target * getTarget () { return target; } void setTarget (Target * p_value); // list Connections private: Connection * prevConnection; Connection * nextConnection; Source * source; public: Connection * getPrevConnection () { return prevConnection; } Connection * getNextConnection () { return nextConnection; } Source * getSource () { return source; } void insertPrevConnection (Connection * item); void insertNextConnection (Connection * item); void removeConnection (); // user declarations public: void setSource (Source * src) { src->insertLastConnection (this); } private: void initialize (); void connected (); void disconnected (); QGraphicsItemGroup * group; qreal x1; qreal y1; QPen pen; void addLine (qreal x2, qreal y2); void horizLine (qreal x2); void vertLine (qreal y2); public: void updateConnection (); public: virtual ~Connection (); Connection (); public: friend class Source; }; class Field { // attribute Name private: QString Name; public: QString getName () { return Name; } void setName (QString p_value); // attribute Value private: QString Value; public: QString getValue () { return Value; } void setValue (QString p_value); // list Fields private: Field * prevField; Field * nextField; Area * aboveArea; public: Field * getPrevField () { return prevField; } Field * getNextField () { return nextField; } Area * getAboveArea () { return aboveArea; } void insertPrevField (Field * item); void insertNextField (Field * item); void removeField (); // user declarations public: virtual QString getText (); virtual void setText (QString txt); virtual bool ReadOnly (); virtual bool DialogEnabled (); virtual void DialogExecute (); virtual bool ListEnabled (); virtual int ListCount (); virtual QString ListValue (int inx); virtual void ListClick (int inx); public: virtual ~Field (); Field (); public: friend class Area; }; #endif /* __PROG_DATA__ */