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@95: #include "xlinkobj.h" insilmaril@0: insilmaril@0: class BranchObjPtrList : public QPtrList insilmaril@0: { insilmaril@0: virtual int compareItems (QPtrCollection::Item i, QPtrCollection::Item j); insilmaril@0: }; insilmaril@0: insilmaril@146: enum BranchModification {NewBranch, MovedBranch}; insilmaril@254: enum HideTmpMode {HideNone, HideExport}; insilmaril@146: insilmaril@0: ///////////////////////////////////////////////////////////////////////////// insilmaril@0: class BranchObj:public OrnamentedObj { insilmaril@0: public: insilmaril@0: BranchObj (); insilmaril@0: BranchObj (QCanvas*); insilmaril@0: BranchObj (QCanvas*, 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@95: 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@239: 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@334: 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@223: virtual void setDockPos(); insilmaril@0: virtual LinkableMapObj* findMapObj(QPoint,LinkableMapObj*); // find MapObj insilmaril@0: virtual void setHeading (QString); insilmaril@254: insilmaril@254: virtual void setHideTmp (HideTmpMode); insilmaril@254: virtual bool hasHiddenExportParent (BranchObj*); insilmaril@254: insilmaril@0: virtual QString saveToDir (const QString&,const QString&, const QPoint&);// Save data recursivly to tempdir insilmaril@95: virtual void addXLink (XLinkObj*); insilmaril@146: virtual void removeXLinkRef (XLinkObj*);// Remove ref in list insilmaril@146: virtual void deleteXLink (XLinkObj*); // remove references and delete XLinkObj insilmaril@95: virtual void deleteXLinkAt (int); // remove references and delete XLinkObj insilmaril@97: virtual XLinkObj* XLinkAt (int); // return reference of XLinkObj insilmaril@95: virtual int countXLink (); insilmaril@95: virtual BranchObj* XLinkTargetAt (int); insilmaril@169: void setIncludeImagesVer(bool); insilmaril@169: bool getIncludeImagesVer(); insilmaril@169: void setIncludeImagesHor(bool); insilmaril@169: bool getIncludeImagesHor(); insilmaril@169: 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@146: virtual void savePosInAngle(); // write pos in angle for resorting insilmaril@146: 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@83: virtual BranchObj* addBranchPtr(BranchObj*); // just adds pointer insilmaril@0: virtual BranchObj* insertBranch(int); insilmaril@0: virtual BranchObj* insertBranch(BranchObj*,int); insilmaril@83: virtual BranchObj* insertBranchPtr (BranchObj*,int); insilmaril@98: virtual void removeBranchHere(BranchObj*); insilmaril@98: virtual void removeChilds(); insilmaril@0: virtual void removeBranch(BranchObj*); insilmaril@83: 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@310: virtual bool canMoveBranchUp(); insilmaril@0: virtual BranchObj* moveBranchUp(BranchObj*); insilmaril@310: virtual bool canMoveBranchDown(); insilmaril@0: virtual BranchObj* moveBranchDown(BranchObj*); insilmaril@83: 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@0: QPtrList floatimage; // child images insilmaril@95: QPtrList 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@169: bool includeImagesVer; // include floatimages in bbox vertically insilmaril@169: bool includeImagesHor; // include floatimages in bbox horizontally insilmaril@169: insilmaril@0: }; insilmaril@0: insilmaril@0: insilmaril@0: #endif insilmaril@0: