branchobj.h
author insilmaril
Mon, 27 Apr 2009 12:07:15 +0000
changeset 756 a8a5c7288f57
parent 755 ed5b407975b3
child 760 59614eaf5fbb
permissions -rw-r--r--
relinking branches and removing branches works
     1 #ifndef BRANCHOBJ_H
     2 #define BRANCHOBJ_H
     3 
     4 #include "floatimageobj.h"
     5 #include "linkablemapobj.h"
     6 #include "ornamentedobj.h"
     7 #include "xlinkobj.h"
     8 
     9 
    10 bool isAbove(BranchObj*,BranchObj*);
    11 
    12 /*! \brief A branch visible in the map */
    13 
    14 /////////////////////////////////////////////////////////////////////////////
    15 class BranchObj:public OrnamentedObj {
    16 public:
    17 	/*! New branches will get use same color for heading as parent */
    18 	enum BranchModification {NewBranch, MovedBranch};
    19 
    20 
    21     BranchObj ();
    22     BranchObj (QGraphicsScene*);
    23     BranchObj (QGraphicsScene*, LinkableMapObj* parent);
    24     ~BranchObj ();
    25 	bool operator< ( const BranchObj & );
    26 	bool operator== ( const BranchObj & );
    27     virtual void init ();
    28     virtual void copy (BranchObj*);
    29     void clear();
    30 
    31     virtual void setParObjTmp (LinkableMapObj*,QPointF,int);// Only for moving Obj around
    32 	virtual void unsetParObjTmp();			// reuse original ParObj
    33 
    34 	virtual void setVisibility(bool,int);	// set visibility
    35     virtual void setVisibility(bool);	    // set vis. for w
    36 	virtual void setLinkColor();			// set the color of link
    37 	virtual void setColorSubtree(QColor);	// set the color of heading
    38 
    39 	virtual void updateContentSize();
    40 	virtual void positionContents();
    41     virtual void move (double x,double y);
    42     virtual void move (QPointF);
    43     virtual void moveBy (double x,double y);
    44     virtual void moveBy (QPointF);
    45     virtual void positionBBox();
    46     virtual void calcBBoxSize();
    47 	virtual void setDockPos();
    48     
    49     virtual void updateHeading ();
    50 
    51 	virtual QString saveToDir (const QString&,const QString&, const QPointF&);// Save data recursivly to tempdir
    52 
    53 	virtual void addXLink (XLinkObj*);
    54 	virtual void removeXLinkRef (XLinkObj*);// Remove ref in list
    55 	virtual void deleteXLink (XLinkObj*);	// remove references and delete XLinkObj 
    56 	virtual void deleteXLinkAt (int);		// remove references and delete XLinkObj 
    57 	virtual XLinkObj* XLinkAt (int);		// return reference of XLinkObj 
    58 	virtual BranchObj* XLinkTargetAt (int);
    59 
    60 	void setIncludeImagesVer(bool);
    61 	bool getIncludeImagesVer();
    62 	void setIncludeImagesHor(bool);
    63 	bool getIncludeImagesHor();
    64 	QString getIncludeImageAttr();
    65 
    66 	virtual FloatImageObj* addFloatImage();
    67 	virtual FloatImageObj* addFloatImage(FloatImageObj*);
    68 	virtual void removeFloatImage(FloatImageObj*);
    69     virtual FloatImageObj* getFirstFloatImage();
    70     virtual FloatImageObj* getLastFloatImage();
    71 	virtual FloatImageObj* getFloatImageNum(const uint &);
    72 protected:	
    73 	virtual void savePosInAngle();					// write pos in angle for resorting			
    74 public:	
    75 	virtual void setDefAttr (BranchModification);	// set default attributes (font, size, ...)
    76     virtual BranchObj* addBranch();
    77     virtual BranchObj* addBranch(BranchObj*);		// makes deep copy of BranchObj
    78     virtual BranchObj* addBranchPtr(BranchObj*);	// just adds pointer
    79     virtual BranchObj* insertBranch(int);
    80     virtual BranchObj* insertBranch(BranchObj*,int);
    81     virtual BranchObj* insertBranchPtr (BranchObj*,int);
    82     virtual void removeBranchHere(BranchObj*);  
    83     virtual void removeChildren();  
    84     virtual void removeBranch(BranchObj*);  
    85     virtual void removeBranchPtr (BranchObj*);  
    86 
    87     virtual bool canMoveBranchUp();
    88     virtual BranchObj* moveBranchUp(BranchObj*);
    89     virtual bool canMoveBranchDown();
    90     virtual BranchObj* moveBranchDown(BranchObj*);
    91 
    92     virtual void sortChildren();
    93     virtual BranchObj* linkTo (BranchObj*, int);
    94     virtual void alignRelativeTo(const QPointF, bool alignSelf=false );
    95 	virtual void reposition();
    96 	virtual void unsetAllRepositionRequests();
    97 
    98 	virtual QPolygonF shape();				//!< Returns arbitrary bounding polygon
    99 	virtual QRectF getTotalBBox();			// return BBox including children			
   100 	virtual QRectF getBBoxSizeWithChildren();	// return size of BBox including children  
   101 	virtual void calcBBoxSizeWithChildren();	// calc size of  BBox including children recursivly
   102 
   103 	virtual QString getSelectString();
   104 	virtual void setAnimation(const AnimPoint &ap);
   105 	virtual bool animate();
   106 
   107 protected:
   108 	QList<FloatImageObj*> floatimage;// child images
   109 	QList<XLinkObj*> xlink;			// xlinks to other branches
   110 
   111 	AnimPoint anim;
   112 
   113 public:	
   114 	float angle;					// used in mainbranch to reorder mainbranches
   115 protected:	
   116 //	bool scrolled;					// true if all children are scrolled and thus invisible
   117 //	bool tmpUnscrolled;				// can only be true (temporary) for a scrolled subtree
   118 	bool includeImagesVer;			// include floatimages in bbox vertically
   119 	bool includeImagesHor;			// include floatimages in bbox horizontally
   120 };
   121 
   122 
   123 #endif
   124