insilmaril@0: #ifndef MAPEDITOR_H insilmaril@0: #define MAPEDITOR_H insilmaril@0: insilmaril@2: #include insilmaril@0: #include insilmaril@0: #include insilmaril@2: #include insilmaril@0: #include insilmaril@2: #include insilmaril@2: #include insilmaril@2: //Added by qt3to4: insilmaril@2: #include insilmaril@2: #include insilmaril@2: #include insilmaril@2: #include insilmaril@2: #include insilmaril@2: #include insilmaril@0: insilmaril@0: #include "mapcenterobj.h" insilmaril@2: #include "file.h" insilmaril@0: #include "misc.h" insilmaril@2: #include "showtextdialog.h" insilmaril@0: insilmaril@2: class Q3NetworkOperation; insilmaril@2: class Q3UrlOperator; insilmaril@2: insilmaril@2: class MapEditor : public Q3CanvasView , public xmlObj { insilmaril@0: Q_OBJECT insilmaril@0: insilmaril@0: public: insilmaril@2: MapEditor(QWidget* parent=0, bool interactive=false, const char* name=0, Qt::WFlags f=0); insilmaril@0: ~MapEditor(); insilmaril@0: QColor color(); insilmaril@0: QColor backgroundColor(); insilmaril@0: MapCenterObj* getMapCenter(); insilmaril@2: Q3Canvas* getCanvas(); insilmaril@0: void adjustCanvasSize();// adjust canvas size to map and scrollview insilmaril@2: bool isRepositionBlocked(); // block while load or undo insilmaril@0: insilmaril@0: private: insilmaril@2: QString getName(LinkableMapObj*); // Get e.g. heading or filename insilmaril@0: void makeTmpDirs(); // create temporary directories insilmaril@2: QString saveToDir(const QString&,const QString &,bool, const QPoint &,LinkableMapObj*); insilmaril@2: void saveState(const QString &); // save actual state to backup insilmaril@2: void saveState(LinkableMapObj *, const QString &); insilmaril@2: void saveState(const QString &, const QString &, const QString &); insilmaril@2: void saveState(const QString &, LinkableMapObj *, const QString &); insilmaril@2: void saveState(const SaveMode&, const QString &, LinkableMapObj *, const QString &, LinkableMapObj *, const QString &); insilmaril@2: void parseAtom(const QString &); insilmaril@0: insilmaril@2: void addFloatImage(const QPixmap &img); insilmaril@2: insilmaril@2: private slots: insilmaril@2: void finishedLineEdit(); insilmaril@2: void fetchImage(const QString &img); insilmaril@2: void imageDataFetched(const QByteArray &, Q3NetworkOperation *); insilmaril@2: void imageDataFinished(Q3NetworkOperation *); insilmaril@0: insilmaril@0: public: insilmaril@2: void toggleHistoryWindow(); insilmaril@0: bool isDefault(); // false, if map was changed once insilmaril@0: bool isUnsaved(); // save necessary insilmaril@0: bool hasChanged(); // undo possible insilmaril@0: void setChanged(); // called from NoteEditor via LMO insilmaril@0: void closeMap(); insilmaril@0: void setFilePath (QString); insilmaril@0: void setFilePath (QString,QString); insilmaril@0: QString getFilePath (); // Full path e.g. "/home/tux/map.xml" insilmaril@0: QString getFileName (); // e.g. "map.xml" insilmaril@0: QString getMapName (); // e.g. "map" insilmaril@0: QString getDestPath (); // e.g. "/home/tux/map.vym" insilmaril@2: ErrorCode load (QString, LoadMode ); // newmap, import/replace selection insilmaril@2: public: insilmaril@0: int save(const SaveMode &); // Save map insilmaril@0: void setZipped(bool); // save map zipped insilmaril@0: bool saveZipped(); // 1 if file will be saved zipped insilmaril@0: void print(); // print canvas insilmaril@0: private: insilmaril@0: QPixmap getPixmap(); insilmaril@2: void setHideTmpMode (HideTmpMode); // temporary hide stuff insilmaril@2: HideTmpMode getHideTmpMode(); // temporary hide stuff insilmaril@0: public: insilmaril@2: void setExportMode (bool); // temporary hide stuff during export insilmaril@4: void exportImage (QString fn); // export as PNG insilmaril@4: void exportImage (QString fn, QString); // export in given format insilmaril@2: void exportOOPresentation(const QString &,const QString &); insilmaril@0: void exportXML(const QString&); // export to directory insilmaril@0: void clear(); // clear map insilmaril@2: void copy(); // copy branch to clipboard insilmaril@2: void redo(); // redo last action insilmaril@0: void undo(); // undo last action insilmaril@0: private: insilmaril@2: void undoXML(const QString &, const QString &); insilmaril@2: void pasteNoSave(); // paste clipboard to branch insilmaril@0: void cutNoSave(); // cut to clipboard insilmaril@0: public: insilmaril@0: void paste(); // paste clipboard to branch and backup insilmaril@0: void cut(); // cut to clipboard and backup insilmaril@2: void move(const int &,const int&); insilmaril@0: void moveBranchUp(); insilmaril@0: void moveBranchDown(); insilmaril@2: void editHeading(); // Start editing heading insilmaril@2: private: insilmaril@2: void setHeading(const QString &); // Just set the heading for selection insilmaril@2: void setURL(const QString &); // Just set the URL for selection insilmaril@2: void setVymLink(const QString &); // Set vymLink for selection insilmaril@2: public: insilmaril@0: void addNewBranch(int); // pos allows to add above/below selection insilmaril@2: void addNewBranchHere(); // insert and make selection its insilmaril@0: void deleteSelection(); insilmaril@0: LinkableMapObj* getSelection(); // returns selection insilmaril@0: void unselect(); // before changing current noteedit insilmaril@0: void reselect(); // after changing current noteedit insilmaril@2: bool select(const QString &); // Select insilmaril@0: private: insilmaril@2: void select(LinkableMapObj*); insilmaril@0: void selectNextBranch(); // Increment number of branch insilmaril@0: void selectPrevBranch(); // Decrement number of branch insilmaril@0: public: insilmaril@0: void selectUpperBranch(); insilmaril@0: void selectLowerBranch(); insilmaril@0: void selectLeftBranch(); insilmaril@0: void selectRightBranch(); insilmaril@0: void selectFirstBranch(); insilmaril@0: void selectLastBranch(); insilmaril@0: void setColor(QColor); insilmaril@0: void selectBackgroundColor(); insilmaril@0: void setBackgroundColor(QColor); insilmaril@0: QColor pickColor(); insilmaril@0: void colorItem(); insilmaril@0: void colorBranch(); insilmaril@0: void toggleStandardFlag(QString); insilmaril@0: virtual void setViewCenter(); // needed for zooming insilmaril@0: BranchObj* findText(QString,bool); // Find object insilmaril@0: void findReset(); // Reset Find insilmaril@0: void editURL(); // edit the URL insilmaril@2: QString getURL(); // returns URL of selection or "" insilmaril@0: void editHeading2URL(); // copy heading to URL insilmaril@0: void editBugzilla2URL(); // create URL to Bugzilla insilmaril@2: void editFATE2URL(); // create URL to FATE insilmaril@0: void editVymLink(); // edit link to another map insilmaril@0: void deleteVymLink(); // delete link to another map insilmaril@0: QString getVymLink(); // return path to map insilmaril@2: void toggleHideExport(); // toggle the export flag insilmaril@2: void removeBranchKeepChilds(); // remove but keep childs insilmaril@2: void removeChilds(); // remove childs insilmaril@0: void editMapInfo(); // dialog to enter author, ... insilmaril@0: void updateActions(); // update e.g. format buttons insilmaril@2: void updateNoteFlag(); // when TextEditor changes insilmaril@0: void setLinkStyle (LinkStyle); // Set style of link insilmaril@0: LinkStyle getLinkStyle (); // requested in LMO insilmaril@0: void setLinkColor(QColor); // default color of links insilmaril@0: void setLinkColorHint(); // color of links insilmaril@0: void setLinkColorHint(LinkColorHint); // color of links insilmaril@0: LinkColorHint getLinkColorHint(); insilmaril@0: QColor getDefLinkColor(); insilmaril@2: void setDefXLinkColor(QColor); insilmaril@2: QColor getDefXLinkColor(); insilmaril@2: void setDefXLinkWidth (int); insilmaril@2: int getDefXLinkWidth(); insilmaril@0: void toggleLinkColorHint(); // after changing linkStyles insilmaril@0: void selectLinkColor(); insilmaril@0: void toggleScroll(); insilmaril@0: void unScrollAll(); insilmaril@0: void loadFloatImage (); insilmaril@0: void saveFloatImage (int); insilmaril@0: void setFrame(const FrameType &); insilmaril@2: void setIncludeImagesVer(bool); insilmaril@2: void setIncludeImagesHor(bool); insilmaril@2: void setHideLinkUnselected (bool); insilmaril@2: bool getHideLinkUnselected (); insilmaril@0: private: insilmaril@0: void importDir(BranchObj *,QDir); insilmaril@0: public: insilmaril@0: void importDir(); insilmaril@2: void followXLink (int); insilmaril@2: void editXLink (int); insilmaril@0: void testFunction(); // FIXME just testing insilmaril@0: insilmaril@0: protected: insilmaril@0: void ensureSelectionVisible(); insilmaril@0: virtual void updateViewCenter(); // needed for zooming insilmaril@0: virtual void contentsContextMenuEvent ( QContextMenuEvent *e ); insilmaril@0: virtual void contentsMousePressEvent(QMouseEvent*); insilmaril@0: virtual void contentsMouseReleaseEvent(QMouseEvent*); insilmaril@0: virtual void contentsMouseDoubleClickEvent(QMouseEvent*); insilmaril@0: virtual void contentsMouseMoveEvent(QMouseEvent*); insilmaril@0: insilmaril@2: virtual void contentsDragEnterEvent(QDragEnterEvent *event); insilmaril@2: virtual void contentsDropEvent(QDropEvent *event); insilmaril@0: private: insilmaril@2: Q3Canvas* mapCanvas; insilmaril@0: MapCenterObj* mapCenter; insilmaril@0: insilmaril@0: bool adjustCanvasRequested; // collect requests until end of user event insilmaril@0: BranchObj *editingBO; // entering Text into BO insilmaril@0: QLineEdit* lineedit; insilmaril@0: insilmaril@0: QColor actColor; // actual color insilmaril@2: QColor defLinkColor; // default color for links insilmaril@2: QColor defXLinkColor; // default color for xlinks insilmaril@2: int defXLinkWidth; // default width for xlinks insilmaril@0: LinkColorHint linkcolorhint;// use heading color or own color insilmaril@0: LinkStyle linkstyle; // default style for links insilmaril@0: insilmaril@0: QCursor handOpenCursor; // cursor while moving canvas view insilmaril@0: QCursor pickColorCursor; // cursor while picking color insilmaril@2: bool pickingColor; insilmaril@2: bool drawingLink; // true while creating a link insilmaril@2: bool copyingObj; // true while creating a link insilmaril@2: XLinkObj* tmpXLink; insilmaril@0: insilmaril@0: LinkableMapObj* selection; // select a LinkableMapObj insilmaril@0: LinkableMapObj* selectionLast; // last selection insilmaril@0: MapObj* movingObj; // moving a MapObj insilmaril@2: MapObj* linkingObj_src; // part of a link insilmaril@2: QPoint movingObj_orgPos; // org. pos of mouse before move insilmaril@0: QPoint movingObj_start; // rel. pos of mouse to absPos insilmaril@0: QPoint movingCont_start; // inital pos of moving Content or insilmaril@0: QPoint movingVec; // how far has Content moved insilmaril@0: QPoint movingCenter; // used when zooming insilmaril@0: QPrinter* printer; // Printing insilmaril@0: insilmaril@0: bool mapDefault; // Flag if map is untouched insilmaril@0: bool mapChanged; // Flag if undo is possible insilmaril@0: bool mapUnsaved; // Flag if map should be saved insilmaril@0: insilmaril@0: bool printFrame; // Print frame around map insilmaril@0: bool printFooter; // Print footer below map insilmaril@0: insilmaril@0: bool zipped; // should map be zipped insilmaril@2: static int mapNum; // unique number for Editor insilmaril@0: QString fileName; // short name of file (for tab) insilmaril@0: QString filePath; // path to file which will be saved insilmaril@0: QString fileDir; // dir where file is saved insilmaril@0: QString destPath; // path to .vym file (needed for vymlinks) insilmaril@0: QString mapName; // fileName without ".vym" insilmaril@0: insilmaril@0: bool isInteractive; // non interactive don't need tmpdirs insilmaril@2: QString tmpMapDir; // tmp directory with data for undo/redo insilmaril@2: int undosTotal; // total number of undos insilmaril@2: int undoNum; // current number of bakMapDir to be used insilmaril@2: int undosAvail; // how many actions can currently be undone insilmaril@2: bool blockReposition; // block while load or undo insilmaril@2: bool blockSaveState; // block while load or undo insilmaril@0: insilmaril@0: BranchObj* itFind; // next object in find process insilmaril@0: bool EOFind; // true, if search failed insilmaril@0: insilmaril@0: QPoint exportOffset; // set before export, used in save insilmaril@2: HideTmpMode hidemode; // true while exporting to hide some stuff insilmaril@2: insilmaril@0: void resizeEvent( QResizeEvent * ); insilmaril@2: insilmaril@2: Q3UrlOperator *urlOperator; insilmaril@2: QDataStream *imageData; insilmaril@2: QBuffer *imageBuffer; insilmaril@2: insilmaril@2: ShowTextDialog *historyWindow; insilmaril@2: insilmaril@0: }; insilmaril@0: #endif insilmaril@0: