mapeditor.h
author insilmaril
Wed, 20 May 2009 15:40:14 +0000
changeset 772 e3f722759c7e
parent 769 a6931cd6309a
child 775 6e4b586aa88a
permissions -rw-r--r--
Fixed segfault when closing a map
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@767
     7
#include <QtPropertyAnimation>	//! Not yet officially in Qt!
insilmaril@767
     8
insilmaril@616
     9
#include "attribute.h"
insilmaril@473
    10
#include "ornamentedobj.h"
insilmaril@366
    11
#include "settings.h"
insilmaril@645
    12
#include "vymmodel.h"
insilmaril@0
    13
insilmaril@119
    14
insilmaril@486
    15
/*! \brief Main widget in vym to display and edit a map */
insilmaril@473
    16
insilmaril@767
    17
insilmaril@767
    18
class MapEditor : public QGraphicsView {	
insilmaril@0
    19
    Q_OBJECT
insilmaril@767
    20
	Q_PROPERTY(qreal zoomFactor READ getZoomFactor WRITE setZoomFactor)
insilmaril@767
    21
	Q_PROPERTY(QPointF scrollBarPos READ getScrollBarPos WRITE setScrollBarPos)
insilmaril@0
    22
insilmaril@0
    23
public:
insilmaril@720
    24
    MapEditor(VymModel *vm);
insilmaril@0
    25
	~MapEditor();
insilmaril@645
    26
	VymModel* getModel();
insilmaril@408
    27
	QGraphicsScene * getScene();
insilmaril@119
    28
insilmaril@767
    29
protected:
insilmaril@767
    30
	QPointF scrollBarPos;
insilmaril@767
    31
	QPointF scrollBarPosTarget;
insilmaril@767
    32
	QtPropertyAnimation scrollBarPosAnimation;
insilmaril@767
    33
public:
insilmaril@772
    34
	void scrollTo (const QModelIndex &index);
insilmaril@767
    35
	void setScrollBarPosTarget (const QRectF &rect);	//!  ensureVisible of rect
insilmaril@767
    36
	QPointF getScrollBarPosTarget ();
insilmaril@767
    37
	void setScrollBarPos (const QPointF &p);
insilmaril@767
    38
	QPointF getScrollBarPos();
insilmaril@767
    39
insilmaril@767
    40
protected:
insilmaril@767
    41
	qreal zoomFactor;
insilmaril@767
    42
	qreal zoomFactorTarget;
insilmaril@767
    43
	QtPropertyAnimation zoomAnimation;
insilmaril@767
    44
public:
insilmaril@767
    45
	void setZoomFactorTarget (const qreal &zf);
insilmaril@767
    46
	qreal getZoomFactorTarget();
insilmaril@767
    47
	void setZoomFactor (const qreal &zf);
insilmaril@767
    48
	qreal getZoomFactor();
insilmaril@767
    49
insilmaril@0
    50
public:
insilmaril@491
    51
    void print();				//!< Print the map
insilmaril@491
    52
	void setAntiAlias (bool);	//!< Set or unset antialiasing
insilmaril@491
    53
	void setSmoothPixmap(bool); //!< Set or unset smoothing of pixmaps
insilmaril@0
    54
public:
insilmaril@754
    55
	TreeItem *findMapItem (QPointF p,TreeItem *exclude);	//! find item in map at position p. Ignore item exclude 
insilmaril@514
    56
insilmaril@628
    57
	AttributeTable* attributeTable();
insilmaril@723
    58
    void testFunction1();				// just testing new stuff
insilmaril@723
    59
    void testFunction2();				// just testing new stuff
insilmaril@0
    60
insilmaril@720
    61
public slots:
insilmaril@769
    62
	void cursorUp();
insilmaril@769
    63
	void cursorDown();
insilmaril@769
    64
	void cursorLeft();
insilmaril@769
    65
	void cursorRight();
insilmaril@769
    66
	void cursorFirst();
insilmaril@769
    67
	void cursorLast();
insilmaril@720
    68
	void editHeading();
insilmaril@720
    69
	void editHeadingFinished();
insilmaril@720
    70
private:
insilmaril@720
    71
	bool editingHeading;
insilmaril@720
    72
	QLineEdit *lineEdit;
insilmaril@720
    73
insilmaril@0
    74
protected:
insilmaril@408
    75
	virtual void contextMenuEvent ( QContextMenuEvent *e );
insilmaril@398
    76
    virtual void keyPressEvent(QKeyEvent*);
insilmaril@398
    77
    virtual void keyReleaseEvent(QKeyEvent*);
insilmaril@408
    78
    virtual void mousePressEvent(QMouseEvent*);
insilmaril@473
    79
    virtual void mouseMoveEvent(QMouseEvent*);
insilmaril@408
    80
    virtual void mouseReleaseEvent(QMouseEvent*);
insilmaril@408
    81
    virtual void mouseDoubleClickEvent(QMouseEvent*);
insilmaril@473
    82
    virtual void resizeEvent( QResizeEvent * );
insilmaril@0
    83
insilmaril@417
    84
	void dragEnterEvent (QDragEnterEvent *);
insilmaril@417
    85
	void dragMoveEvent (QDragMoveEvent *);
insilmaril@417
    86
	void dragLeaveEvent (QDragLeaveEvent *);
insilmaril@417
    87
	void dropEvent (QDropEvent *);
insilmaril@412
    88
insilmaril@473
    89
insilmaril@0
    90
private:
insilmaril@408
    91
	QGraphicsScene *mapScene;
insilmaril@723
    92
	VymModel *model;			//!< Vym Map, includding several mapCenters
insilmaril@0
    93
insilmaril@0
    94
	bool adjustCanvasRequested;	// collect requests until end of user event
insilmaril@0
    95
	BranchObj *editingBO;		// entering Text into BO
insilmaril@0
    96
insilmaril@398
    97
    QCursor HandOpenCursor;		// cursor while moving canvas view
insilmaril@398
    98
	QCursor PickColorCursor;	// cursor while picking color 
insilmaril@398
    99
	QCursor CopyCursor;			// cursor while picking color 
insilmaril@398
   100
	QCursor XLinkCursor;		// cursor while picking color 
insilmaril@83
   101
	bool pickingColor;
insilmaril@83
   102
	bool drawingLink;			// true while creating a link
insilmaril@93
   103
	bool copyingObj;			// true while creating a link
insilmaril@95
   104
	XLinkObj* tmpXLink;
insilmaril@366
   105
insilmaril@720
   106
	MapObj* movingObj;				// moving a MapObj
insilmaril@83
   107
	MapObj* linkingObj_src;			// part of a link
insilmaril@408
   108
    QPointF movingObj_orgPos;		// org. pos of mouse before move
insilmaril@408
   109
    QPointF movingObj_orgRelPos;	// org. relative pos of mouse before move
insilmaril@408
   110
    QPointF movingObj_start;		// rel. pos of mouse to absPos 
insilmaril@408
   111
    QPointF movingCont_start;		// inital pos of moving Content or
insilmaril@408
   112
    QPointF movingVec;				// how far has Content moved
insilmaril@684
   113
insilmaril@720
   114
	QPointF contextMenuPos;			// position where context event was triggered
insilmaril@684
   115
insilmaril@0
   116
    QPrinter* printer;				// Printing
insilmaril@0
   117
insilmaril@628
   118
	AttributeTable *attrTable;
insilmaril@628
   119
insilmaril@0
   120
	bool printFrame;			// Print frame around map
insilmaril@0
   121
	bool printFooter;			// Print footer below map
insilmaril@0
   122
insilmaril@720
   123
	QPoint exportOffset;		// set before export, used in save
insilmaril@0
   124
insilmaril@728
   125
//////////// Selection related
insilmaril@728
   126
signals:
insilmaril@729
   127
	void selectionChanged(const QItemSelection &, const QItemSelection &);
insilmaril@728
   128
insilmaril@726
   129
private:	
insilmaril@728
   130
	QList <QGraphicsRectItem*> selboxList;
insilmaril@728
   131
	QColor selectionColor;
insilmaril@728
   132
insilmaril@728
   133
public slots:
insilmaril@728
   134
	void updateSelection(const QItemSelection &,const QItemSelection &); // update selection
insilmaril@753
   135
	void updateData (const QModelIndex&); // update data
insilmaril@728
   136
public:
insilmaril@728
   137
	void setSelectionColor (QColor c);
insilmaril@728
   138
	QColor getSelectionColor ();
insilmaril@0
   139
};
insilmaril@0
   140
#endif
insilmaril@0
   141