mapeditor.h
author insilmaril
Wed, 09 Jun 2010 13:14:08 +0000
changeset 847 43268373032d
parent 841 46553c106c52
permissions -rw-r--r--
1.13.4 Various fixes
insilmaril@0
     1
#ifndef MAPEDITOR_H
insilmaril@0
     2
#define MAPEDITOR_H
insilmaril@0
     3
insilmaril@408
     4
#include <QGraphicsView>
insilmaril@726
     5
#include <QItemSelectionModel>
insilmaril@0
     6
insilmaril@837
     7
#include <QPropertyAnimation>	
insilmaril@767
     8
insilmaril@616
     9
#include "attribute.h"
insilmaril@847
    10
#include "xlink.h"
insilmaril@473
    11
#include "ornamentedobj.h"
insilmaril@366
    12
#include "settings.h"
insilmaril@645
    13
#include "vymmodel.h"
insilmaril@0
    14
insilmaril@119
    15
insilmaril@790
    16
class XLinkItem;
insilmaril@790
    17
insilmaril@486
    18
/*! \brief Main widget in vym to display and edit a map */
insilmaril@473
    19
insilmaril@767
    20
insilmaril@767
    21
class MapEditor : public QGraphicsView {	
insilmaril@0
    22
    Q_OBJECT
insilmaril@767
    23
	Q_PROPERTY(qreal zoomFactor READ getZoomFactor WRITE setZoomFactor)
insilmaril@767
    24
	Q_PROPERTY(QPointF scrollBarPos READ getScrollBarPos WRITE setScrollBarPos)
insilmaril@0
    25
insilmaril@0
    26
public:
insilmaril@720
    27
    MapEditor(VymModel *vm);
insilmaril@0
    28
	~MapEditor();
insilmaril@645
    29
	VymModel* getModel();
insilmaril@408
    30
	QGraphicsScene * getScene();
insilmaril@119
    31
insilmaril@767
    32
protected:
insilmaril@767
    33
	QPointF scrollBarPos;
insilmaril@767
    34
	QPointF scrollBarPosTarget;
insilmaril@837
    35
	QPropertyAnimation scrollBarPosAnimation;
insilmaril@767
    36
public:
insilmaril@772
    37
	void scrollTo (const QModelIndex &index);
insilmaril@767
    38
	void setScrollBarPosTarget (const QRectF &rect);	//!  ensureVisible of rect
insilmaril@767
    39
	QPointF getScrollBarPosTarget ();
insilmaril@767
    40
	void setScrollBarPos (const QPointF &p);
insilmaril@767
    41
	QPointF getScrollBarPos();
insilmaril@767
    42
insilmaril@767
    43
protected:
insilmaril@767
    44
	qreal zoomFactor;
insilmaril@767
    45
	qreal zoomFactorTarget;
insilmaril@837
    46
	QPropertyAnimation zoomAnimation;
insilmaril@767
    47
public:
insilmaril@767
    48
	void setZoomFactorTarget (const qreal &zf);
insilmaril@767
    49
	qreal getZoomFactorTarget();
insilmaril@767
    50
	void setZoomFactor (const qreal &zf);
insilmaril@767
    51
	qreal getZoomFactor();
insilmaril@767
    52
insilmaril@0
    53
public:
insilmaril@491
    54
    void print();				//!< Print the map
insilmaril@784
    55
	QRectF getTotalBBox();		//!< Bounding box of all items in map
insilmaril@819
    56
	QImage getImage ();			//!< Get a pixmap of the map
insilmaril@491
    57
	void setAntiAlias (bool);	//!< Set or unset antialiasing
insilmaril@491
    58
	void setSmoothPixmap(bool); //!< Set or unset smoothing of pixmaps
insilmaril@837
    59
public slots:	
insilmaril@834
    60
	void autoLayout();			//!< Auto layout of map by using collision detection
insilmaril@0
    61
public:
insilmaril@754
    62
	TreeItem *findMapItem (QPointF p,TreeItem *exclude);	//! find item in map at position p. Ignore item exclude 
insilmaril@514
    63
insilmaril@784
    64
	AttributeTable* attributeTable();	// FIXME-3
insilmaril@723
    65
    void testFunction1();				// just testing new stuff
insilmaril@723
    66
    void testFunction2();				// just testing new stuff
insilmaril@0
    67
insilmaril@787
    68
protected:	
insilmaril@787
    69
	BranchItem* getBranchDirectAbove(BranchItem *bi);	//!  get branch direct above bi (in TreeView) 
insilmaril@787
    70
	BranchItem* getBranchAbove(BranchItem *bi);			//! get branch above bi (in TreeView) 
insilmaril@787
    71
	BranchItem* getBranchDirectBelow(BranchItem *bi);	//!  bet branch direct below bi (in TreeView)
insilmaril@787
    72
	BranchItem* getBranchBelow(BranchItem *bi);			//! bet branch below bi (in TreeView)
insilmaril@787
    73
	BranchItem* getLeftBranch(BranchItem *bi);			//! bet branch left of bi (in TreeView)
insilmaril@787
    74
	BranchItem* getRightBranch(BranchItem *bi);			//! bet branch right of bi (in TreeView)
insilmaril@787
    75
insilmaril@720
    76
public slots:
insilmaril@769
    77
	void cursorUp();
insilmaril@769
    78
	void cursorDown();
insilmaril@769
    79
	void cursorLeft();
insilmaril@769
    80
	void cursorRight();
insilmaril@769
    81
	void cursorFirst();
insilmaril@769
    82
	void cursorLast();
insilmaril@720
    83
	void editHeading();
insilmaril@720
    84
	void editHeadingFinished();
insilmaril@720
    85
private:
insilmaril@720
    86
	bool editingHeading;
insilmaril@720
    87
	QLineEdit *lineEdit;
insilmaril@720
    88
insilmaril@0
    89
protected:
insilmaril@408
    90
	virtual void contextMenuEvent ( QContextMenuEvent *e );
insilmaril@398
    91
    virtual void keyPressEvent(QKeyEvent*);
insilmaril@398
    92
    virtual void keyReleaseEvent(QKeyEvent*);
insilmaril@408
    93
    virtual void mousePressEvent(QMouseEvent*);
insilmaril@473
    94
    virtual void mouseMoveEvent(QMouseEvent*);
insilmaril@408
    95
    virtual void mouseReleaseEvent(QMouseEvent*);
insilmaril@408
    96
    virtual void mouseDoubleClickEvent(QMouseEvent*);
insilmaril@847
    97
    virtual void wheelEvent(QWheelEvent*);
insilmaril@847
    98
insilmaril@473
    99
    virtual void resizeEvent( QResizeEvent * );
insilmaril@0
   100
insilmaril@417
   101
	void dragEnterEvent (QDragEnterEvent *);
insilmaril@417
   102
	void dragMoveEvent (QDragMoveEvent *);
insilmaril@417
   103
	void dragLeaveEvent (QDragLeaveEvent *);
insilmaril@417
   104
	void dropEvent (QDropEvent *);
insilmaril@412
   105
insilmaril@473
   106
insilmaril@0
   107
private:
insilmaril@408
   108
	QGraphicsScene *mapScene;
insilmaril@723
   109
	VymModel *model;			//!< Vym Map, includding several mapCenters
insilmaril@0
   110
insilmaril@0
   111
	bool adjustCanvasRequested;	// collect requests until end of user event
insilmaril@0
   112
	BranchObj *editingBO;		// entering Text into BO
insilmaril@0
   113
insilmaril@398
   114
    QCursor HandOpenCursor;		// cursor while moving canvas view
insilmaril@398
   115
	QCursor PickColorCursor;	// cursor while picking color 
insilmaril@398
   116
	QCursor CopyCursor;			// cursor while picking color 
insilmaril@398
   117
	QCursor XLinkCursor;		// cursor while picking color 
insilmaril@83
   118
	bool pickingColor;
insilmaril@83
   119
	bool drawingLink;			// true while creating a link
insilmaril@798
   120
	bool copyingObj;			// true while modModeCopy
insilmaril@798
   121
	bool objectMoved;			// true if object was not clicked, but moved with mouse
insilmaril@847
   122
	Link* tmpLink;
insilmaril@366
   123
insilmaril@720
   124
	MapObj* movingObj;				// moving a MapObj
insilmaril@408
   125
    QPointF movingObj_orgPos;		// org. pos of mouse before move
insilmaril@408
   126
    QPointF movingObj_orgRelPos;	// org. relative pos of mouse before move
insilmaril@408
   127
    QPointF movingObj_start;		// rel. pos of mouse to absPos 
insilmaril@408
   128
    QPointF movingCont_start;		// inital pos of moving Content or
insilmaril@408
   129
    QPointF movingVec;				// how far has Content moved
insilmaril@684
   130
insilmaril@720
   131
	QPointF contextMenuPos;			// position where context event was triggered
insilmaril@684
   132
insilmaril@0
   133
    QPrinter* printer;				// Printing
insilmaril@0
   134
insilmaril@628
   135
	AttributeTable *attrTable;
insilmaril@628
   136
insilmaril@0
   137
	bool printFrame;			// Print frame around map
insilmaril@0
   138
	bool printFooter;			// Print footer below map
insilmaril@0
   139
insilmaril@720
   140
	QPoint exportOffset;		// set before export, used in save
insilmaril@0
   141
insilmaril@728
   142
//////////// Selection related
insilmaril@728
   143
signals:
insilmaril@729
   144
	void selectionChanged(const QItemSelection &, const QItemSelection &);
insilmaril@728
   145
insilmaril@726
   146
private:	
insilmaril@728
   147
	QList <QGraphicsRectItem*> selboxList;
insilmaril@728
   148
	QColor selectionColor;
insilmaril@728
   149
insilmaril@728
   150
public slots:
insilmaril@776
   151
	void updateSelection(QItemSelection ,QItemSelection); // update selection
insilmaril@753
   152
	void updateData (const QModelIndex&); // update data
insilmaril@728
   153
public:
insilmaril@728
   154
	void setSelectionColor (QColor c);
insilmaril@728
   155
	QColor getSelectionColor ();
insilmaril@0
   156
};
insilmaril@0
   157
#endif
insilmaril@0
   158