1.1 --- a/linkablemapobj.cpp Wed Apr 25 16:02:54 2007 +0000
1.2 +++ b/linkablemapobj.cpp Wed Apr 25 16:02:54 2007 +0000
1.3 @@ -35,16 +35,16 @@
1.4 {
1.5 switch (style)
1.6 {
1.7 - case StyleLine:
1.8 + case Line:
1.9 delete (l);
1.10 break;
1.11 - case StyleParabel:
1.12 + case Parabel:
1.13 while (!segment.isEmpty()) delete segment.takeFirst();
1.14 break;
1.15 - case StylePolyLine:
1.16 + case PolyLine:
1.17 delete (p);
1.18 break;
1.19 - case StylePolyParabel:
1.20 + case PolyParabel:
1.21 delete (p);
1.22 break;
1.23 default:
1.24 @@ -63,11 +63,11 @@
1.25 childPos=QPointF(0,0);
1.26 link2ParPos=false;
1.27 l=NULL;
1.28 - orientation=OrientUndef;
1.29 + orientation=UndefinedOrientation;
1.30 linkwidth=20;
1.31 thickness_start=8;
1.32 - style=StyleUndef;
1.33 - linkpos=LinkBottom;
1.34 + style=UndefinedStyle;
1.35 + linkpos=Bottom;
1.36 arcsegs=13;
1.37
1.38 // TODO instead of linkcolor pen.color() could be used all around
1.39 @@ -181,37 +181,37 @@
1.40 return rightPad;
1.41 }
1.42
1.43 -LinkStyle LinkableMapObj::getDefLinkStyle ()
1.44 +LinkableMapObj::Style LinkableMapObj::getDefLinkStyle ()
1.45 {
1.46 - if (mapEditor==0) return StyleUndef;
1.47 - LinkStyle ls=mapEditor->getMapLinkStyle();
1.48 + if (mapEditor==0) return UndefinedStyle;
1.49 + Style ls=mapEditor->getMapLinkStyle();
1.50 switch (ls)
1.51 {
1.52 - case StyleLine:
1.53 + case Line:
1.54 return ls;
1.55 break;
1.56 - case StyleParabel:
1.57 + case Parabel:
1.58 return ls;
1.59 break;
1.60 - case StylePolyLine:
1.61 + case PolyLine:
1.62 if (depth>1)
1.63 - return StyleLine;
1.64 + return Line;
1.65 else
1.66 return ls;
1.67 break;
1.68 - case StylePolyParabel:
1.69 + case PolyParabel:
1.70 if (depth>1)
1.71 - return StyleParabel;
1.72 + return Parabel;
1.73 else
1.74 return ls;
1.75 break;
1.76 default:
1.77 break;
1.78 }
1.79 - return StyleUndef;
1.80 + return UndefinedStyle;
1.81 }
1.82
1.83 -void LinkableMapObj::setLinkStyle(LinkStyle newstyle)
1.84 +void LinkableMapObj::setLinkStyle(Style newstyle)
1.85 {
1.86 //if (newstyle=style) return;
1.87 delLink();
1.88 @@ -223,10 +223,10 @@
1.89 QGraphicsLineItem *cl;
1.90 switch (style)
1.91 {
1.92 - case StyleUndef:
1.93 + case UndefinedStyle:
1.94 bottomline->hide();
1.95 break;
1.96 - case StyleLine:
1.97 + case Line:
1.98 l = scene->addLine(QLineF(1,1,1,1),pen);
1.99 l->setZValue(Z_LINK);
1.100 if (visible)
1.101 @@ -234,7 +234,7 @@
1.102 else
1.103 l->hide();
1.104 break;
1.105 - case StyleParabel:
1.106 + case Parabel:
1.107 for (int i=0;i<arcsegs;i++)
1.108 {
1.109 cl = scene->addLine(QLineF(i*5,0,i*10,100),pen);
1.110 @@ -247,7 +247,7 @@
1.111 }
1.112 pa0.resize (arcsegs+1);
1.113 break;
1.114 - case StylePolyLine:
1.115 + case PolyLine:
1.116 p =scene->addPolygon(QPolygonF(),pen,linkcolor);
1.117 p->setZValue(Z_LINK);
1.118 if (visible)
1.119 @@ -256,7 +256,7 @@
1.120 p->hide();
1.121 pa0.resize (3);
1.122 break;
1.123 - case StylePolyParabel:
1.124 + case PolyParabel:
1.125 p = scene->addPolygon(QPolygonF(),pen,linkcolor);
1.126 p->setZValue(Z_LINK);
1.127 if (visible)
1.128 @@ -273,7 +273,7 @@
1.129 }
1.130 }
1.131
1.132 -LinkStyle LinkableMapObj::getLinkStyle()
1.133 +LinkableMapObj::Style LinkableMapObj::getLinkStyle()
1.134 {
1.135 return style;
1.136 }
1.137 @@ -290,12 +290,12 @@
1.138 return hideLinkUnselected;
1.139 }
1.140
1.141 -void LinkableMapObj::setLinkPos(LinkPos lp)
1.142 +void LinkableMapObj::setLinkPos(Position lp)
1.143 {
1.144 linkpos=lp;
1.145 }
1.146
1.147 -LinkPos LinkableMapObj::getLinkPos()
1.148 +LinkableMapObj::Position LinkableMapObj::getLinkPos()
1.149 {
1.150 return linkpos;
1.151 }
1.152 @@ -316,17 +316,17 @@
1.153 bottomline->setPen( pen );
1.154 switch (style)
1.155 {
1.156 - case StyleLine:
1.157 + case Line:
1.158 l->setPen( pen);
1.159 break;
1.160 - case StyleParabel:
1.161 + case Parabel:
1.162 for (int i=0; i<segment.size(); ++i)
1.163 segment.at(i)->setPen( pen);
1.164 break;
1.165 - case StylePolyLine:
1.166 + case PolyLine:
1.167 p->setBrush( QBrush(col));
1.168 break;
1.169 - case StylePolyParabel:
1.170 + case PolyParabel:
1.171 p->setBrush( QBrush(col));
1.172 break;
1.173 default:
1.174 @@ -353,17 +353,17 @@
1.175 bottomline->show();
1.176 switch (style)
1.177 {
1.178 - case StyleLine:
1.179 + case Line:
1.180 if (l) l->show();
1.181 break;
1.182 - case StyleParabel:
1.183 + case Parabel:
1.184 for (int i=0; i<segment.size(); ++i)
1.185 segment.at(i)->show();
1.186 break;
1.187 - case StylePolyLine:
1.188 + case PolyLine:
1.189 if (p) p->show();
1.190 break;
1.191 - case StylePolyParabel:
1.192 + case PolyParabel:
1.193 if (p) p->show();
1.194 break;
1.195 default:
1.196 @@ -374,17 +374,17 @@
1.197 bottomline->hide();
1.198 switch (style)
1.199 {
1.200 - case StyleLine:
1.201 + case Line:
1.202 if (l) l->hide();
1.203 break;
1.204 - case StyleParabel:
1.205 + case Parabel:
1.206 for (int i=0; i<segment.size(); ++i)
1.207 segment.at(i)->hide();
1.208 break;
1.209 - case StylePolyLine:
1.210 + case PolyLine:
1.211 if (p) p->hide();
1.212 break;
1.213 - case StylePolyParabel:
1.214 + case PolyParabel:
1.215 if (p) p->hide();
1.216 break;
1.217 default:
1.218 @@ -395,25 +395,25 @@
1.219
1.220 void LinkableMapObj::setOrientation()
1.221 {
1.222 - LinkOrient orientOld=orientation;
1.223 + Orientation orientOld=orientation;
1.224
1.225 if (!parObj)
1.226 {
1.227 - orientation=OrientUndef;
1.228 + orientation=UndefinedOrientation;
1.229 return;
1.230 }
1.231
1.232 // Set orientation, first look for orientation of parent
1.233 - if (parObj->getOrientation() != OrientUndef )
1.234 + if (parObj->getOrientation() != UndefinedOrientation )
1.235 // use the orientation of the parent:
1.236 orientation=parObj->getOrientation();
1.237 else
1.238 {
1.239 // calc orientation depending on position rel to parent
1.240 if (absPos.x() < QPointF(parObj->getChildPos() ).x() )
1.241 - orientation=OrientLeftOfCenter;
1.242 + orientation=LeftOfCenter;
1.243 else
1.244 - orientation=OrientRightOfCenter;
1.245 + orientation=RightOfCenter;
1.246 }
1.247 if (orientOld!=orientation) requestReposition();
1.248 }
1.249 @@ -434,14 +434,14 @@
1.250
1.251 // updateLink is called from move, but called from constructor we don't
1.252 // have parents yet...
1.253 - if (style==StyleUndef) return;
1.254 + if (style==UndefinedStyle) return;
1.255
1.256 switch (linkpos)
1.257 {
1.258 - case LinkMiddle:
1.259 + case Middle:
1.260 bottomlineY=bbox.top() + bbox.height()/2; // draw link to middle (of frame)
1.261 break;
1.262 - case LinkBottom:
1.263 + case Bottom:
1.264 bottomlineY=bbox.bottom()-1; // draw link to bottom of box
1.265 break;
1.266 }
1.267 @@ -484,14 +484,14 @@
1.268 // Draw the link
1.269 switch (style)
1.270 {
1.271 - case StyleLine:
1.272 + case Line:
1.273 //l->prepareGeometryChange();
1.274 l->setLine( QLine(qRound (parPos.x()),
1.275 qRound(parPos.y()),
1.276 qRound(p2x),
1.277 qRound(p2y) ));
1.278 break;
1.279 - case StyleParabel:
1.280 + case Parabel:
1.281 parabel (pa0, p1x,p1y,p2x,p2y);
1.282 for (int i=0; i<segment.size(); ++i)
1.283 {
1.284 @@ -499,7 +499,7 @@
1.285 segment.at(i)->setLine(QLineF( pa0.at(i).x(), pa0.at(i).y(),pa0.at(i+1).x(),pa0.at(i+1).y()));
1.286 }
1.287 break;
1.288 - case StylePolyLine:
1.289 + case PolyLine:
1.290 pa0.clear();
1.291 pa0<<QPointF (qRound(p2x+tp.x()), qRound(p2y+tp.y()));
1.292 pa0<<QPointF (qRound(p2x-tp.x()), qRound(p2y-tp.y()));
1.293 @@ -507,7 +507,7 @@
1.294 //p->prepareGeometryChange();
1.295 p->setPolygon(QPolygonF (pa0));
1.296 break;
1.297 - case StylePolyParabel:
1.298 + case PolyParabel:
1.299 parabel (pa1, p1x,p1y,p2x+tp.x(),p2y+tp.y());
1.300 parabel (pa2, p1x,p1y,p2x-tp.x(),p2y-tp.y());
1.301 pa0.clear();
1.302 @@ -585,7 +585,7 @@
1.303 }
1.304 }
1.305
1.306 -LinkOrient LinkableMapObj::getOrientation()
1.307 +LinkableMapObj::Orientation LinkableMapObj::getOrientation()
1.308 {
1.309 return orientation;
1.310 }
1.311 @@ -656,6 +656,8 @@
1.312
1.313 void LinkableMapObj::select()
1.314 {
1.315 + // select and unselect are still needed to
1.316 + // handle hiding of links
1.317 selected=true;
1.318 setVisibility (visible);
1.319 }
1.320 @@ -705,3 +707,4 @@
1.321 return attribut ("hideLink","false");
1.322
1.323 }
1.324 +
2.1 --- a/linkablemapobj.h Wed Apr 25 16:02:54 2007 +0000
2.2 +++ b/linkablemapobj.h Wed Apr 25 16:02:54 2007 +0000
2.3 @@ -1,6 +1,7 @@
2.4 #ifndef LINKABLEMAPOBJ_H
2.5 #define LINKABLEMAPOBJ_H
2.6
2.7 +#include "animpoint.h"
2.8 #include "noteobj.h"
2.9 #include "headingobj.h"
2.10 #include "flagrowobj.h"
2.11 @@ -8,20 +9,43 @@
2.12
2.13 #define MAX_DEPTH 999
2.14
2.15 -enum LinkOrient {OrientUndef,OrientLeftOfCenter, OrientRightOfCenter};
2.16 -enum LinkStyle {
2.17 - StyleUndef,
2.18 - StyleLine,
2.19 - StyleParabel,
2.20 - StylePolyLine,
2.21 - StylePolyParabel
2.22 -};
2.23 -enum LinkPos {LinkMiddle,LinkBottom};
2.24 -enum LinkColorHint {DefaultColor,HeadingColor};
2.25 +
2.26 +/*! \brief This class adds links to MapObj
2.27 +
2.28 +The links are connecting the branches (BranchObj) and images (FloatImageObj) in the map.
2.29 +*/
2.30
2.31 class LinkableMapObj:public QObject, public MapObj {
2.32 Q_OBJECT
2.33 public:
2.34 + /*! Orientation of an object dependd on the position relative to the parent */
2.35 + enum Orientation {
2.36 + UndefinedOrientation, //!< Undefined
2.37 + LeftOfCenter, //!< Object is left of center
2.38 + RightOfCenter //!< Object is right of center
2.39 + };
2.40 +
2.41 + /*! Various drawing styles for links */
2.42 + enum Style {
2.43 + UndefinedStyle, //!< Undefined
2.44 + Line, //!< Straight line
2.45 + Parabel, //!< Parabel
2.46 + PolyLine, //!< Polygon (thick line)
2.47 + PolyParabel //!< Thick parabel
2.48 + };
2.49 +
2.50 + /*! Vertical position of link in object */
2.51 + enum Position {
2.52 + Middle, //!< Link is drawn in the middle of object
2.53 + Bottom //!< Link is drawn at bottom of object
2.54 + };
2.55 +
2.56 + /*! Hint if link should use the default link color or the color of heading */
2.57 + enum ColorHint {
2.58 + DefaultColor, //!< Link uses the default color
2.59 + HeadingColor //!< Link uses the color of heading
2.60 + };
2.61 +
2.62 LinkableMapObj ();
2.63 LinkableMapObj (QGraphicsScene*);
2.64 LinkableMapObj (LinkableMapObj*);
2.65 @@ -45,13 +69,13 @@
2.66 virtual qreal getTopPad();
2.67 virtual qreal getLeftPad();
2.68 virtual qreal getRightPad();
2.69 - LinkStyle getDefLinkStyle();
2.70 - void setLinkStyle(LinkStyle);
2.71 - LinkStyle getLinkStyle();
2.72 + Style getDefLinkStyle();
2.73 + void setLinkStyle(Style);
2.74 + Style getLinkStyle();
2.75 void setHideLinkUnselected(bool);
2.76 bool getHideLinkUnselected();
2.77 - void setLinkPos (LinkPos);
2.78 - LinkPos getLinkPos ();
2.79 + void setLinkPos (Position);
2.80 + Position getLinkPos ();
2.81
2.82 virtual void setLinkColor(); // sets color according to colorhint, overloaded
2.83 virtual void setLinkColor(QColor);
2.84 @@ -67,7 +91,7 @@
2.85 virtual void setDockPos()=0; // sets childPos and parPos
2.86 QPointF getChildPos(); // returns pos where childs dock
2.87 QPointF getParPos(); // returns pos where parents dock
2.88 - LinkOrient getOrientation(); // get orientation
2.89 + Orientation getOrientation(); // get orientation
2.90 virtual int getDepth(); // return depth
2.91 virtual void setMapEditor(MapEditor*); // set MapEditor (needed in LMO::updateNoteFlag)
2.92 virtual MapEditor* getMapEditor(); // get MapEditor (usually from parent);
2.93 @@ -99,7 +123,7 @@
2.94 MapEditor* mapEditor; // for and toggleScroll(), get default styles
2.95 // and mapEditor->updateActions()
2.96 // and mapEditor->updateSelection()
2.97 - LinkOrient orientation;
2.98 + Orientation orientation;
2.99 qreal linkwidth; // width of a link
2.100 int depth; // depth: undef=-1 mapCenter=0 branch=1..n
2.101 QRectF bboxTotal; // bounding box including childs
2.102 @@ -110,8 +134,8 @@
2.103 qreal bottomlineY; // vertical offset of dockpos to pos
2.104
2.105 int thickness_start; // for StylePoly*
2.106 - LinkStyle style; // Current style
2.107 - LinkPos linkpos; // Link at bottom of object or middle of height
2.108 + Style style; // Current style
2.109 + Position linkpos; // Link at bottom of object or middle of height
2.110 QColor linkcolor; // Link color
2.111 QPen pen;
2.112 QGraphicsLineItem* l; // line style
2.113 @@ -129,7 +153,8 @@
2.114 qreal topPad, botPad,
2.115 leftPad, rightPad; // padding within bbox
2.116
2.117 - QPointF relPos; // position relative to childPos of parent
2.118 + QPointF relPos; // position relative to childPos of parent
2.119 + //AnimPoint relPos; // position relative to childPos of parent
2.120 bool useRelPos;
2.121 bool useOrientation;
2.122 };
3.1 --- a/main.cpp Wed Apr 25 16:02:54 2007 +0000
3.2 +++ b/main.cpp Wed Apr 25 16:02:54 2007 +0000
3.3 @@ -12,6 +12,7 @@
3.4 QString vymName;
3.5 QString vymVersion;
3.6 QString vymBuildDate;
3.7 +QString vymCodeName;
3.8
3.9 Main *mainWindow; // used in BranchObj::select()
3.10 QString tmpVymDir; // All temp files go there, created in mainwindow
3.11 @@ -22,6 +23,7 @@
3.12 QString iconPath; // Pointing to icons used for toolbars
3.13 QString flagsPath; // Pointing to flags
3.14 bool clipboardEmpty;
3.15 +bool debug; // global debugging flag
3.16 FlagRowObj *systemFlagsDefault; // used to copy from in LinkableMapObj
3.17 FlagRowObj *standardFlagsDefault;
3.18
3.19 @@ -42,15 +44,17 @@
3.20 vymName=__VYM_NAME;
3.21 vymVersion=__VYM_VERSION;
3.22 vymBuildDate=__VYM_BUILD_DATE;
3.23 + vymCodeName=__VYM_CODENAME;
3.24
3.25
3.26 // Reading and initializing options commandline options
3.27 - options.add ("version", SwitchOption, "v","version");
3.28 - options.add ("local", SwitchOption, "l", "local");
3.29 - options.add ("help", SwitchOption, "h", "help");
3.30 - options.add ("quit", SwitchOption, "q", "quit");
3.31 - options.add ("run", StringOption, "r", "run");
3.32 - options.add ("test", StringOption, "t", "test");
3.33 + options.add ("debug", Option::Switch, "d", "debug");
3.34 + options.add ("version", Option::Switch, "v","version");
3.35 + options.add ("local", Option::Switch, "l", "local");
3.36 + options.add ("help", Option::Switch, "h", "help");
3.37 + options.add ("quit", Option::Switch, "q", "quit");
3.38 + options.add ("run", Option::String, "r", "run");
3.39 + options.add ("test", Option::String, "t", "test");
3.40 options.setHelpText (
3.41 "VYM - View Your Mind\n"
3.42 "--------------------\n\n"
3.43 @@ -64,11 +68,14 @@
3.44 return 1;
3.45 }
3.46
3.47 + debug=options.isOn ("debug");
3.48 +
3.49 if (options.isOn ("version"))
3.50 {
3.51 - cout << "vym version "<<__VYM_VERSION
3.52 - <<" (c) 2004-2006 Uwe Drechsel - "
3.53 - <<__VYM_BUILD_DATE<<endl;
3.54 + cout << "vym version "<<__VYM_VERSION
3.55 + <<" (c) 2004-2007 Uwe Drechsel - "
3.56 + <<__VYM_BUILD_DATE
3.57 + <<" "<<__VYM_CODENAME<<endl;
3.58
3.59 return 0;
3.60 }
4.1 --- a/mainwindow.cpp Wed Apr 25 16:02:54 2007 +0000
4.2 +++ b/mainwindow.cpp Wed Apr 25 16:02:54 2007 +0000
4.3 @@ -98,6 +98,9 @@
4.4 // Initialize properties window
4.5 branchPropertyWindow = new BranchPropertyWindow();
4.6 branchPropertyWindow->move (20,20);
4.7 + branchPropertyWindow->resize (settings.value( "/branchpropertywindow/geometry/size",QSize (150,100)).toSize());
4.8 + branchPropertyWindow->move (settings.value( "/branchpropertywindow/geometry/pos", QPoint(20,20)).toPoint());
4.9 +
4.10
4.11 // Initialize script editor
4.12 scriptEditor = new SimpleScriptEditor();
4.13 @@ -201,12 +204,12 @@
4.14 settings.setValue( "/mapeditor/editmode/useFlagGroups",actionSettingsUseFlagGroups->isOn() );
4.15 settings.setValue( "/export/useHideExport",actionSettingsUseHideExport->isOn() );
4.16
4.17 - //FIXME save branchPropWindow settings
4.18 - //FIXME save scriptEditor settings
4.19 + //TODO save scriptEditor settings
4.20
4.21 // call the destructors
4.22 delete textEditor;
4.23 delete historyWindow;
4.24 + delete branchPropertyWindow;
4.25
4.26 // Remove temporary directory
4.27 removeDir (QDir(tmpVymDir));
4.28 @@ -361,7 +364,7 @@
4.29
4.30 a = new QAction( QPixmap(iconPath+"fileclose.png"), tr( "&Close Map","File menu" ), this);
4.31 a->setStatusTip (tr( "Close Map" ) );
4.32 - a->setShortcut (Qt::ALT + Qt::Key_C ); //Close map
4.33 + a->setShortcut (Qt::CTRL + Qt::Key_W ); //Close map
4.34 fileMenu->addAction (a);
4.35 connect( a, SIGNAL( triggered() ), this, SLOT( fileCloseMap() ) );
4.36
4.37 @@ -580,10 +583,10 @@
4.38 addAction (alt);
4.39 actionListBranches.append(actionEditToggleScroll);
4.40
4.41 - a = new QAction( tr( "Unscroll all scrolled branches","Edit menu" ), this);
4.42 - a->setStatusTip (tr( "Unscroll all" ));
4.43 + a = new QAction( tr( "Unscroll childs","Edit menu" ), this);
4.44 + a->setStatusTip (tr( "Unscroll all scrolled branches in selected subtree" ));
4.45 editMenu->addAction (a);
4.46 - connect( a, SIGNAL( triggered() ), this, SLOT( editUnScrollAll() ) );
4.47 + connect( a, SIGNAL( triggered() ), this, SLOT( editUnscrollChilds() ) );
4.48
4.49 editMenu->addSeparator();
4.50
4.51 @@ -785,13 +788,13 @@
4.52 connect( a, SIGNAL( triggered() ), this, SLOT( editLoadImage() ) );
4.53 actionEditLoadImage=a;
4.54
4.55 - a = new QAction( tr( "Property Dialog","Dialog to edit properties of selection" )+QString ("..."), this);
4.56 + a = new QAction( tr( "Property window","Dialog to edit properties of selection" )+QString ("..."), this);
4.57 a->setStatusTip (tr( "Set properties for selection" ));
4.58 a->setShortcut ( Qt::CTRL + Qt::Key_I ); //Property window
4.59 a->setShortcutContext (Qt::WindowShortcut);
4.60 addAction (a);
4.61 - connect( a, SIGNAL( triggered() ), this, SLOT( showPropertyDialog() ) );
4.62 - actionTogglePropertyDialog=a;
4.63 + connect( a, SIGNAL( triggered() ), this, SLOT( windowToggleProperty() ) );
4.64 + actionTogglePropertyWindow=a;
4.65 }
4.66
4.67 // Format Actions
4.68 @@ -869,18 +872,6 @@
4.69 formatMenu->addAction (a);
4.70 actionFormatLinkStylePolyParabel=a;
4.71
4.72 - a = new QAction( tr( "Include images vertically","Branch attribute" ), this);
4.73 - a->setStatusTip ( tr ("Include top and bottom position of images into branch"));
4.74 - a->setToggleAction(true);
4.75 - connect( a, SIGNAL( triggered() ), this, SLOT( formatIncludeImagesVer() ) );
4.76 - actionFormatIncludeImagesVer=a;
4.77 -
4.78 - a = new QAction( tr( "Include images horizontally","Branch attribute" ), this);
4.79 - a->setStatusTip ( tr ("Include left and right position of images into branch"));
4.80 - a->setToggleAction(true);
4.81 - connect( a, SIGNAL( triggered() ), this, SLOT( formatIncludeImagesHor() ) );
4.82 - actionFormatIncludeImagesHor=a;
4.83 -
4.84 a = new QAction( tr( "Hide link if object is not selected","Branch attribute" ), this);
4.85 a->setStatusTip (tr( "Hide link" ));
4.86 a->setToggleAction(true);
4.87 @@ -974,7 +965,7 @@
4.88 connect( a, SIGNAL( triggered() ), this, SLOT(windowToggleHistory() ) );
4.89 actionViewToggleHistoryWindow=a;
4.90
4.91 - viewMenu->addAction (actionTogglePropertyDialog );
4.92 + viewMenu->addAction (actionTogglePropertyWindow);
4.93
4.94 a = new QAction(tr( "Antialiasing","View action" ),this );
4.95 a->setStatusTip ( tr( "Antialiasing" ));
4.96 @@ -992,13 +983,13 @@
4.97 connect( a, SIGNAL( triggered() ), this, SLOT(windowToggleSmoothPixmap() ) );
4.98 actionViewToggleSmoothPixmapTransform=a;
4.99
4.100 - a = new QAction(tr( "Next Window","View action" ), this);
4.101 + a = new QAction(tr( "Next Map","View action" ), this);
4.102 a->setStatusTip (a->text());
4.103 a->setShortcut (Qt::ALT + Qt::Key_N );
4.104 viewMenu->addAction (a);
4.105 connect( a, SIGNAL( triggered() ), this, SLOT(windowNextEditor() ) );
4.106
4.107 - a = new QAction (tr( "Previous Window","View action" ), this );
4.108 + a = new QAction (tr( "Previous Map","View action" ), this );
4.109 a->setStatusTip (a->text());
4.110 a->setShortcut (Qt::ALT + Qt::Key_P );
4.111 viewMenu->addAction (a);
4.112 @@ -1375,12 +1366,34 @@
4.113 connect( a, SIGNAL( triggered() ), this, SLOT( settingsURL() ) );
4.114 settingsMenu->addAction (a);
4.115
4.116 - a = new QAction( tr( "Set path for macros","Settings action"), this);
4.117 + a = new QAction( tr( "Set path for macros","Settings action")+"...", this);
4.118 a->setStatusTip( tr( "Set path for macros"));
4.119 connect( a, SIGNAL( triggered() ), this, SLOT( settingsMacroDir() ) );
4.120 settingsMenu->addAction (a);
4.121
4.122 + a = new QAction( tr( "Set number of undo levels","Settings action")+"...", this);
4.123 + a->setStatusTip( tr( "Set number of undo levels"));
4.124 + connect( a, SIGNAL( triggered() ), this, SLOT( settingsUndoLevels() ) );
4.125 + settingsMenu->addAction (a);
4.126 +
4.127 settingsMenu->addSeparator();
4.128 +
4.129 + a = new QAction( tr( "Autosave","Settings action"), this);
4.130 + a->setStatusTip( tr( "Autosave"));
4.131 + a->setToggleAction(true);
4.132 + a->setOn ( settings.value ("/mapeditor/autosave/use",true).toBool());
4.133 + connect( a, SIGNAL( triggered() ), this, SLOT( settingsAutosaveToggle() ) );
4.134 + settingsMenu->addAction (a);
4.135 + actionSettingsAutosaveToggle=a;
4.136 +
4.137 + a = new QAction( tr( "Autosave time","Settings action")+"...", this);
4.138 + a->setStatusTip( tr( "Autosave time"));
4.139 + connect( a, SIGNAL( triggered() ), this, SLOT( settingsAutosaveTime() ) );
4.140 + settingsMenu->addAction (a);
4.141 + actionSettingsAutosaveTime=a;
4.142 +
4.143 + settingsMenu->addSeparator();
4.144 +
4.145 a = new QAction( tr( "Edit branch after adding it","Settings action" ), this );
4.146 a->setStatusTip( tr( "Edit branch after adding it" ));
4.147 a->setToggleAction(true);
4.148 @@ -1472,7 +1485,7 @@
4.149
4.150 // Context Menu for branch or mapcenter
4.151 branchContextMenu =new QMenu (this);
4.152 - branchContextMenu->addAction (actionTogglePropertyDialog);
4.153 + branchContextMenu->addAction (actionTogglePropertyWindow);
4.154 branchContextMenu->addSeparator();
4.155
4.156 // Submenu "Add"
4.157 @@ -1498,14 +1511,12 @@
4.158
4.159 branchContextMenu->addSeparator();
4.160 branchContextMenu->addAction ( actionEditLoadImage);
4.161 - branchContextMenu->addAction ( actionFormatIncludeImagesVer );
4.162 - branchContextMenu->addAction ( actionFormatIncludeImagesHor );
4.163
4.164 // Submenu for Links (URLs, vymLinks)
4.165 branchLinksContextMenu =new QMenu (this);
4.166
4.167 branchContextMenu->addSeparator();
4.168 - branchLinksContextMenu=branchContextMenu->addMenu(tr("URLs and vymLinks","Context menu name"));
4.169 + branchLinksContextMenu=branchContextMenu->addMenu(tr("References (URLs, vymLinks, ...)","Context menu name"));
4.170 branchLinksContextMenu->addAction ( actionEditOpenURL );
4.171 branchLinksContextMenu->addAction ( actionEditOpenURLTab );
4.172 branchLinksContextMenu->addAction ( actionEditOpenMultipleURLTabs );
4.173 @@ -1677,9 +1688,8 @@
4.174 {
4.175 // Unselect all possibly selected objects
4.176 // (Important to update note editor)
4.177 - int i;
4.178 MapEditor *me;
4.179 - for (i=0;i<=tabWidget->count() -1;i++)
4.180 + for (int i=0;i<=tabWidget->count() -1;i++)
4.181 {
4.182
4.183 me=(MapEditor*)tabWidget->page(i);
4.184 @@ -1972,7 +1982,7 @@
4.185 setupRecentMapsMenu();
4.186 }
4.187
4.188 -void Main::fileSave(const SaveMode &savemode)
4.189 +void Main::fileSave(MapEditor *me, const SaveMode &savemode)
4.190 {
4.191 // tmp dir for zipping
4.192 QString tmpMapDir;
4.193 @@ -1982,13 +1992,12 @@
4.194
4.195 QString safeFilePath;
4.196
4.197 - bool saveZipped=currentMapEditor()->saveZipped();
4.198 -
4.199 - MapEditor * me=currentMapEditor();
4.200 + bool saveZipped=me->saveZipped();
4.201 +
4.202 if (me)
4.203 {
4.204 QString fn=me->getFilePath();
4.205 - // filename=unnamed, filepath="" in constructor...
4.206 + // filename=unnamed, filepath="" in constructor of mapEditor
4.207 if ( !fn.isEmpty() )
4.208 {
4.209 // We have a filepath, go on saving
4.210 @@ -2067,6 +2076,8 @@
4.211 // We have no filepath yet,
4.212 // call fileSaveAs() now, this will call fileSave()
4.213 // again.
4.214 + // First switch to editor
4.215 + tabWidget->setCurrentWidget (me);
4.216 fileSaveAs(savemode);
4.217 }
4.218 }
4.219 @@ -2089,7 +2100,12 @@
4.220
4.221 void Main::fileSave()
4.222 {
4.223 - fileSave (CompleteMap);
4.224 + fileSave (currentMapEditor(), CompleteMap);
4.225 +}
4.226 +
4.227 +void Main::fileSave(MapEditor *me)
4.228 +{
4.229 + fileSave (me,CompleteMap);
4.230 }
4.231
4.232 void Main::fileSaveAs(const SaveMode& savemode)
4.233 @@ -2145,7 +2161,7 @@
4.234
4.235 // Save now
4.236 currentMapEditor()->setFilePath(fn);
4.237 - fileSave(savemode);
4.238 + fileSave(currentMapEditor(), savemode);
4.239
4.240 // Set name of tab
4.241 if (savemode==CompleteMap)
4.242 @@ -2415,7 +2431,7 @@
4.243 {
4.244 case QMessageBox::Yes:
4.245 // save and close
4.246 - fileSave(CompleteMap);
4.247 + fileSave(currentMapEditor(), CompleteMap);
4.248 break;
4.249 case QMessageBox::No:
4.250 // close without saving
4.251 @@ -2466,7 +2482,7 @@
4.252 switch( mb.exec() ) {
4.253 case QMessageBox::Yes:
4.254 // save (the changed editors) and exit
4.255 - fileSave(CompleteMap);
4.256 + fileSave(currentMapEditor(), CompleteMap);
4.257 break;
4.258 case QMessageBox::No:
4.259 // exit without saving
4.260 @@ -2846,7 +2862,7 @@
4.261 }
4.262 }
4.263
4.264 -void Main::editUnScrollAll()
4.265 +void Main::editUnscrollChilds()
4.266 {
4.267 if (currentMapEditor())
4.268 currentMapEditor()->unscrollChilds();
4.269 @@ -3124,18 +3140,6 @@
4.270 }
4.271
4.272
4.273 -void Main::formatIncludeImagesVer()
4.274 -{
4.275 - if (currentMapEditor())
4.276 - currentMapEditor()->setIncludeImagesVer(actionFormatIncludeImagesVer->isOn());
4.277 -}
4.278 -
4.279 -void Main::formatIncludeImagesHor()
4.280 -{
4.281 - if (currentMapEditor())
4.282 - currentMapEditor()->setIncludeImagesHor(actionFormatIncludeImagesHor->isOn());
4.283 -}
4.284 -
4.285 void Main::formatHideLinkUnselected() //FIXME get rid of this with imagepropertydialog
4.286 {
4.287 if (currentMapEditor())
4.288 @@ -3213,6 +3217,39 @@
4.289 settings.setValue ("/macros/macroDir",dir.path());
4.290 }
4.291
4.292 +void Main::settingsUndoLevels()
4.293 +{
4.294 + bool ok;
4.295 + int i = QInputDialog::getInteger(
4.296 + this,
4.297 + tr("QInputDialog::getInteger()"),
4.298 + tr("Number of undo/redo levels:"), settings.value("/mapeditor/stepsTotal").toInt(), 0, 1000, 1, &ok);
4.299 + if (ok)
4.300 + {
4.301 + settings.setValue ("/mapeditor/stepsTotal",i);
4.302 + QMessageBox::information( this, tr( "VYM -Information:" ),
4.303 + tr("Settings have been changed. The next map opened will have \"%1\" undo/redo levels").arg(i));
4.304 + }
4.305 +}
4.306 +
4.307 +void Main::settingsAutosaveToggle()
4.308 +{
4.309 + settings.setValue ("/mapeditor/autosave/used",actionSettingsAutosaveToggle->isOn() );
4.310 +}
4.311 +
4.312 +void Main::settingsAutosaveTime()
4.313 +{
4.314 + bool ok;
4.315 + int i = QInputDialog::getInteger(
4.316 + this,
4.317 + tr("QInputDialog::getInteger()"),
4.318 + tr("Number of seconds before autosave:"), settings.value("/mapeditor/autosave/ms").toInt() / 1000, 10, 10000, 1, &ok);
4.319 + if (ok)
4.320 + {
4.321 + settings.setValue ("/mapeditor/autosave/ms",i * 1000);
4.322 + }
4.323 +}
4.324 +
4.325 void Main::settingsToggleDelKey()
4.326 {
4.327 if (actionSettingsUseDelKey->isOn())
4.328 @@ -3241,6 +3278,27 @@
4.329
4.330 }
4.331
4.332 +void Main::windowToggleProperty()
4.333 +{
4.334 + if (branchPropertyWindow->isVisible())
4.335 + branchPropertyWindow->hide();
4.336 + else
4.337 + branchPropertyWindow->show();
4.338 + if(currentMapEditor())
4.339 + {
4.340 + LinkableMapObj *sel=currentMapEditor()->getSelection();
4.341 + if (sel && (typeid(*sel) == typeid(BranchObj) ||
4.342 + typeid(*sel) == typeid(MapCenterObj)))
4.343 + {
4.344 + branchPropertyWindow->setMapEditor(currentMapEditor());
4.345 + branchPropertyWindow->setBranch((BranchObj*)sel);
4.346 + return;
4.347 + }
4.348 +
4.349 + }
4.350 + branchPropertyWindow->setBranch(NULL);
4.351 +}
4.352 +
4.353 void Main::windowToggleAntiAlias()
4.354 {
4.355 bool b=actionViewToggleAntiAlias->isOn();
4.356 @@ -3293,23 +3351,23 @@
4.357 actionViewToggleNoteEditor->setOn (textEditor->showWithMain());
4.358 actionViewToggleHistoryWindow->setOn (historyWindow->showWithMain());
4.359
4.360 - if (me->getMapLinkColorHint()==HeadingColor)
4.361 + if (me->getMapLinkColorHint()==LinkableMapObj::HeadingColor)
4.362 actionFormatLinkColorHint->setOn(true);
4.363 else
4.364 actionFormatLinkColorHint->setOn(false);
4.365
4.366 switch (me->getMapLinkStyle())
4.367 {
4.368 - case StyleLine:
4.369 + case LinkableMapObj::Line:
4.370 actionFormatLinkStyleLine->setOn(true);
4.371 break;
4.372 - case StyleParabel:
4.373 + case LinkableMapObj::Parabel:
4.374 actionFormatLinkStyleParabel->setOn(true);
4.375 break;
4.376 - case StylePolyLine:
4.377 + case LinkableMapObj::PolyLine:
4.378 actionFormatLinkStylePolyLine->setOn(true);
4.379 break;
4.380 - case StylePolyParabel:
4.381 + case LinkableMapObj::PolyParabel:
4.382 actionFormatLinkStylePolyParabel->setOn(true);
4.383 break;
4.384 default:
4.385 @@ -3419,10 +3477,6 @@
4.386 for (int i=0; i<actionListBranches.size(); ++i)
4.387 actionListBranches.at(i)->setEnabled(true);
4.388 actionEditDelete->setEnabled (true);
4.389 - actionFormatIncludeImagesVer->setOn
4.390 - ( ((BranchObj*)selection)->getIncludeImagesVer());
4.391 - actionFormatIncludeImagesHor->setOn
4.392 - ( ((BranchObj*)selection)->getIncludeImagesHor());
4.393 actionFormatHideLinkUnselected->setOn
4.394 (selection->getHideLinkUnselected());
4.395 }
4.396 @@ -3469,7 +3523,7 @@
4.397 }
4.398 }
4.399
4.400 -ModMode Main::getModMode()
4.401 +Main::ModMode Main::getModMode()
4.402 {
4.403 if (actionModModeColor->isOn()) return ModModeColor;
4.404 if (actionModModeCopy->isOn()) return ModModeCopy;
4.405 @@ -3517,24 +3571,6 @@
4.406 currentMapEditor()->runScript (script);
4.407 }
4.408
4.409 -void Main::showPropertyDialog()
4.410 -{
4.411 - if(currentMapEditor())
4.412 - {
4.413 - LinkableMapObj *sel=currentMapEditor()->getSelection();
4.414 - if (sel && (typeid(*sel) == typeid(BranchObj) ||
4.415 - typeid(*sel) == typeid(MapCenterObj)))
4.416 - {
4.417 - branchPropertyWindow->show();
4.418 - branchPropertyWindow->setMapEditor(currentMapEditor());
4.419 - branchPropertyWindow->setBranch((BranchObj*)sel);
4.420 - return;
4.421 - }
4.422 -
4.423 - }
4.424 - branchPropertyWindow->setBranch(NULL);
4.425 -}
4.426 -
4.427 void Main::windowNextEditor()
4.428 {
4.429 if (tabWidget->currentPageIndex() < tabWidget->count())
5.1 --- a/mainwindow.h Wed Apr 25 16:02:54 2007 +0000
5.2 +++ b/mainwindow.h Wed Apr 25 16:02:54 2007 +0000
5.3 @@ -12,13 +12,19 @@
5.4 #include "texteditor.h"
5.5 #include "xml.h"
5.6
5.7 -enum ModMode {ModModeNone,ModModeColor,ModModeCopy,ModModeXLink};
5.8 -
5.9 class Main : public QMainWindow
5.10 {
5.11 Q_OBJECT
5.12
5.13 public:
5.14 + /*! Modifier modes are used when CTRL together with a mouse button is pressed */
5.15 + enum ModMode {
5.16 + ModModeNone, //!< Unused
5.17 + ModModeColor, //!< Pick color from object
5.18 + ModModeCopy, //!< Copy object
5.19 + ModModeXLink //!< Create a XLink (XLinkObj) from selected object
5.20 + };
5.21 +
5.22 Main(QWidget* parent=0, const char* name=0, Qt::WFlags f=0);
5.23 ~Main();
5.24 void loadCmdLine();
5.25 @@ -58,8 +64,11 @@
5.26 void fileLoad();
5.27 void fileLoadRecent();
5.28 void addRecentMap (const QString &);
5.29 - void fileSave(const SaveMode & );
5.30 + void fileSave(MapEditor*, const SaveMode & );
5.31 void fileSave();
5.32 +public slots:
5.33 + void fileSave(MapEditor *); // autosave from MapEditor
5.34 +private slots:
5.35 void fileSaveAs(const SaveMode &);
5.36 void fileSaveAs();
5.37 void fileImportKDEBookmarks();
5.38 @@ -114,7 +123,7 @@
5.39 void editMoveUp();
5.40 void editMoveDown();
5.41 void editToggleScroll();
5.42 - void editUnScrollAll();
5.43 + void editUnscrollChilds();
5.44 void editNewBranch();
5.45 void editNewBranchBefore();
5.46 void editNewBranchAbove();
5.47 @@ -150,8 +159,6 @@
5.48 void formatSelectLinkColor();
5.49 void formatSelectSelectionColor();
5.50 void formatToggleLinkColorHint();
5.51 - void formatIncludeImagesVer();
5.52 - void formatIncludeImagesHor();
5.53 void formatHideLinkUnselected();
5.54
5.55 void viewZoomReset();
5.56 @@ -163,9 +170,13 @@
5.57 bool settingsURL();
5.58 void settingsMacroDir();
5.59 void settingsToggleDelKey();
5.60 + void settingsUndoLevels();
5.61 + void settingsAutosaveToggle();
5.62 + void settingsAutosaveTime();
5.63
5.64 void windowToggleNoteEditor();
5.65 void windowToggleHistory();
5.66 + void windowToggleProperty();
5.67 void updateHistory(SimpleSettings &);
5.68 void windowToggleAntiAlias();
5.69 void windowToggleSmoothPixmap();
5.70 @@ -180,7 +191,6 @@
5.71 void runScript(const QString &);
5.72
5.73 private slots:
5.74 - void showPropertyDialog();
5.75 void windowNextEditor();
5.76 void windowPreviousEditor();
5.77 void windowShowNoteEditor();
5.78 @@ -196,6 +206,7 @@
5.79 void helpAboutQT();
5.80
5.81 void callMacro ();
5.82 +
5.83 private:
5.84 QTabWidget *tabWidget;
5.85 FindWindow *findWindow;
5.86 @@ -269,8 +280,6 @@
5.87 QAction* actionFormatBackImage;
5.88 QAction* actionFormatLinkColor;
5.89 QAction* actionFormatSelectionColor;
5.90 - QAction *actionFormatIncludeImagesVer;
5.91 - QAction *actionFormatIncludeImagesHor;
5.92
5.93 QActionGroup* actionGroupModModes;
5.94 QAction* actionModModeColor;
5.95 @@ -279,7 +288,7 @@
5.96
5.97 QActionGroup *actionGroupFormatFrameTypes;
5.98
5.99 - QAction *actionTogglePropertyDialog;
5.100 + QAction *actionTogglePropertyWindow;
5.101
5.102 QActionGroup *actionGroupFormatLinkStyles;
5.103 QAction *actionFormatLinkStyleLine;
5.104 @@ -299,6 +308,8 @@
5.105 QAction* actionSettingsUseDelKey;
5.106 QAction* actionSettingsUseFlagGroups;
5.107 QAction* actionSettingsUseHideExport;
5.108 + QAction* actionSettingsAutosaveToggle;
5.109 + QAction* actionSettingsAutosaveTime;
5.110 };
5.111
5.112
6.1 --- a/mapeditor.cpp Wed Apr 25 16:02:54 2007 +0000
6.2 +++ b/mapeditor.cpp Wed Apr 25 16:02:54 2007 +0000
6.3 @@ -27,6 +27,7 @@
6.4 extern QString tmpVymDir;
6.5 extern QString clipboardDir;
6.6 extern bool clipboardEmpty;
6.7 +extern bool debug;
6.8 extern FlagRowObj *standardFlagsDefault;
6.9
6.10 extern QMenu* branchContextMenu;
6.11 @@ -55,7 +56,7 @@
6.12 ///////////////////////////////////////////////////////////////////////
6.13 ///////////////////////////////////////////////////////////////////////
6.14 MapEditor::MapEditor( QWidget* parent) :
6.15 - QGraphicsView(parent)
6.16 + QGraphicsView(parent)
6.17 {
6.18 //cout << "Constructor ME "<<this<<endl;
6.19 mapNum++;
6.20 @@ -79,8 +80,8 @@
6.21
6.22 defLinkColor=QColor (0,0,255);
6.23 defXLinkColor=QColor (180,180,180);
6.24 - linkcolorhint=DefaultColor;
6.25 - linkstyle=StylePolyParabel;
6.26 + linkcolorhint=LinkableMapObj::DefaultColor;
6.27 + linkstyle=LinkableMapObj::PolyParabel;
6.28
6.29 // Create bitmap cursors, platform dependant
6.30 HandOpenCursor=QCursor (QPixmap(iconPath+"cursorhandopen.png"),1,1);
6.31 @@ -125,7 +126,7 @@
6.32 blockReposition=false;
6.33 blockSaveState=false;
6.34
6.35 - hidemode=HideNone;
6.36 + hidemode=BranchObj::HideNone;
6.37
6.38 // Create temporary files
6.39 makeTmpDirs();
6.40 @@ -134,11 +135,19 @@
6.41
6.42 mapCenter->reposition(); // for positioning heading
6.43
6.44 + // TODO animations
6.45 + animObjList.clear();
6.46 + //timerId = startTimer(100);
6.47 +
6.48 + // autosave
6.49 + autosaveTimer=new QTimer (this);
6.50 + connect(autosaveTimer, SIGNAL(timeout()), this, SLOT(autosave()));
6.51 }
6.52
6.53 MapEditor::~MapEditor()
6.54 {
6.55 //cout <<"Destructor MapEditor\n";
6.56 + autosaveTimer->stop();
6.57 }
6.58
6.59 MapCenterObj* MapEditor::getMapCenter()
6.60 @@ -156,6 +165,11 @@
6.61 return blockReposition;
6.62 }
6.63
6.64 +void MapEditor::setSaveStateBlocked(bool b)
6.65 +{
6.66 + blockSaveState=b;
6.67 +}
6.68 +
6.69 QString MapEditor::getName (const LinkableMapObj *lmo)
6.70 {
6.71 QString s;
6.72 @@ -197,13 +211,13 @@
6.73 QString ls;
6.74 switch (linkstyle)
6.75 {
6.76 - case StyleLine:
6.77 + case LinkableMapObj::Line:
6.78 ls="StyleLine";
6.79 break;
6.80 - case StyleParabel:
6.81 + case LinkableMapObj::Parabel:
6.82 ls="StyleParabel";
6.83 break;
6.84 - case StylePolyLine:
6.85 + case LinkableMapObj::PolyLine:
6.86 ls="StylePolyLine";
6.87 break;
6.88 default:
6.89 @@ -213,7 +227,7 @@
6.90
6.91 QString s="<?xml version=\"1.0\" encoding=\"utf-8\"?><!DOCTYPE vymmap>\n";
6.92 QString colhint="";
6.93 - if (linkcolorhint==HeadingColor)
6.94 + if (linkcolorhint==LinkableMapObj::HeadingColor)
6.95 colhint=attribut("linkColorHint","HeadingColor");
6.96
6.97 QString mapAttr=attribut("version",vymVersion);
6.98 @@ -349,7 +363,7 @@
6.99
6.100 /* TODO remove after testing
6.101 */
6.102 - cout << "ME::saveState() "<<endl;
6.103 + if (debug) cout << "ME::saveState() for "<<mapName.ascii()<<endl;
6.104
6.105 int undosAvail=undoSet.readNumEntry ("/history/undosAvail",0);
6.106 int redosAvail=undoSet.readNumEntry ("/history/redosAvail",0);
6.107 @@ -404,21 +418,23 @@
6.108 undoSet.setEntry (QString("/history/version"),vymVersion);
6.109 undoSet.writeSettings(histPath);
6.110
6.111 - /* TODO remove after testing
6.112 - */
6.113 - //cout << " into="<< histPath.toStdString()<<endl;
6.114 - cout << " stepsTotal="<<stepsTotal<<
6.115 - ", undosAvail="<<undosAvail<<
6.116 - ", redosAvail="<<redosAvail<<
6.117 - ", curStep="<<curStep<<endl;
6.118 - cout << " ---------------------------"<<endl;
6.119 - cout << " comment="<<comment.toStdString()<<endl;
6.120 - cout << " undoCom="<<undoCommand.toStdString()<<endl;
6.121 - cout << " undoSel="<<undoSelection.toStdString()<<endl;
6.122 - cout << " redoCom="<<redoCom.toStdString()<<endl;
6.123 - cout << " redoSel="<<redoSelection.toStdString()<<endl;
6.124 - if (saveSel) cout << " saveSel="<<saveSel->getSelectString().ascii()<<endl;
6.125 - cout << " ---------------------------"<<endl;
6.126 + if (debug)
6.127 + {
6.128 + // TODO remove after testing
6.129 + //cout << " into="<< histPath.toStdString()<<endl;
6.130 + cout << " stepsTotal="<<stepsTotal<<
6.131 + ", undosAvail="<<undosAvail<<
6.132 + ", redosAvail="<<redosAvail<<
6.133 + ", curStep="<<curStep<<endl;
6.134 + cout << " ---------------------------"<<endl;
6.135 + cout << " comment="<<comment.toStdString()<<endl;
6.136 + cout << " undoCom="<<undoCommand.toStdString()<<endl;
6.137 + cout << " undoSel="<<undoSelection.toStdString()<<endl;
6.138 + cout << " redoCom="<<redoCom.toStdString()<<endl;
6.139 + cout << " redoSel="<<redoSelection.toStdString()<<endl;
6.140 + if (saveSel) cout << " saveSel="<<saveSel->getSelectString().ascii()<<endl;
6.141 + cout << " ---------------------------"<<endl;
6.142 + }
6.143
6.144 mainWindow->updateHistory (undoSet);
6.145 setChanged();
6.146 @@ -761,7 +777,7 @@
6.147 parser.setError (Aborted,"Type of selection is not a branch");
6.148 } else if (parser.checkParamCount(0))
6.149 {
6.150 - if (!scrollBranch ())
6.151 + if (!scrollBranch (selb))
6.152 parser.setError (Aborted,"Could not scroll branch");
6.153 }
6.154 } else if (com=="select")
6.155 @@ -803,6 +819,17 @@
6.156 selectInt (fio);
6.157
6.158 }
6.159 + } else if (com=="setFrameType")
6.160 + {
6.161 + if ( xelection.type()!=Branch && xelection.type()!= MapCenter && xelection.type()!=FloatImage)
6.162 + {
6.163 + parser.setError (Aborted,"Type of selection does not allow setting frame type");
6.164 + }
6.165 + else if (parser.checkParamCount(1))
6.166 + {
6.167 + s=parser.parString(ok,0);
6.168 + if (ok) setFrameType (s);
6.169 + }
6.170 } else if (com=="setMapAuthor")
6.171 {
6.172 if (parser.checkParamCount(1))
6.173 @@ -869,17 +896,16 @@
6.174 if (xelection.isEmpty() )
6.175 {
6.176 parser.setError (Aborted,"Nothing selected");
6.177 - } else if (! selb)
6.178 + } else if (xelection.type()!=Branch && xelection.type() != MapCenter &&xelection.type()!=FloatImage)
6.179 {
6.180 parser.setError (Aborted,"Type of selection is not a branch or floatimage");
6.181 - //FIXME selb is never a floatimage!!
6.182 } else if (parser.checkParamCount(1))
6.183 {
6.184 b=parser.parBool(ok,0);
6.185 if (ok) setHideExport (b);
6.186 }
6.187 } else if (com=="setIncludeImagesHorizontally")
6.188 - {
6.189 + {
6.190 if (xelection.isEmpty() )
6.191 {
6.192 parser.setError (Aborted,"Nothing selected");
6.193 @@ -996,9 +1022,21 @@
6.194 parser.setError (Aborted,"Type of selection is not a branch");
6.195 } else if (parser.checkParamCount(0))
6.196 {
6.197 - if (!unscrollBranch ())
6.198 + if (!unscrollBranch (selb))
6.199 parser.setError (Aborted,"Could not unscroll branch");
6.200 }
6.201 + } else if (com=="unscrollChilds")
6.202 + {
6.203 + if (xelection.isEmpty() )
6.204 + {
6.205 + parser.setError (Aborted,"Nothing selected");
6.206 + } else if (! selb )
6.207 + {
6.208 + parser.setError (Aborted,"Type of selection is not a branch");
6.209 + } else if (parser.checkParamCount(0))
6.210 + {
6.211 + unscrollChilds ();
6.212 + }
6.213 } else if (com=="unsetFlag")
6.214 {
6.215 if (xelection.isEmpty() )
6.216 @@ -1058,10 +1096,13 @@
6.217
6.218 void MapEditor::setChanged()
6.219 {
6.220 + if (!mapChanged)
6.221 + autosaveTimer->start(settings.value("/mapeditor/autosave/ms/",300000).toInt());
6.222 mapChanged=true;
6.223 mapDefault=false;
6.224 mapUnsaved=true;
6.225 findReset();
6.226 +
6.227 }
6.228
6.229 void MapEditor::closeMap()
6.230 @@ -1168,7 +1209,9 @@
6.231 err=aborted;
6.232 } else
6.233 {
6.234 + bool blockSaveStateOrg=blockSaveState;
6.235 blockReposition=true;
6.236 + blockSaveState=true;
6.237 QXmlInputSource source( file);
6.238 QXmlSimpleReader reader;
6.239 reader.setContentHandler( &handler );
6.240 @@ -1177,10 +1220,9 @@
6.241 handler.setTmpDir (filePath.left(filePath.findRev("/",-1))); // needed to load files with rel. path
6.242 handler.setInputFile (file.name());
6.243 handler.setLoadMode (lmode);
6.244 - blockSaveState=true;
6.245 bool ok = reader.parse( source );
6.246 blockReposition=false;
6.247 - blockSaveState=false;
6.248 + blockSaveState=blockSaveStateOrg;
6.249 file.close();
6.250 if ( ok )
6.251 {
6.252 @@ -1191,6 +1233,7 @@
6.253 mapDefault=false;
6.254 mapChanged=false;
6.255 mapUnsaved=false;
6.256 + autosaveTimer->stop();
6.257 }
6.258 } else
6.259 {
6.260 @@ -1224,7 +1267,8 @@
6.261 if (savemode==CompleteMap || xelection.isEmpty())
6.262 saveFile=saveToDir (fileDir,mapName+"-",true,QPointF(),NULL);
6.263 else
6.264 - saveFile=saveToDir (fileDir,mapName+"-",true,QPointF(),xelection.getBranch()); //FIXME check selected FIO
6.265 + //save () FIXME check FIO
6.266 + saveFile=saveToDir (fileDir,mapName+"-",true,QPointF(),xelection.getBranch());
6.267
6.268 if (!saveStringToDisk(fileDir+fname,saveFile))
6.269 return 1;
6.270 @@ -1233,6 +1277,7 @@
6.271 {
6.272 mapChanged=false;
6.273 mapUnsaved=false;
6.274 + autosaveTimer->stop();
6.275 updateActions();
6.276 }
6.277
6.278 @@ -1373,7 +1418,7 @@
6.279 return pix;
6.280 }
6.281
6.282 -void MapEditor::setHideTmpMode (HideTmpMode mode)
6.283 +void MapEditor::setHideTmpMode (BranchObj::HideTmpMode mode)
6.284 {
6.285 hidemode=mode;
6.286 mapCenter->setHideTmp (hidemode);
6.287 @@ -1381,7 +1426,7 @@
6.288 scene()->update();
6.289 }
6.290
6.291 -HideTmpMode MapEditor::getHideTmpMode()
6.292 +BranchObj::HideTmpMode MapEditor::getHideTmpMode()
6.293 {
6.294 return hidemode;
6.295 }
6.296 @@ -1399,9 +1444,9 @@
6.297 // should be called before and after exports
6.298 // depending on the settings
6.299 if (b && settings.value("/export/useHideExport","yes")=="yes")
6.300 - setHideTmpMode (HideExport);
6.301 + setHideTmpMode (BranchObj::HideExport);
6.302 else
6.303 - setHideTmpMode (HideNone);
6.304 + setHideTmpMode (BranchObj::HideNone);
6.305 }
6.306
6.307 void MapEditor::exportImage(QString fn, QString format)
6.308 @@ -1496,14 +1541,16 @@
6.309
6.310 void MapEditor::redo()
6.311 {
6.312 - blockSaveState=true;
6.313 -
6.314 // Restore variables
6.315 int curStep=undoSet.readNumEntry (QString("/history/curStep"));
6.316 int undosAvail=undoSet.readNumEntry (QString("/history/undosAvail"));
6.317 int redosAvail=undoSet.readNumEntry (QString("/history/redosAvail"));
6.318 // Can we undo at all?
6.319 if (redosAvail<1) return;
6.320 +
6.321 + bool blockSaveStateOrg=blockSaveState;
6.322 + blockSaveState=true;
6.323 +
6.324 redosAvail--;
6.325
6.326 if (undosAvail<stepsTotal) undosAvail++;
6.327 @@ -1524,19 +1571,20 @@
6.328 // Find out current undo directory
6.329 QString bakMapDir=QDir::convertSeparators (QString(tmpMapDir+"/undo-%1").arg(curStep));
6.330
6.331 -/* TODO remove testing
6.332 -*/
6.333 - cout << "ME::redo() begin\n";
6.334 - cout << " undosAvail="<<undosAvail<<endl;
6.335 - cout << " redosAvail="<<redosAvail<<endl;
6.336 - cout << " curStep="<<curStep<<endl;
6.337 - cout << " ---------------------------"<<endl;
6.338 - cout << " comment="<<comment.toStdString()<<endl;
6.339 - cout << " undoCom="<<undoCommand.toStdString()<<endl;
6.340 - cout << " undoSel="<<undoSelection.toStdString()<<endl;
6.341 - cout << " redoCom="<<redoCommand.toStdString()<<endl;
6.342 - cout << " redoSel="<<redoSelection.toStdString()<<endl;
6.343 - cout << " ---------------------------"<<endl<<endl;
6.344 + if (debug)
6.345 + {
6.346 + cout << "ME::redo() begin\n";
6.347 + cout << " undosAvail="<<undosAvail<<endl;
6.348 + cout << " redosAvail="<<redosAvail<<endl;
6.349 + cout << " curStep="<<curStep<<endl;
6.350 + cout << " ---------------------------"<<endl;
6.351 + cout << " comment="<<comment.toStdString()<<endl;
6.352 + cout << " undoCom="<<undoCommand.toStdString()<<endl;
6.353 + cout << " undoSel="<<undoSelection.toStdString()<<endl;
6.354 + cout << " redoCom="<<redoCommand.toStdString()<<endl;
6.355 + cout << " redoSel="<<redoSelection.toStdString()<<endl;
6.356 + cout << " ---------------------------"<<endl<<endl;
6.357 + }
6.358
6.359 // select object before redo
6.360 if (!redoSelection.isEmpty())
6.361 @@ -1546,7 +1594,7 @@
6.362 parseAtom (redoCommand);
6.363 mapCenter->reposition();
6.364
6.365 - blockSaveState=false;
6.366 + blockSaveState=blockSaveStateOrg;
6.367
6.368 undoSet.setEntry ("/history/undosAvail",QString::number(undosAvail));
6.369 undoSet.setEntry ("/history/redosAvail",QString::number(redosAvail));
6.370 @@ -1577,8 +1625,6 @@
6.371
6.372 void MapEditor::undo()
6.373 {
6.374 - blockSaveState=true;
6.375 -
6.376 // Restore variables
6.377 int curStep=undoSet.readNumEntry (QString("/history/curStep"));
6.378 int undosAvail=undoSet.readNumEntry (QString("/history/undosAvail"));
6.379 @@ -1587,6 +1633,9 @@
6.380 // Can we undo at all?
6.381 if (undosAvail<1) return;
6.382
6.383 + bool blockSaveStateOrg=blockSaveState;
6.384 + blockSaveState=true;
6.385 +
6.386 QString undoCommand= undoSet.readEntry (QString("/history/step-%1/undoCommand").arg(curStep));
6.387 QString undoSelection=undoSet.readEntry (QString("/history/step-%1/undoSelection").arg(curStep));
6.388 QString redoCommand= undoSet.readEntry (QString("/history/step-%1/redoCommand").arg(curStep));
6.389 @@ -1605,19 +1654,20 @@
6.390 if (!undoSelection.isEmpty())
6.391 select (undoSelection);
6.392
6.393 -/* TODO testing
6.394 -*/
6.395 - cout << "ME::undo() begin\n";
6.396 - cout << " undosAvail="<<undosAvail<<endl;
6.397 - cout << " redosAvail="<<redosAvail<<endl;
6.398 - cout << " curStep="<<curStep<<endl;
6.399 - cout << " ---------------------------"<<endl;
6.400 - cout << " comment="<<comment.toStdString()<<endl;
6.401 - cout << " undoCom="<<undoCommand.toStdString()<<endl;
6.402 - cout << " undoSel="<<undoSelection.toStdString()<<endl;
6.403 - cout << " redoCom="<<redoCommand.toStdString()<<endl;
6.404 - cout << " redoSel="<<redoSelection.toStdString()<<endl;
6.405 - cout << " ---------------------------"<<endl<<endl;
6.406 + if (debug)
6.407 + {
6.408 + cout << "ME::undo() begin\n";
6.409 + cout << " undosAvail="<<undosAvail<<endl;
6.410 + cout << " redosAvail="<<redosAvail<<endl;
6.411 + cout << " curStep="<<curStep<<endl;
6.412 + cout << " ---------------------------"<<endl;
6.413 + cout << " comment="<<comment.toStdString()<<endl;
6.414 + cout << " undoCom="<<undoCommand.toStdString()<<endl;
6.415 + cout << " undoSel="<<undoSelection.toStdString()<<endl;
6.416 + cout << " redoCom="<<redoCommand.toStdString()<<endl;
6.417 + cout << " redoSel="<<redoSelection.toStdString()<<endl;
6.418 + cout << " ---------------------------"<<endl<<endl;
6.419 + }
6.420 parseAtom (undoCommand);
6.421 mapCenter->reposition();
6.422
6.423 @@ -1627,7 +1677,7 @@
6.424
6.425 redosAvail++;
6.426
6.427 - blockSaveState=false;
6.428 + blockSaveState=blockSaveStateOrg;
6.429 /* TODO remove testing
6.430 cout << "ME::undo() end\n";
6.431 cout << " undosAvail="<<undosAvail<<endl;
6.432 @@ -1808,7 +1858,7 @@
6.433 s, "move "+ps,
6.434 s, "move "+qpointfToString (QPointF (x,y)),
6.435 QString("Move %1 to %2").arg(getName(sel)).arg(ps));
6.436 - sel->move(x,y); // FIXME xelection not moved automagically...
6.437 + sel->move(x,y);
6.438 mapCenter->reposition();
6.439 xelection.update();
6.440 }
6.441 @@ -1841,11 +1891,8 @@
6.442 {
6.443 if (!bo->canMoveBranchUp()) return;
6.444 par=(BranchObj*)(bo->getParObj());
6.445 - xelection.unselect(); // FIXME needed?
6.446 - bo=par->moveBranchUp (bo); // bo will be the one below selection
6.447 - xelection.reselect();
6.448 - //saveState (selection,"moveBranchDown ()",bo,"moveBranchUp ()",QString("Move up %1").arg(getName(bo)));
6.449 - saveState (bo,"moveBranchDown ()",bo,"moveBranchUp ()",QString("Move up %1").arg(getName(bo)));
6.450 + BranchObj *obo=par->moveBranchUp (bo); // bo will be the one below selection
6.451 + saveState (bo->getSelectString(),"moveBranchDown ()",obo->getSelectString(),"moveBranchUp ()",QString("Move up %1").arg(getName(bo)));
6.452 mapCenter->reposition();
6.453 scene()->update();
6.454 xelection.update();
6.455 @@ -1861,11 +1908,8 @@
6.456 {
6.457 if (!bo->canMoveBranchDown()) return;
6.458 par=(BranchObj*)(bo->getParObj());
6.459 - xelection.unselect(); // FIXME needed?
6.460 - bo=par->moveBranchDown(bo); // bo will be the one above selection
6.461 - xelection.reselect();
6.462 - //saveState(selection,"moveBranchUp ()",bo,"moveBranchDown ()",QString("Move down %1").arg(getName(bo)));
6.463 - saveState(bo,"moveBranchUp ()",bo,"moveBranchDown ()",QString("Move down %1").arg(getName(bo)));
6.464 + BranchObj *obo=par->moveBranchDown(bo); // bo will be the one above selection
6.465 + saveState(bo->getSelectString(),"moveBranchUp ()",obo->getSelectString(),"moveBranchDown ()",QString("Move down %1").arg(getName(bo)));
6.466 mapCenter->reposition();
6.467 scene()->update();
6.468 xelection.update();
6.469 @@ -2209,7 +2253,7 @@
6.470 } else
6.471 {
6.472 // Special case, look at orientation
6.473 - if (xelection.single()->getOrientation()==OrientRightOfCenter)
6.474 + if (xelection.single()->getOrientation()==LinkableMapObj::RightOfCenter)
6.475 num=QString ("%1").arg(num.toUInt()+1);
6.476 else
6.477 num=QString ("%1").arg(num.toUInt()-1);
6.478 @@ -2291,7 +2335,7 @@
6.479 } else
6.480 {
6.481 // Special case, look at orientation
6.482 - if (xelection.single()->getOrientation()==OrientRightOfCenter)
6.483 + if (xelection.single()->getOrientation()==LinkableMapObj::RightOfCenter)
6.484 num=QString ("%1").arg(num.toInt()-1);
6.485 else
6.486 num=QString ("%1").arg(num.toInt()+1);
6.487 @@ -2325,7 +2369,7 @@
6.488 BranchObj *bo=xelection.getBranch();
6.489 if (bo && xelection.type()==Branch)
6.490 {
6.491 - if (bo->getOrientation()==OrientRightOfCenter)
6.492 + if (bo->getOrientation()==LinkableMapObj::RightOfCenter)
6.493 selectPrevBranchInt();
6.494 else
6.495 if (bo->getDepth()==1)
6.496 @@ -2339,7 +2383,7 @@
6.497 {
6.498 BranchObj *bo=xelection.getBranch();
6.499 if (bo && xelection.type()==Branch)
6.500 - if (bo->getOrientation()==OrientRightOfCenter)
6.501 + if (bo->getOrientation()==LinkableMapObj::RightOfCenter)
6.502 selectNextBranchInt();
6.503 else
6.504 if (bo->getDepth()==1)
6.505 @@ -2363,7 +2407,7 @@
6.506 if (bo)
6.507 {
6.508 // Workaround for reselecting on left and right side
6.509 - if (bo->getOrientation()==OrientRightOfCenter)
6.510 + if (bo->getOrientation()==LinkableMapObj::RightOfCenter)
6.511 bo=par->getLastBranch();
6.512 if (bo)
6.513 {
6.514 @@ -2376,7 +2420,7 @@
6.515 } else
6.516 {
6.517 par=(BranchObj*)(sel->getParObj());
6.518 - if (sel->getOrientation()==OrientRightOfCenter)
6.519 + if (sel->getOrientation()==LinkableMapObj::RightOfCenter)
6.520 {
6.521 if (xelection.type() == Branch ||
6.522 xelection.type() == FloatImage)
6.523 @@ -2416,7 +2460,7 @@
6.524 if (bo)
6.525 {
6.526 // Workaround for reselecting on left and right side
6.527 - if (bo->getOrientation()==OrientLeftOfCenter)
6.528 + if (bo->getOrientation()==LinkableMapObj::LeftOfCenter)
6.529 bo=par->getFirstBranch();
6.530 if (bo)
6.531 {
6.532 @@ -2428,7 +2472,7 @@
6.533 } else
6.534 {
6.535 par=(BranchObj*)(xelection.single()->getParObj());
6.536 - if (xelection.single()->getOrientation()==OrientLeftOfCenter)
6.537 + if (xelection.single()->getOrientation()==LinkableMapObj::LeftOfCenter)
6.538 {
6.539 if (xelection.type() == Branch ||
6.540 xelection.type() == FloatImage)
6.541 @@ -3025,13 +3069,13 @@
6.542 );
6.543
6.544 if (s=="StyleLine")
6.545 - linkstyle=StyleLine;
6.546 + linkstyle=LinkableMapObj::Line;
6.547 else if (s=="StyleParabel")
6.548 - linkstyle=StyleParabel;
6.549 + linkstyle=LinkableMapObj::Parabel;
6.550 else if (s=="StylePolyLine")
6.551 - linkstyle=StylePolyLine;
6.552 + linkstyle=LinkableMapObj::PolyLine;
6.553 else
6.554 - linkstyle=StylePolyParabel;
6.555 + linkstyle=LinkableMapObj::PolyParabel;
6.556
6.557 BranchObj *bo;
6.558 bo=mapCenter->first();
6.559 @@ -3044,7 +3088,7 @@
6.560 mapCenter->reposition();
6.561 }
6.562
6.563 -LinkStyle MapEditor::getMapLinkStyle ()
6.564 +LinkableMapObj::Style MapEditor::getMapLinkStyle ()
6.565 {
6.566 return linkstyle;
6.567 }
6.568 @@ -3067,7 +3111,7 @@
6.569 }
6.570 }
6.571
6.572 -void MapEditor::setMapLinkColorHint(LinkColorHint lch)
6.573 +void MapEditor::setMapLinkColorHint(LinkableMapObj::ColorHint lch)
6.574 {
6.575 linkcolorhint=lch;
6.576 setMapLinkColorHintInt();
6.577 @@ -3075,10 +3119,10 @@
6.578
6.579 void MapEditor::toggleMapLinkColorHint()
6.580 {
6.581 - if (linkcolorhint==HeadingColor)
6.582 - linkcolorhint=DefaultColor;
6.583 + if (linkcolorhint==LinkableMapObj::HeadingColor)
6.584 + linkcolorhint=LinkableMapObj::DefaultColor;
6.585 else
6.586 - linkcolorhint=HeadingColor;
6.587 + linkcolorhint=LinkableMapObj::HeadingColor;
6.588 BranchObj *bo;
6.589 bo=mapCenter->first();
6.590 while (bo)
6.591 @@ -3088,7 +3132,7 @@
6.592 }
6.593 }
6.594
6.595 -LinkColorHint MapEditor::getMapLinkColorHint()
6.596 +LinkableMapObj::ColorHint MapEditor::getMapLinkColorHint()
6.597 {
6.598 return linkcolorhint;
6.599 }
6.600 @@ -3162,9 +3206,8 @@
6.601 return xelection.getColor();
6.602 }
6.603
6.604 -bool MapEditor::scrollBranch()
6.605 +bool MapEditor::scrollBranch(BranchObj *bo)
6.606 {
6.607 - BranchObj *bo=xelection.getBranch();
6.608 if (bo)
6.609 {
6.610 if (bo->isScrolled()) return false;
6.611 @@ -3187,9 +3230,8 @@
6.612 return false;
6.613 }
6.614
6.615 -bool MapEditor::unscrollBranch()
6.616 +bool MapEditor::unscrollBranch(BranchObj *bo)
6.617 {
6.618 - BranchObj *bo=xelection.getBranch();
6.619 if (bo)
6.620 {
6.621 if (!bo->isScrolled()) return false;
6.622 @@ -3218,13 +3260,13 @@
6.623 if (xelection.type()==Branch )
6.624 {
6.625 if (bo->isScrolled())
6.626 - unscrollBranch ();
6.627 + unscrollBranch (bo);
6.628 else
6.629 - scrollBranch ();
6.630 + scrollBranch (bo);
6.631 }
6.632 }
6.633
6.634 -void MapEditor::unscrollChilds() // FIXME saveState missing
6.635 +void MapEditor::unscrollChilds()
6.636 {
6.637 BranchObj *bo=xelection.getBranch();
6.638 if (bo)
6.639 @@ -3232,7 +3274,7 @@
6.640 bo->first();
6.641 while (bo)
6.642 {
6.643 - if (bo->isScrolled()) bo->toggleScroll();
6.644 + if (bo->isScrolled()) unscrollBranch (bo);
6.645 bo=bo->next();
6.646 }
6.647 }
6.648 @@ -3351,40 +3393,79 @@
6.649 }
6.650 }
6.651
6.652 -void MapEditor::setFrameType(const FrameType &t) // FIXME missing saveState
6.653 +void MapEditor::setFrameType(const FrameObj::FrameType &t)
6.654 {
6.655 BranchObj *bo=xelection.getBranch();
6.656 if (bo)
6.657 {
6.658 + QString s=bo->getFrameTypeName();
6.659 bo->setFrameType (t);
6.660 + saveState (bo, QString("setFrameType (\"%1\")").arg(s),
6.661 + bo, QString ("setFrameType (\"%1\")").arg(bo->getFrameTypeName()),QString ("set type of frame to %1").arg(s));
6.662 mapCenter->reposition();
6.663 bo->updateLink();
6.664 }
6.665 }
6.666
6.667 -void MapEditor::setFrameType(const QString &s) // FIXME missing saveState
6.668 +void MapEditor::setFrameType(const QString &s)
6.669 {
6.670 BranchObj *bo=xelection.getBranch();
6.671 if (bo)
6.672 {
6.673 + saveState (bo, QString("setFrameType (\"%1\")").arg(bo->getFrameTypeName()),
6.674 + bo, QString ("setFrameType (\"%1\")").arg(s),QString ("set type of frame to %1").arg(s));
6.675 bo->setFrameType (s);
6.676 mapCenter->reposition();
6.677 bo->updateLink();
6.678 }
6.679 }
6.680
6.681 -void MapEditor::setFramePenColor(const QColor &c) // FIXME missing saveState
6.682 +void MapEditor::setFramePenColor(const QColor &c)
6.683 {
6.684 BranchObj *bo=xelection.getBranch();
6.685 if (bo)
6.686 + {
6.687 + saveState (bo, QString("setFramePenColor (\"%1\")").arg(bo->getFramePenColor().name() ),
6.688 + bo, QString ("setFramePenColor (\"%1\")").arg(c.name() ),QString ("set pen color of frame to %1").arg(c.name() ));
6.689 bo->setFramePenColor (c);
6.690 + }
6.691 }
6.692
6.693 -void MapEditor::setFrameBrushColor(const QColor &c) // FIXME missing saveState
6.694 +void MapEditor::setFrameBrushColor(const QColor &c)
6.695 {
6.696 BranchObj *bo=xelection.getBranch();
6.697 if (bo)
6.698 + {
6.699 + saveState (bo, QString("setFrameBrushColor (\"%1\")").arg(bo->getFrameBrushColor().name() ),
6.700 + bo, QString ("setFrameBrushColor (\"%1\")").arg(c.name() ),QString ("set brush color of frame to %1").arg(c.name() ));
6.701 bo->setFrameBrushColor (c);
6.702 + }
6.703 +}
6.704 +
6.705 +void MapEditor::setFramePadding (const int &)
6.706 +{
6.707 + BranchObj *bo=xelection.getBranch();
6.708 + /*
6.709 + if (bo)
6.710 + {
6.711 + saveState (bo, QString("setFrameBrushColor (\"%1\")").arg(bo->getFrameBrushColor().name() ),
6.712 + bo, QString ("setFrameBrushColor (\"%1\")").arg(c.name() ),QString ("set brush color of frame to %1").arg(c.name() ));
6.713 + bo->setFrameBrushColor (c);
6.714 + }
6.715 + */
6.716 +}
6.717 +
6.718 +void MapEditor::setFrameBorderWidth(const int &)
6.719 +{
6.720 + BranchObj *bo=xelection.getBranch();
6.721 + /*
6.722 + if (bo)
6.723 + {
6.724 + saveState (bo, QString("setFrameBrushColor (\"%1\")").arg(bo->getFrameBrushColor().name() ),
6.725 + bo, QString ("setFrameBrushColor (\"%1\")").arg(c.name() ),QString ("set brush color of frame to %1").arg(c.name() ));
6.726 + bo->setFrameBrushColor (c);
6.727 + }
6.728 + */
6.729 }
6.730
6.731 void MapEditor::setIncludeImagesVer(bool b)
6.732 @@ -3550,6 +3631,8 @@
6.733 {
6.734 // This is the playground
6.735
6.736 + BranchObj *bo=xelection.getBranch();
6.737 + if (bo) animObjList.append( bo );
6.738
6.739 /*
6.740 WarningDialog dia;
6.741 @@ -3636,13 +3719,13 @@
6.742 {
6.743 switch (mainWindow->getModMode())
6.744 {
6.745 - case ModModeColor:
6.746 + case Main::ModModeColor:
6.747 setCursor (PickColorCursor);
6.748 break;
6.749 - case ModModeCopy:
6.750 + case Main::ModModeCopy:
6.751 setCursor (CopyCursor);
6.752 break;
6.753 - case ModModeXLink:
6.754 + case Main::ModModeXLink:
6.755 setCursor (XLinkCursor);
6.756 break;
6.757 default :
6.758 @@ -3706,13 +3789,13 @@
6.759 // No system flag clicked, take care of modmodes (CTRL-Click)
6.760 if (e->state() & Qt::ControlModifier)
6.761 {
6.762 - if (mainWindow->getModMode()==ModModeColor)
6.763 + if (mainWindow->getModMode()==Main::ModModeColor)
6.764 {
6.765 pickingColor=true;
6.766 setCursor (PickColorCursor);
6.767 return;
6.768 }
6.769 - if (mainWindow->getModMode()==ModModeXLink)
6.770 + if (mainWindow->getModMode()==Main::ModModeXLink)
6.771 {
6.772 BranchObj *bo_begin=NULL;
6.773 if (lmo)
6.774 @@ -3754,7 +3837,7 @@
6.775
6.776 // If modMode==copy, then we want to "move" the _new_ object around
6.777 // then we need the offset from p to the _old_ selection, because of tmp
6.778 - if (mainWindow->getModMode()==ModModeCopy &&
6.779 + if (mainWindow->getModMode()==Main::ModModeCopy &&
6.780 e->state() & Qt::ControlModifier)
6.781 {
6.782 if (xelection.type()==Branch)
6.783 @@ -3801,7 +3884,7 @@
6.784 if ( lmosel && movingObj)
6.785 {
6.786 // reset cursor if we are moving and don't copy
6.787 - if (mainWindow->getModMode()!=ModModeCopy)
6.788 + if (mainWindow->getModMode()!=Main::ModModeCopy)
6.789 setCursor (Qt::ArrowCursor);
6.790
6.791 // To avoid jumping of the sceneView, only
6.792 @@ -3878,7 +3961,7 @@
6.793 } else
6.794 {
6.795 // Move ordinary branch
6.796 - if (lmosel->getOrientation() == OrientLeftOfCenter)
6.797 + if (lmosel->getOrientation() == LinkableMapObj::LeftOfCenter)
6.798 // Add width of bbox here, otherwise alignRelTo will cause jumping around
6.799 lmosel->move(p.x() -movingObj_start.x()+lmosel->getBBox().width(),
6.800 p.y()-movingObj_start.y() +lmosel->getTopPad() );
6.801 @@ -3958,7 +4041,7 @@
6.802 }
6.803
6.804 // Have we been drawing a link?
6.805 - if (drawingLink)
6.806 + if (drawingLink) //FIXME savestate missing
6.807 {
6.808 drawingLink=false;
6.809 // Check if we are over another branch
6.810 @@ -3968,7 +4051,7 @@
6.811 tmpXLink->setEnd ( ((BranchObj*)(dst)) );
6.812 tmpXLink->updateXLink();
6.813 tmpXLink->activate();
6.814 - //saveStateComplete(QString("Activate xLink from %1 to %2").arg(getName(tmpXLink->getBegin())).arg(getName(tmpXLink->getEnd())) ); //FIXME undoCommand
6.815 + //saveStateComplete(QString("Activate xLink from %1 to %2").arg(getName(tmpXLink->getBegin())).arg(getName(tmpXLink->getEnd())) );
6.816 } else
6.817 {
6.818 delete(tmpXLink);
6.819 @@ -4187,8 +4270,28 @@
6.820 event->acceptProposedAction();
6.821 }
6.822
6.823 -/*
6.824 -void MapEditor::contentsDropEvent(QDropEvent *event)
6.825 +void MapEditor::timerEvent(QTimerEvent *event) //FIXME testing
6.826 +{
6.827 + Q_UNUSED(event);
6.828 +
6.829 + cout << "ME::timerEvent\n";
6.830 +
6.831 + for (int i=0; i<animObjList.size(); ++i)
6.832 + {
6.833 + animObjList.at(i)->animate();
6.834 + ((BranchObj*)animObjList.at(i))->move2RelPos (((BranchObj*)animObjList.at(i))->getRelPos() );
6.835 + }
6.836 + mapCenter->reposition();
6.837 +}
6.838 +
6.839 +void MapEditor::autosave()
6.840 +{
6.841 + if (mapUnsaved &&mapChanged && settings.value ("/mapeditor/autosave/used",true).toBool() )
6.842 + mainWindow->fileSave (this);
6.843 +}
6.844 +
6.845 +
6.846 +/*FIXME not needed? void MapEditor::contentsDropEvent(QDropEvent *event)
6.847 {
6.848
6.849 } else if (event->provides("application/x-moz-file-promise-url") &&
6.850 @@ -4256,12 +4359,9 @@
6.851 BranchObj *bo=xelection.getBranch();
6.852 if (bo)
6.853 {
6.854 - //FIXME XXX saveStateChangingPart(selection,QString("Add floatimage to %1").arg(getName(bo)));
6.855 - //QString fn=fd->selectedFile();
6.856 - //lastImageDir=fn.left(fn.findRev ("/"));
6.857 FloatImageObj *fio=bo->addFloatImage();
6.858 fio->load(img);
6.859 - fio->setOriginalFilename("Image added by Drag and Drop");
6.860 + fio->setOriginalFilename("Image added by Drag and Drop"); // FIXME savestate
6.861 mapCenter->reposition();
6.862 scene()->update();
6.863 }
7.1 --- a/mapeditor.h Wed Apr 25 16:02:54 2007 +0000
7.2 +++ b/mapeditor.h Wed Apr 25 16:02:54 2007 +0000
7.3 @@ -8,10 +8,13 @@
7.4 #include "file.h"
7.5 #include "misc.h"
7.6 #include "parser.h"
7.7 +#include "ornamentedobj.h"
7.8 #include "selection.h"
7.9 #include "settings.h"
7.10
7.11
7.12 +/*! \brief Main widget in vym to display and edit the map */
7.13 +
7.14 class MapEditor : public QGraphicsView, public xmlObj {
7.15 Q_OBJECT
7.16
7.17 @@ -21,6 +24,8 @@
7.18 MapCenterObj* getMapCenter();
7.19 QGraphicsScene * getScene();
7.20 bool isRepositionBlocked(); // block while load or undo
7.21 + bool isSaveStateBlocked(); // block while undo/redo or while running scripts
7.22 + void setSaveStateBlocked(bool);
7.23
7.24 private:
7.25 QString getName(const LinkableMapObj*); // Get e.g. heading or filename
7.26 @@ -59,8 +64,8 @@
7.27 void setSmoothPixmap(bool);
7.28 private:
7.29 QPixmap getPixmap();
7.30 - void setHideTmpMode (HideTmpMode); // temporary hide stuff
7.31 - HideTmpMode getHideTmpMode(); // temporary hide stuff
7.32 + void setHideTmpMode (BranchObj::HideTmpMode); // temporary hide stuff
7.33 + BranchObj::HideTmpMode getHideTmpMode(); // temporary hide stuff
7.34 public:
7.35 void setExportMode (bool); // temporary hide stuff during export
7.36 void exportImage (QString fn); // export as PNG
7.37 @@ -152,11 +157,11 @@
7.38 void setMapAuthor (const QString &);
7.39 void setMapComment(const QString &);
7.40 void setMapLinkStyle (const QString &); // Set style of link
7.41 - LinkStyle getMapLinkStyle (); // requested in LMO
7.42 + LinkableMapObj::Style getMapLinkStyle (); // requested in LMO
7.43 void setMapDefLinkColor(QColor); // default color of links
7.44 void setMapLinkColorHintInt(); // color of links
7.45 - void setMapLinkColorHint(LinkColorHint);// color of links
7.46 - LinkColorHint getMapLinkColorHint();
7.47 + void setMapLinkColorHint(LinkableMapObj::ColorHint);// color of links
7.48 + LinkableMapObj::ColorHint getMapLinkColorHint();
7.49 QColor getMapDefLinkColor();
7.50 void setMapDefXLinkColor(QColor);
7.51 QColor getMapDefXLinkColor();
7.52 @@ -170,8 +175,8 @@
7.53 public:
7.54 void setSelectionColor(QColor);
7.55 QColor getSelectionColor();
7.56 - bool scrollBranch();
7.57 - bool unscrollBranch();
7.58 + bool scrollBranch(BranchObj*);
7.59 + bool unscrollBranch(BranchObj*);
7.60 void toggleScroll();
7.61 void unscrollChilds();
7.62 private:
7.63 @@ -182,10 +187,12 @@
7.64 void saveFloatImageInt (FloatImageObj*, const QString &, const QString &);
7.65 public:
7.66 void saveFloatImage ();
7.67 - void setFrameType(const FrameType &);
7.68 + void setFrameType(const FrameObj::FrameType &);
7.69 void setFrameType(const QString &);
7.70 void setFramePenColor (const QColor &);
7.71 void setFrameBrushColor (const QColor &);
7.72 + void setFramePadding (const int &);
7.73 + void setFrameBorderWidth (const int &);
7.74 void setIncludeImagesVer(bool);
7.75 void setIncludeImagesHor(bool);
7.76 void setHideLinkUnselected (bool);
7.77 @@ -204,18 +211,25 @@
7.78 virtual void keyPressEvent(QKeyEvent*);
7.79 virtual void keyReleaseEvent(QKeyEvent*);
7.80 virtual void mousePressEvent(QMouseEvent*);
7.81 + virtual void mouseMoveEvent(QMouseEvent*);
7.82 virtual void mouseReleaseEvent(QMouseEvent*);
7.83 virtual void mouseDoubleClickEvent(QMouseEvent*);
7.84 - virtual void mouseMoveEvent(QMouseEvent*);
7.85 + virtual void resizeEvent( QResizeEvent * );
7.86
7.87 void dragEnterEvent (QDragEnterEvent *);
7.88 void dragMoveEvent (QDragMoveEvent *);
7.89 void dragLeaveEvent (QDragLeaveEvent *);
7.90 void dropEvent (QDropEvent *);
7.91
7.92 + void timerEvent(QTimerEvent *event);
7.93 +
7.94 +private slots:
7.95 + void autosave ();
7.96 +
7.97 private:
7.98 QGraphicsScene *mapScene;
7.99 MapCenterObj* mapCenter;
7.100 + QTimer *autosaveTimer;
7.101
7.102 bool adjustCanvasRequested; // collect requests until end of user event
7.103 BranchObj *editingBO; // entering Text into BO
7.104 @@ -223,8 +237,8 @@
7.105 QColor defLinkColor; // default color for links
7.106 QColor defXLinkColor; // default color for xlinks
7.107 int defXLinkWidth; // default width for xlinks
7.108 - LinkColorHint linkcolorhint;// use heading color or own color
7.109 - LinkStyle linkstyle; // default style for links
7.110 + LinkableMapObj::ColorHint linkcolorhint;// use heading color or own color
7.111 + LinkableMapObj::Style linkstyle; // default style for links
7.112
7.113 QCursor HandOpenCursor; // cursor while moving canvas view
7.114 QCursor PickColorCursor; // cursor while picking color
7.115 @@ -273,9 +287,10 @@
7.116 bool EOFind; // true, if search failed
7.117
7.118 QPoint exportOffset; // set before export, used in save
7.119 - HideTmpMode hidemode; // true while exporting to hide some stuff
7.120 -
7.121 - void resizeEvent( QResizeEvent * );
7.122 + BranchObj::HideTmpMode hidemode; // true while exporting to hide some stuff
7.123 +
7.124 + int timerId; // animation timer
7.125 + QList <MapObj*> animObjList;// list with animated objects
7.126 };
7.127 #endif
7.128