mapeditor.h
author insilmaril
Thu Jul 17 12:55:24 2008 +0000 (2008-07-17)
branchrelease-1-12-maintained
changeset 41 6f28020b33d1
child 2 608f976aa7bb
child 74 98449ef9eccd
child 83 e90f5bef70c8
permissions -rw-r--r--
No jumping around left of MCO if animation is turned on
insilmaril@0
     1
#ifndef MAPEDITOR_H
insilmaril@0
     2
#define MAPEDITOR_H
insilmaril@0
     3
insilmaril@0
     4
#include <qcanvas.h>
insilmaril@0
     5
#include <qlineedit.h>
insilmaril@0
     6
#include <qcursor.h>
insilmaril@0
     7
#include <qfiledialog.h>
insilmaril@0
     8
#include <qevent.h>
insilmaril@0
     9
#include <qprocess.h>
insilmaril@0
    10
insilmaril@0
    11
#include "mapcenterobj.h"
insilmaril@0
    12
#include "misc.h"
insilmaril@0
    13
insilmaril@0
    14
class MapEditor : public QCanvasView , public xmlObj {
insilmaril@0
    15
    Q_OBJECT
insilmaril@0
    16
insilmaril@0
    17
public:
insilmaril@0
    18
    MapEditor(QWidget* parent=0, bool interactive=false, const char* name=0, WFlags f=0);
insilmaril@0
    19
	~MapEditor();
insilmaril@0
    20
    QColor color();
insilmaril@0
    21
    QColor backgroundColor();
insilmaril@0
    22
    MapCenterObj* getMapCenter();
insilmaril@0
    23
	QCanvas* getCanvas();
insilmaril@0
    24
	void adjustCanvasSize();// adjust canvas size to map and scrollview
insilmaril@0
    25
	bool blockReposition(); // block while load or undo
insilmaril@0
    26
	
insilmaril@0
    27
private:
insilmaril@0
    28
	void makeTmpDirs();		// create temporary directories
insilmaril@0
    29
	void delTmpDirs();		// delete temporary directories
insilmaril@0
    30
	void makeSubDirs(const QString&);		
insilmaril@0
    31
							// create subdirs in dir
insilmaril@0
    32
    QString saveToDir(const QString&,const QString &,bool, const QPoint
insilmaril@0
    33
	&,SaveMode);
insilmaril@0
    34
    void saveState();		// save actual state to backup
insilmaril@0
    35
    void saveState(const SaveMode&, LinkableMapObj *);
insilmaril@0
    36
insilmaril@0
    37
private slots:
insilmaril@0
    38
    void finishedLineEditNoSave();
insilmaril@0
    39
insilmaril@0
    40
public:
insilmaril@0
    41
	bool isDefault();		// false, if map was changed once
insilmaril@0
    42
    bool isUnsaved();		// save necessary
insilmaril@0
    43
    bool hasChanged();		// undo possible
insilmaril@0
    44
	void setChanged();		// called from NoteEditor via LMO
insilmaril@0
    45
	void closeMap();
insilmaril@0
    46
	void setFilePath (QString);	
insilmaril@0
    47
	void setFilePath (QString,QString);	
insilmaril@0
    48
	QString getFilePath ();	// Full path e.g. "/home/tux/map.xml"
insilmaril@0
    49
	QString getFileName ();	// e.g. "map.xml"
insilmaril@0
    50
	QString getMapName ();	// e.g. "map"
insilmaril@0
    51
	QString getDestPath (); // e.g. "/home/tux/map.vym"
insilmaril@0
    52
    int load (QString&, const LoadMode &);	// newmap, import/replace selection
insilmaril@0
    53
    int save(const SaveMode &);	// Save map 
insilmaril@0
    54
	void setZipped(bool);		// save map zipped
insilmaril@0
    55
	bool saveZipped();			// 1 if file will be saved zipped
insilmaril@0
    56
    void print();				// print canvas
insilmaril@0
    57
private:
insilmaril@0
    58
    QPixmap getPixmap();
insilmaril@0
    59
public:
insilmaril@0
    60
    void exportImage (QString fn);		// export as PNG	
insilmaril@0
    61
    void exportImage (QString fn, int);	// export in given format
insilmaril@0
    62
    void exportASCII();
insilmaril@0
    63
    void exportXML(const QString&);		// export to directory
insilmaril@0
    64
    void clear();		// clear map
insilmaril@0
    65
    void undo();		// undo last action
insilmaril@0
    66
    void copy();		// copy branch to clipboard
insilmaril@0
    67
private:	
insilmaril@0
    68
    LinkableMapObj* pasteNoSave();		// paste clipboard to branch
insilmaril@0
    69
    LinkableMapObj* pasteAtNoSave(int);	// paste clipboard to branch at position i
insilmaril@0
    70
    void cutNoSave();	// cut to clipboard
insilmaril@0
    71
public:	
insilmaril@0
    72
    void paste();		// paste clipboard to branch and backup
insilmaril@0
    73
    void cut();			// cut to clipboard and backup
insilmaril@0
    74
    void moveBranchUp();
insilmaril@0
    75
    void moveBranchDown();
insilmaril@0
    76
    void editHeading();
insilmaril@0
    77
    void addNewBranch(int);			// pos allows to add above/below selection
insilmaril@0
    78
    void deleteSelection();
insilmaril@0
    79
	LinkableMapObj* getSelection();	// returns selection
insilmaril@0
    80
	bool select(QString );			// Select 
insilmaril@0
    81
	void unselect();				// before changing current noteedit
insilmaril@0
    82
	void reselect();				// after  changing current noteedit
insilmaril@0
    83
private:	
insilmaril@0
    84
	void selectNextBranch();		// Increment number of branch
insilmaril@0
    85
	void selectPrevBranch();		// Decrement number of branch
insilmaril@0
    86
public:	
insilmaril@0
    87
    void selectUpperBranch();
insilmaril@0
    88
    void selectLowerBranch();
insilmaril@0
    89
    void selectLeftBranch();
insilmaril@0
    90
    void selectRightBranch();
insilmaril@0
    91
    void selectFirstBranch();
insilmaril@0
    92
    void selectLastBranch();
insilmaril@0
    93
    void setColor(QColor);
insilmaril@0
    94
    void selectBackgroundColor();
insilmaril@0
    95
    void setBackgroundColor(QColor);
insilmaril@0
    96
    QColor pickColor();
insilmaril@0
    97
    void colorItem();
insilmaril@0
    98
    void colorBranch();
insilmaril@0
    99
	void toggleStandardFlag(QString);
insilmaril@0
   100
	virtual void setViewCenter();			// needed for zooming
insilmaril@0
   101
    BranchObj* findText(QString,bool);		// Find object
insilmaril@0
   102
    void findReset();						// Reset Find 
insilmaril@0
   103
	void openURL();							// open URL in external browser
insilmaril@0
   104
	void editURL();							// edit the URL
insilmaril@0
   105
	void editHeading2URL();					// copy heading to URL
insilmaril@0
   106
	void editBugzilla2URL();				// create URL to Bugzilla
insilmaril@0
   107
	void editVymLink();						// edit link to another map
insilmaril@0
   108
	void deleteVymLink();					// delete link to another map
insilmaril@0
   109
	QString getVymLink();					// return path to map
insilmaril@0
   110
	void editMapInfo();						// dialog to enter author, ...
insilmaril@0
   111
	void updateActions();					// update e.g. format buttons
insilmaril@0
   112
	void setLinkStyle (LinkStyle);			// Set style of link
insilmaril@0
   113
	LinkStyle getLinkStyle ();				// requested in LMO
insilmaril@0
   114
	void setLinkColor(QColor);				// default color of links
insilmaril@0
   115
	void setLinkColorHint();				// color of links
insilmaril@0
   116
	void setLinkColorHint(LinkColorHint);	// color of links
insilmaril@0
   117
	LinkColorHint getLinkColorHint();
insilmaril@0
   118
	QColor getDefLinkColor();
insilmaril@0
   119
	void toggleLinkColorHint();				// after changing linkStyles
insilmaril@0
   120
    void selectLinkColor();
insilmaril@0
   121
    void toggleScroll();
insilmaril@0
   122
    void unScrollAll();
insilmaril@0
   123
	void loadFloatImage ();
insilmaril@0
   124
	void saveFloatImage (int);
insilmaril@0
   125
	void toggleFloatExport();
insilmaril@0
   126
	void setFrame(const FrameType &);
insilmaril@0
   127
private:	
insilmaril@0
   128
    void importDir(BranchObj *,QDir);
insilmaril@0
   129
public:	
insilmaril@0
   130
    void importDir();
insilmaril@0
   131
    void testFunction();				// FIXME just testing
insilmaril@0
   132
insilmaril@0
   133
protected:
insilmaril@0
   134
	void ensureSelectionVisible();		
insilmaril@0
   135
	virtual void updateViewCenter();	// needed for zooming
insilmaril@0
   136
	virtual void contentsContextMenuEvent ( QContextMenuEvent *e );
insilmaril@0
   137
    virtual void contentsMousePressEvent(QMouseEvent*);
insilmaril@0
   138
    virtual void contentsMouseReleaseEvent(QMouseEvent*);
insilmaril@0
   139
    virtual void contentsMouseDoubleClickEvent(QMouseEvent*);
insilmaril@0
   140
    virtual void contentsMouseMoveEvent(QMouseEvent*);
insilmaril@0
   141
insilmaril@0
   142
private:
insilmaril@0
   143
    QCanvas* mapCanvas;
insilmaril@0
   144
    MapCenterObj* mapCenter;
insilmaril@0
   145
insilmaril@0
   146
	bool adjustCanvasRequested;	// collect requests until end of user event
insilmaril@0
   147
	BranchObj *editingBO;		// entering Text into BO
insilmaril@0
   148
    QLineEdit* lineedit;
insilmaril@0
   149
insilmaril@0
   150
    QColor actColor;			// actual color
insilmaril@0
   151
	QColor deflinkcolor;		// default color for links
insilmaril@0
   152
	LinkColorHint linkcolorhint;// use heading color or own color
insilmaril@0
   153
	LinkStyle linkstyle;		// default style for links
insilmaril@0
   154
insilmaril@0
   155
    QCursor handOpenCursor;		// cursor while moving canvas view
insilmaril@0
   156
	QCursor pickColorCursor;	// cursor while picking color 
insilmaril@0
   157
	bool pickingColor;			// true while picking Color CTRL-LeftButton
insilmaril@0
   158
	
insilmaril@0
   159
    LinkableMapObj* selection;		// select a LinkableMapObj
insilmaril@0
   160
    LinkableMapObj* selectionLast;	// last selection 
insilmaril@0
   161
    MapObj* movingObj;				// moving a MapObj
insilmaril@0
   162
    QPoint movingObj_start;			// rel. pos of mouse to absPos 
insilmaril@0
   163
    QPoint movingCont_start;		// inital pos of moving Content or
insilmaril@0
   164
    QPoint movingVec;				// how far has Content moved
insilmaril@0
   165
	QPoint movingCenter;			// used when zooming
insilmaril@0
   166
    QPrinter* printer;				// Printing
insilmaril@0
   167
insilmaril@0
   168
    bool mapDefault;				// Flag if map is untouched
insilmaril@0
   169
    bool mapChanged;				// Flag if undo is possible
insilmaril@0
   170
	bool mapUnsaved;				// Flag if map should be saved
insilmaril@0
   171
    QString backupXML;				// backup (XML) for undo
insilmaril@0
   172
	LinkableMapObj* undoSelection;	// replace this LMO with vympart from backup
insilmaril@0
   173
									// if != NULL
insilmaril@0
   174
insilmaril@0
   175
	bool printFrame;			// Print frame around map
insilmaril@0
   176
	bool printFooter;			// Print footer below map
insilmaril@0
   177
insilmaril@0
   178
	bool zipped;				// should map be zipped
insilmaril@0
   179
	QString fileName;			// short name of file (for tab)
insilmaril@0
   180
	QString filePath;			// path to file which will be saved
insilmaril@0
   181
	QString fileDir;			// dir where file is saved
insilmaril@0
   182
	QString destPath;			// path to .vym file (needed for vymlinks)
insilmaril@0
   183
	QString mapName;			// fileName without ".vym"
insilmaril@0
   184
	QString lastImageDir;		// save dir for adding images
insilmaril@0
   185
insilmaril@0
   186
	bool isInteractive;			// non interactive don't need tmpdirs
insilmaril@0
   187
	QString bakMapDir;			// tmp directory with data for undo
insilmaril@0
   188
	bool blockreposition;		// block while load or undo
insilmaril@0
   189
insilmaril@0
   190
	BranchObj* itFind;			// next object in find process
insilmaril@0
   191
	bool EOFind;				// true, if search failed
insilmaril@0
   192
insilmaril@0
   193
	QPoint exportOffset;		// set before export, used in save
insilmaril@0
   194
    void resizeEvent( QResizeEvent * );
insilmaril@0
   195
};
insilmaril@0
   196
#endif
insilmaril@0
   197