insilmaril@0: #ifndef BRANCHOBJ_H insilmaril@0: #define BRANCHOBJ_H insilmaril@0: insilmaril@0: #include "floatimageobj.h" insilmaril@0: #include "linkablemapobj.h" insilmaril@0: #include "ornamentedobj.h" insilmaril@2: #include "xlinkobj.h" insilmaril@2: //Added by qt3to4: insilmaril@2: #include insilmaril@0: insilmaril@2: class BranchObjPtrList : public Q3PtrList insilmaril@0: { insilmaril@2: virtual int compareItems (Q3PtrCollection::Item i, Q3PtrCollection::Item j); insilmaril@0: }; insilmaril@0: insilmaril@2: enum BranchModification {NewBranch, MovedBranch}; insilmaril@2: enum HideTmpMode {HideNone, HideExport}; insilmaril@2: insilmaril@0: ///////////////////////////////////////////////////////////////////////////// insilmaril@0: class BranchObj:public OrnamentedObj { insilmaril@0: public: insilmaril@0: BranchObj (); insilmaril@2: BranchObj (Q3Canvas*); insilmaril@2: BranchObj (Q3Canvas*, LinkableMapObj* parent); insilmaril@0: ~BranchObj (); insilmaril@0: bool operator< ( const BranchObj & ); insilmaril@0: bool operator== ( const BranchObj & ); insilmaril@0: virtual void init (); insilmaril@0: virtual void copy (BranchObj*); insilmaril@0: void clear(); insilmaril@0: virtual int getNum(); // return number of this in parent insilmaril@0: virtual int getNum(BranchObj*); // return number of this in parent insilmaril@0: virtual int getFloatImageNum(FloatImageObj*); insilmaril@0: virtual int countBranches(); insilmaril@0: virtual int countFloatImages(); insilmaril@2: virtual int countXLinks(); insilmaril@0: virtual void setParObjTmp (LinkableMapObj*,QPoint,int);// Only for moving Obj around insilmaril@0: virtual void unsetParObjTmp(); // reuse original ParObj insilmaril@0: insilmaril@0: virtual void unScroll(); insilmaril@0: virtual void toggleScroll(); // scroll or unscroll insilmaril@0: virtual bool isScrolled(); // returns scroll state insilmaril@0: virtual bool hasScrolledParent(BranchObj*); // true, if any of the parents is scrolled insilmaril@0: virtual void tmpUnscroll(); // unscroll scrolled parents temporary e.g. during "find" process insilmaril@0: virtual void resetTmpUnscroll(); // scroll all tmp scrolled parents again e.g. when unselecting insilmaril@0: insilmaril@0: virtual void setVisibility(bool,int); // set visibility insilmaril@0: virtual void setVisibility(bool); // set vis. for w insilmaril@0: virtual void setLinkColor(); // set the color of link insilmaril@2: virtual void setColorChilds(QColor); // set the color of heading insilmaril@0: insilmaril@0: BranchObj* first (); // set Iterator to first LMO insilmaril@0: BranchObj* next (); // find next LMO after given one insilmaril@0: BranchObj* getLastIterator(); // to interrupt and resume next iteration insilmaril@0: void setLastIterator (BranchObj*); // needed by next() insilmaril@0: insilmaril@2: virtual void positionContents(); insilmaril@0: virtual void move (double x,double y); insilmaril@0: virtual void move (QPoint); insilmaril@0: virtual void moveBy (double x,double y); insilmaril@0: virtual void moveBy (QPoint); insilmaril@0: virtual void positionBBox(); insilmaril@0: virtual void calcBBoxSize(); insilmaril@2: virtual void setDockPos(); insilmaril@0: virtual LinkableMapObj* findMapObj(QPoint,LinkableMapObj*); // find MapObj insilmaril@0: virtual void setHeading (QString); insilmaril@2: insilmaril@2: virtual void setHideTmp (HideTmpMode); insilmaril@2: virtual bool hasHiddenExportParent (BranchObj*); insilmaril@2: insilmaril@0: virtual QString saveToDir (const QString&,const QString&, const QPoint&);// Save data recursivly to tempdir insilmaril@2: virtual void addXLink (XLinkObj*); insilmaril@2: virtual void removeXLinkRef (XLinkObj*);// Remove ref in list insilmaril@2: virtual void deleteXLink (XLinkObj*); // remove references and delete XLinkObj insilmaril@2: virtual void deleteXLinkAt (int); // remove references and delete XLinkObj insilmaril@2: virtual XLinkObj* XLinkAt (int); // return reference of XLinkObj insilmaril@2: virtual int countXLink (); insilmaril@2: virtual BranchObj* XLinkTargetAt (int); insilmaril@2: void setIncludeImagesVer(bool); insilmaril@2: bool getIncludeImagesVer(); insilmaril@2: void setIncludeImagesHor(bool); insilmaril@2: bool getIncludeImagesHor(); insilmaril@2: QString getIncludeImageAttr(); insilmaril@0: virtual LinkableMapObj* addFloatImage(); insilmaril@0: virtual LinkableMapObj* addFloatImage(FloatImageObj*); insilmaril@0: virtual void removeFloatImage(FloatImageObj*); insilmaril@0: virtual FloatImageObj* getFirstFloatImage(); insilmaril@0: virtual FloatImageObj* getLastFloatImage(); insilmaril@0: virtual FloatImageObj* getFloatImageNum(const uint &); insilmaril@0: protected: insilmaril@2: virtual void savePosInAngle(); // write pos in angle for resorting insilmaril@2: virtual void setDefAttr (BranchModification); // set default attributes (font, size, ...) insilmaril@0: public: insilmaril@0: virtual BranchObj* addBranch(); insilmaril@0: virtual BranchObj* addBranch(BranchObj*); // makes deep copy of BranchObj insilmaril@2: virtual BranchObj* addBranchPtr(BranchObj*); // just adds pointer insilmaril@0: virtual BranchObj* insertBranch(int); insilmaril@0: virtual BranchObj* insertBranch(BranchObj*,int); insilmaril@2: virtual BranchObj* insertBranchPtr (BranchObj*,int); insilmaril@2: virtual void removeBranchHere(BranchObj*); insilmaril@2: virtual void removeChilds(); insilmaril@0: virtual void removeBranch(BranchObj*); insilmaril@2: virtual void removeBranchPtr (BranchObj*); insilmaril@0: virtual void setLastSelectedBranch(BranchObj*); insilmaril@0: virtual BranchObj* getLastSelectedBranch(); insilmaril@0: virtual BranchObj* getFirstBranch(); insilmaril@0: virtual BranchObj* getLastBranch(); insilmaril@0: virtual BranchObj* getBranchNum(const uint &); insilmaril@2: virtual bool canMoveBranchUp(); insilmaril@0: virtual BranchObj* moveBranchUp(BranchObj*); insilmaril@2: virtual bool canMoveBranchDown(); insilmaril@0: virtual BranchObj* moveBranchDown(BranchObj*); insilmaril@2: virtual BranchObj* moveBranchTo (BranchObj*, int); insilmaril@0: virtual void alignRelativeTo(const QPoint ); insilmaril@0: virtual void reposition(); insilmaril@0: insilmaril@0: virtual QRect getTotalBBox(); // return BBox including childs insilmaril@0: virtual QRect getBBoxSizeWithChilds(); // return size of BBox including childs insilmaril@0: virtual void calcBBoxSizeWithChilds(); // calc size of BBox including childs recursivly insilmaril@0: insilmaril@0: virtual void select(); insilmaril@0: virtual void unselect(); insilmaril@0: virtual QString getSelectString(); insilmaril@0: insilmaril@0: protected: insilmaril@0: static BranchObj* itLast; // iterator for first(), next() insilmaril@0: BranchObjPtrList branch; // all child branches insilmaril@2: Q3PtrList floatimage; // child images insilmaril@2: Q3PtrList xlink; // xlinks to other branches insilmaril@0: public: insilmaril@0: float angle; // used in mainbranch to reorder mainbranches insilmaril@0: protected: insilmaril@0: int lastSelectedBranch; // for going deeper into tree insilmaril@0: bool scrolled; // true if all childs are scrolled and thus invisible insilmaril@0: bool tmpUnscrolled; // can only be true (temporary) for a scrolled subtree insilmaril@2: bool includeImagesVer; // include floatimages in bbox vertically insilmaril@2: bool includeImagesHor; // include floatimages in bbox horizontally insilmaril@2: insilmaril@0: }; insilmaril@0: insilmaril@0: insilmaril@0: #endif insilmaril@0: