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