1.8.70 Fixes in property window
authorinsilmaril
Sat Mar 31 09:28:27 2007 +0000 (2007-03-31)
changeset 442dfbc371b7280
parent 441 658ad3bc0c8a
child 443 0a4b622d5dc3
1.8.70 Fixes in property window
floatobj.cpp
frameobj.cpp
frameobj.h
historywindow.cpp
historywindow.h
linkablemapobj.cpp
linkablemapobj.h
mainwindow.cpp
mainwindow.h
mapeditor.cpp
mapeditor.h
ornamentedobj.cpp
ornamentedobj.h
texteditor.cpp
texteditor.h
version.h
     1.1 --- a/floatobj.cpp	Sat Mar 31 09:28:27 2007 +0000
     1.2 +++ b/floatobj.cpp	Sat Mar 31 09:28:27 2007 +0000
     1.3 @@ -73,14 +73,11 @@
     1.4  void FloatObj::move (double x, double y)
     1.5  {
     1.6  	MapObj::move(x,y);
     1.7 -	//selbox->setPos(x,y);
     1.8 -	selbox->rect().moveTo (QPointF (x,y));
     1.9  }
    1.10  
    1.11  void FloatObj::move (QPointF p)
    1.12  {
    1.13  	MapObj::move (p);
    1.14 -	selbox->rect().moveTo (p);
    1.15  }
    1.16  
    1.17  void FloatObj::setDockPos()
     2.1 --- a/frameobj.cpp	Sat Mar 31 09:28:27 2007 +0000
     2.2 +++ b/frameobj.cpp	Sat Mar 31 09:28:27 2007 +0000
     2.3 @@ -26,6 +26,8 @@
     2.4  {
     2.5      type=NoFrame;
     2.6      border=0;
     2.7 +	penColor=QColor (Qt::black);
     2.8 +	brushColor=QColor (Qt::white);
     2.9  }
    2.10  
    2.11  void FrameObj::clear()
    2.12 @@ -129,17 +131,19 @@
    2.13  				break;
    2.14  			case Rectangle:
    2.15  				border=10;
    2.16 -				rectFrame = scene->addRect(QRectF(0,0,0,0), QPen(QColor("black") ), QColor("white"));
    2.17 +				rectFrame = scene->addRect(QRectF(0,0,0,0), QPen(penColor), brushColor);
    2.18  				rectFrame->setZValue(Z_FRAME);
    2.19 +				rectFrame->show();
    2.20  				break;
    2.21  			case Ellipse:
    2.22  				border=10;
    2.23 -				ellipseFrame = scene->addEllipse(QRectF(0,0,0,0), QPen(QColor("black") ), QColor("white"));
    2.24 +				ellipseFrame = scene->addEllipse(QRectF(0,0,0,0), QPen(penColor), brushColor);
    2.25  				ellipseFrame->setZValue(Z_FRAME);
    2.26 +				ellipseFrame->show();
    2.27  				break;
    2.28  		}
    2.29 -		setVisibility (visible);
    2.30  	}
    2.31 +	setVisibility (visible);
    2.32  }
    2.33  
    2.34  void FrameObj::setFrameType(const QString &t)
    2.35 @@ -152,6 +156,46 @@
    2.36  		FrameObj::setFrameType (NoFrame);
    2.37  }
    2.38  
    2.39 +void FrameObj::setPenColor (QColor col)
    2.40 +{
    2.41 +	penColor=col;
    2.42 +	repaint();
    2.43 +}
    2.44 +
    2.45 +QColor FrameObj::getPenColor ()
    2.46 +{
    2.47 +	return penColor;
    2.48 +}
    2.49 +
    2.50 +void FrameObj::setBrushColor (QColor col)
    2.51 +{
    2.52 +	brushColor=col;
    2.53 +	repaint();
    2.54 +}
    2.55 +
    2.56 +QColor FrameObj::getBrushColor ()
    2.57 +{
    2.58 +	return brushColor;
    2.59 +}
    2.60 +
    2.61 +void FrameObj::repaint()
    2.62 +{
    2.63 +	switch (type)
    2.64 +	{
    2.65 +		case Rectangle:
    2.66 +			rectFrame->setPen   (penColor);
    2.67 +			rectFrame->setBrush (brushColor);
    2.68 +			break;
    2.69 +		case Ellipse:
    2.70 +			ellipseFrame->setPen   (penColor);
    2.71 +			ellipseFrame->setBrush (brushColor);
    2.72 +			break;
    2.73 +		default:
    2.74 +			break;
    2.75 +	}
    2.76 +}
    2.77 +
    2.78 +
    2.79  void FrameObj::setVisibility (bool v)
    2.80  {
    2.81      MapObj::setVisibility(v);
    2.82 @@ -177,6 +221,8 @@
    2.83  QString FrameObj::saveToDir ()
    2.84  {
    2.85  	QString	frameTypeAttr=attribut ("frameType",getFrameTypeName());
    2.86 -	return singleElement ("frame",frameTypeAttr);
    2.87 +	QString	penColAttr=attribut ("penColor",penColor.name() );
    2.88 +	QString	brushColAttr=attribut ("brushColor",brushColor.name() );
    2.89 +	return singleElement ("frame",frameTypeAttr + penColAttr + brushColAttr);
    2.90  }
    2.91  
     3.1 --- a/frameobj.h	Sat Mar 31 09:28:27 2007 +0000
     3.2 +++ b/frameobj.h	Sat Mar 31 09:28:27 2007 +0000
     3.3 @@ -22,14 +22,21 @@
     3.4      QString getFrameTypeName ();
     3.5      void setFrameType (const FrameType &);
     3.6      void setFrameType (const QString &);
     3.7 +	void setPenColor (QColor);
     3.8 +	QColor getPenColor ();
     3.9 +	void setBrushColor (QColor);
    3.10 +	QColor getBrushColor ();
    3.11 +	void repaint();
    3.12      void setVisibility(bool);
    3.13  	QString saveToDir ();
    3.14  
    3.15 -protected:
    3.16 +private:
    3.17      FrameType type;
    3.18      QGraphicsRectItem * rectFrame;
    3.19      QGraphicsEllipseItem * ellipseFrame;
    3.20      int border;									// distance text - frame
    3.21 +	QColor penColor;
    3.22 +	QColor brushColor;
    3.23  };
    3.24  #endif
    3.25  
     4.1 --- a/historywindow.cpp	Sat Mar 31 09:28:27 2007 +0000
     4.2 +++ b/historywindow.cpp	Sat Mar 31 09:28:27 2007 +0000
     4.3 @@ -158,6 +158,15 @@
     4.4  	showwithmain=v;
     4.5  }
     4.6  
     4.7 +void HistoryWindow::closeEvent( QCloseEvent* ce )
     4.8 +{
     4.9 +    ce->accept();	// TextEditor can be reopened with show()
    4.10 +    showwithmain=false;
    4.11 +	emit (windowClosed() );
    4.12 +    return;
    4.13 +}
    4.14 +
    4.15 +
    4.16  bool HistoryWindow::showWithMain()
    4.17  {
    4.18  	return showwithmain;
     5.1 --- a/historywindow.h	Sat Mar 31 09:28:27 2007 +0000
     5.2 +++ b/historywindow.h	Sat Mar 31 09:28:27 2007 +0000
     5.3 @@ -18,11 +18,17 @@
     5.4  	void setShowWithMain (bool);
     5.5  	bool showWithMain ();
     5.6  
     5.7 +protected:
     5.8 +    void closeEvent( QCloseEvent* );
     5.9 +
    5.10  private slots:	
    5.11  	void undo();
    5.12  	void redo();
    5.13  	void select();
    5.14  
    5.15 +signals:
    5.16 +	void windowClosed();
    5.17 +
    5.18  private:
    5.19  	void clearRow (int);
    5.20  	void updateRow (int, int, SimpleSettings &);
     6.1 --- a/linkablemapobj.cpp	Sat Mar 31 09:28:27 2007 +0000
     6.2 +++ b/linkablemapobj.cpp	Sat Mar 31 09:28:27 2007 +0000
     6.3 @@ -28,8 +28,6 @@
     6.4  LinkableMapObj::~LinkableMapObj()
     6.5  {
     6.6      delete (bottomline);
     6.7 -    delete (selbox);
     6.8 -	delete (frame);
     6.9  	delLink();
    6.10  }
    6.11  
    6.12 @@ -81,18 +79,12 @@
    6.13      bottomline->show();
    6.14  
    6.15      // Prepare showing the selection of a MapObj
    6.16 -    selbox = scene->addRect(QRectF(0,0,0,0), QPen(QColor(255,255,0) ), QColor(255,255,0));
    6.17 -    selbox->setZValue(Z_SELBOX);
    6.18 -    selbox->hide();
    6.19      selected=false;
    6.20  
    6.21  	hideLinkUnselected=false;
    6.22  
    6.23  	topPad=botPad=leftPad=rightPad=0;
    6.24  
    6.25 -	// initialize frame
    6.26 -	frame = new FrameObj (scene);
    6.27 -	
    6.28  	repositionRequest=false;
    6.29  
    6.30  	// Rel Positions
    6.31 @@ -347,27 +339,6 @@
    6.32  	return linkcolor;
    6.33  }
    6.34  
    6.35 -FrameType LinkableMapObj::getFrameType()
    6.36 -{
    6.37 -	return frame->getFrameType();
    6.38 -}
    6.39 -
    6.40 -void LinkableMapObj::setFrameType(const FrameType &t)
    6.41 -{
    6.42 -	frame->setFrameType(t);
    6.43 -	calcBBoxSize();
    6.44 -	positionBBox();
    6.45 -	requestReposition();
    6.46 -}
    6.47 -
    6.48 -void LinkableMapObj::setFrameType(const QString &t)
    6.49 -{
    6.50 -	frame->setFrameType(t);
    6.51 -	calcBBoxSize();
    6.52 -	positionBBox();
    6.53 -	requestReposition();
    6.54 -}
    6.55 -
    6.56  void LinkableMapObj::setVisibility (bool v)
    6.57  {
    6.58  	MapObj::setVisibility (v);
    6.59 @@ -465,16 +436,12 @@
    6.60  	// have parents yet...
    6.61  	if (style==StyleUndef) return;	
    6.62  
    6.63 -	if (frame->getFrameType() == NoFrame)
    6.64 -		linkpos=LinkBottom;
    6.65 -	else	
    6.66 -		linkpos=LinkMiddle;
    6.67  	switch (linkpos)
    6.68  	{
    6.69  		case LinkMiddle:
    6.70 -			bottomlineY=bbox.top()+bbox.height() /2;	// draw link to middle (of frame)
    6.71 +			bottomlineY=bbox.top() + bbox.height()/2;	// draw link to middle (of frame)
    6.72  			break;
    6.73 -		default :
    6.74 +		case LinkBottom:
    6.75  			bottomlineY=bbox.bottom()-1;	// draw link to bottom of box
    6.76  			break;
    6.77  	}
    6.78 @@ -687,17 +654,9 @@
    6.79  }
    6.80  
    6.81  
    6.82 -void LinkableMapObj::setSelBox()
    6.83 -{
    6.84 -	//selbox->prepareGeometryChange();
    6.85 -	selbox->setRect (clickBox);
    6.86 -}
    6.87 -
    6.88  void LinkableMapObj::select()
    6.89  {
    6.90 -	setSelBox();
    6.91      selected=true;
    6.92 -    selbox->show();
    6.93  	setVisibility (visible);
    6.94  }
    6.95  
    6.96 @@ -705,7 +664,6 @@
    6.97  void LinkableMapObj::unselect()
    6.98  {
    6.99      selected=false;
   6.100 -    selbox->hide();
   6.101  	// Maybe we have to hide the link:
   6.102  	setVisibility (visible);
   6.103  }
     7.1 --- a/linkablemapobj.h	Sat Mar 31 09:28:27 2007 +0000
     7.2 +++ b/linkablemapobj.h	Sat Mar 31 09:28:27 2007 +0000
     7.3 @@ -1,7 +1,6 @@
     7.4  #ifndef LINKABLEMAPOBJ_H
     7.5  #define LINKABLEMAPOBJ_H
     7.6  
     7.7 -#include "frameobj.h"
     7.8  #include "noteobj.h"
     7.9  #include "headingobj.h"
    7.10  #include "flagrowobj.h"
    7.11 @@ -57,9 +56,6 @@
    7.12  	virtual void setLinkColor();					// sets color according to colorhint, overloaded
    7.13  	virtual void setLinkColor(QColor);
    7.14  	QColor getLinkColor();
    7.15 -	virtual FrameType getFrameType ();
    7.16 -	virtual void setFrameType (const FrameType &);
    7.17 -	virtual void setFrameType (const QString &);
    7.18  	virtual void setVisibility (bool);
    7.19  	virtual void setOrientation();
    7.20      virtual void updateLink();				// update parPos and childPos
    7.21 @@ -88,7 +84,6 @@
    7.22  	//virtual QRectF getBBoxSizeWithChilds();// return size of BBox including childs  
    7.23  	virtual void calcBBoxSizeWithChilds()=0;// calc size of  BBox including childs recursivly
    7.24  
    7.25 -	virtual void setSelBox();
    7.26      virtual void select();
    7.27      virtual void unselect();
    7.28  	virtual	QString getSelectString()=0;
    7.29 @@ -101,7 +96,9 @@
    7.30      QPointF childPos;
    7.31      QPointF parPos;
    7.32  	bool link2ParPos;				// While moving around, sometimes link to parent
    7.33 -	MapEditor* mapEditor;			// for updateNoteFlag() and toggleScroll()
    7.34 +	MapEditor* mapEditor;			// for and toggleScroll(), get default styles
    7.35 +									// and mapEditor->updateActions()
    7.36 +									// and mapEditor->updateSelection()
    7.37      LinkOrient orientation;     
    7.38      qreal linkwidth;				// width of a link
    7.39      int depth;						// depth: undef=-1 mapCenter=0 branch=1..n
    7.40 @@ -129,8 +126,6 @@
    7.41  
    7.42  	bool selected;					// Used for marking the selection
    7.43  	bool hideLinkUnselected;		// to hide links if unselected
    7.44 -	QGraphicsRectItem* selbox;
    7.45 -	FrameObj *frame;				// frame around object
    7.46  	qreal topPad, botPad,
    7.47  		leftPad, rightPad;          // padding within bbox
    7.48  
     8.1 --- a/mainwindow.cpp	Sat Mar 31 09:28:27 2007 +0000
     8.2 +++ b/mainwindow.cpp	Sat Mar 31 09:28:27 2007 +0000
     8.3 @@ -19,6 +19,7 @@
     8.4  #include "process.h"
     8.5  #include "settings.h"
     8.6  #include "texteditor.h"
     8.7 +#include "warningdialog.h"
     8.8  
     8.9  extern TextEditor *textEditor;
    8.10  extern Main *mainWindow;
    8.11 @@ -160,6 +161,8 @@
    8.12  
    8.13  	restoreState (settings.value("/mainwindow/state",0).toByteArray());
    8.14  
    8.15 +	// Satellite windows //////////////////////////////////////////
    8.16 +
    8.17  	// Initialize Find window
    8.18  	findWindow=new FindWindow(NULL);
    8.19  	findWindow->move (x(),y()+70);
    8.20 @@ -170,7 +173,10 @@
    8.21  
    8.22  	// Connect TextEditor, so that we can update flags if text changes
    8.23  	connect (textEditor, SIGNAL (textHasChanged() ), this, SLOT (updateNoteFlag()));
    8.24 -	connect (textEditor, SIGNAL (textEditorClosed() ), this, SLOT (updateActions()));
    8.25 +	connect (textEditor, SIGNAL (windowClosed() ), this, SLOT (updateActions()));
    8.26 +
    8.27 +	// Connect HistoryWindow, so that we can update flags
    8.28 +	connect (historyWindow, SIGNAL (windowClosed() ), this, SLOT (updateActions()));
    8.29  
    8.30  	updateGeometry();
    8.31  }
    8.32 @@ -198,7 +204,7 @@
    8.33  	//FIXME save scriptEditor settings
    8.34  
    8.35  	// call the destructors
    8.36 -	delete (textEditor);
    8.37 +	delete textEditor;
    8.38  	delete historyWindow;
    8.39  
    8.40  	// Remove temporary directory
    8.41 @@ -244,25 +250,24 @@
    8.42      QAction *a;
    8.43      a = new QAction(QPixmap( iconPath+"filenew.png"), tr( "&New...","File menu" ),this);
    8.44  	a->setStatusTip ( tr( "New map","Status tip File menu" ) );
    8.45 -	a->setShortcut ( Qt::CTRL + Qt::Key_N );
    8.46 +	a->setShortcut ( Qt::CTRL + Qt::Key_N );		//New map
    8.47      a->addTo( tb );
    8.48  	fileMenu->addAction (a);
    8.49      connect( a, SIGNAL( triggered() ), this, SLOT( fileNew() ) );
    8.50  	
    8.51      a = new QAction( QPixmap( iconPath+"fileopen.png"), tr( "&Open..." ,"File menu"),this);
    8.52  	a->setStatusTip (tr( "Open","Status tip File menu" ) );
    8.53 -	a->setShortcut ( Qt::CTRL + Qt::Key_O );
    8.54 +	a->setShortcut ( Qt::CTRL + Qt::Key_O );		//Open map
    8.55      a->addTo( tb );
    8.56  	fileMenu->addAction (a);
    8.57      connect( a, SIGNAL( triggered() ), this, SLOT( fileLoad() ) );
    8.58  	
    8.59  	fileLastMapsMenu = fileMenu->addMenu (tr("Open Recent","File menu"));
    8.60 -	fileLastMapsMenu->menuAction()->setShortcut ( Qt::CTRL + +Qt::SHIFT + Qt::Key_O );
    8.61  	fileMenu->addSeparator();
    8.62  	
    8.63      a = new QAction( QPixmap( iconPath+"filesave.png"), tr( "&Save...","File menu" ), this);
    8.64  	a->setStatusTip ( tr( "Save","Status tip file menu" ));
    8.65 -	a->setShortcut (Qt::CTRL + Qt::Key_S );
    8.66 +	a->setShortcut (Qt::CTRL + Qt::Key_S );			//Save map
    8.67      a->addTo( tb );
    8.68  	fileMenu->addAction (a);
    8.69      connect( a, SIGNAL( triggered() ), this, SLOT( fileSave() ) );
    8.70 @@ -313,7 +318,7 @@
    8.71  	fileExportMenu->addAction (a);
    8.72  
    8.73  	a = new QAction(  "Webpage (XHTML)...",this );
    8.74 -	a->setShortcut (Qt::ALT + Qt::Key_X);
    8.75 +	a->setShortcut (Qt::ALT + Qt::Key_X);			//Export XHTML
    8.76  	a->setStatusTip ( tr( "Export as %1","status tip file menu").arg(tr(" webpage (XHTML)","status tip file menu")));
    8.77      connect( a, SIGNAL( triggered() ), this, SLOT( fileExportXHTML() ) );
    8.78  	fileExportMenu->addAction (a);
    8.79 @@ -347,7 +352,7 @@
    8.80  
    8.81      a = new QAction(QPixmap( iconPath+"fileprint.png"), tr( "&Print")+QString("..."), this);
    8.82  	a->setStatusTip ( tr( "Print" ,"File menu") );
    8.83 -	a->setShortcut (Qt::CTRL + Qt::Key_P );
    8.84 +	a->setShortcut (Qt::CTRL + Qt::Key_P );			//Print map
    8.85      a->addTo( tb );
    8.86  	fileMenu->addAction (a);
    8.87      connect( a, SIGNAL( triggered() ), this, SLOT( filePrint() ) );
    8.88 @@ -355,13 +360,13 @@
    8.89  
    8.90      a = new QAction( QPixmap(iconPath+"fileclose.png"), tr( "&Close Map","File menu" ), this);
    8.91  	a->setStatusTip (tr( "Close Map" ) );
    8.92 -	a->setShortcut (Qt::ALT + Qt::Key_C );
    8.93 +	a->setShortcut (Qt::ALT + Qt::Key_C );			//Close map
    8.94  	fileMenu->addAction (a);
    8.95      connect( a, SIGNAL( triggered() ), this, SLOT( fileCloseMap() ) );
    8.96  
    8.97      a = new QAction(QPixmap(iconPath+"exit.png"), tr( "E&xit","File menu")+" "+vymName, this);
    8.98  	a->setStatusTip ( tr( "Exit")+" "+vymName );
    8.99 -	a->setShortcut (Qt::CTRL + Qt::Key_Q );
   8.100 +	a->setShortcut (Qt::CTRL + Qt::Key_Q );			//Quit vym
   8.101  	fileMenu->addAction (a);
   8.102      connect( a, SIGNAL( triggered() ), this, SLOT( fileExitVYM() ) );
   8.103  }
   8.104 @@ -380,7 +385,7 @@
   8.105      a = new QAction( QPixmap( iconPath+"undo.png"), tr( "&Undo","Edit menu" ),this);
   8.106      connect( a, SIGNAL( triggered() ), this, SLOT( editUndo() ) );
   8.107  	a->setStatusTip (tr( "Undo" ) );
   8.108 -	a->setShortcut ( Qt::CTRL + Qt::Key_Z );
   8.109 +	a->setShortcut ( Qt::CTRL + Qt::Key_Z );		//Undo last action
   8.110  	a->setEnabled (false);
   8.111      tb->addAction (a);
   8.112  	editMenu->addAction (a);
   8.113 @@ -388,7 +393,7 @@
   8.114      
   8.115  	a = new QAction( QPixmap( iconPath+"redo.png"), tr( "&Redo","Edit menu" ), this); 
   8.116  	a->setStatusTip (tr( "Redo" ));
   8.117 -	a->setShortcut (Qt::CTRL + Qt::Key_Y );
   8.118 +	a->setShortcut (Qt::CTRL + Qt::Key_Y );			//Redo last action
   8.119      tb->addAction (a);
   8.120  	editMenu->addAction (a);
   8.121  	connect( a, SIGNAL( triggered() ), this, SLOT( editRedo() ) );
   8.122 @@ -397,7 +402,7 @@
   8.123  	editMenu->addSeparator();
   8.124      a = new QAction(QPixmap( iconPath+"editcopy.png"), tr( "&Copy","Edit menu" ), this);
   8.125  	a->setStatusTip ( tr( "Copy" ) );
   8.126 -	a->setShortcut (Qt::CTRL + Qt::Key_C );
   8.127 +	a->setShortcut (Qt::CTRL + Qt::Key_C );			//Copy
   8.128  	a->setEnabled (false);
   8.129      tb->addAction (a);
   8.130  	editMenu->addAction (a);
   8.131 @@ -406,7 +411,7 @@
   8.132  	
   8.133      a = new QAction(QPixmap( iconPath+"editcut.png" ), tr( "Cu&t","Edit menu" ), this);
   8.134  	a->setStatusTip ( tr( "Cut" ) );
   8.135 -	a->setShortcut (Qt::CTRL + Qt::Key_X );
   8.136 +	a->setShortcut (Qt::CTRL + Qt::Key_X );			//Cut
   8.137  	a->setEnabled (false);
   8.138      tb->addAction (a);
   8.139  	editMenu->addAction (a);
   8.140 @@ -416,7 +421,7 @@
   8.141      a = new QAction(QPixmap( iconPath+"editpaste.png"), tr( "&Paste","Edit menu" ),this);
   8.142      connect( a, SIGNAL( triggered() ), this, SLOT( editPaste() ) );
   8.143  	a->setStatusTip ( tr( "Paste" ) );
   8.144 -	a->setShortcut ( Qt::CTRL + Qt::Key_V );
   8.145 +	a->setShortcut ( Qt::CTRL + Qt::Key_V );		//Paste
   8.146  	a->setEnabled (false);
   8.147      tb->addAction (a);
   8.148  	editMenu->addAction (a);
   8.149 @@ -425,14 +430,14 @@
   8.150      // Shortcuts to modify heading:
   8.151      a = new QAction(tr( "Edit heading","Edit menu" ),this);
   8.152  	a->setStatusTip ( tr( "edit Heading" ));
   8.153 -	a->setShortcut ( Qt::Key_Enter);
   8.154 +	a->setShortcut ( Qt::Key_Enter);				//Edit heading
   8.155  //	a->setShortcutContext (Qt::WindowShortcut);
   8.156  	addAction (a);
   8.157      connect( a, SIGNAL( triggered() ), this, SLOT( editHeading() ) );
   8.158  	actionListBranches.append(a);
   8.159      a = new QAction( tr( "Edit heading","Edit menu" ), this);
   8.160  	a->setStatusTip (tr( "edit Heading" ));
   8.161 -	a->setShortcut (Qt::Key_Return );
   8.162 +	a->setShortcut (Qt::Key_Return );				//Edit heading
   8.163  	//a->setShortcutContext (Qt::WindowShortcut);
   8.164  	addAction (a);
   8.165      connect( a, SIGNAL( triggered() ), this, SLOT( editHeading() ) );
   8.166 @@ -441,7 +446,7 @@
   8.167  	actionEditHeading=a;
   8.168      a = new QAction( tr( "Edit heading","Edit menu" ), this);
   8.169  	a->setStatusTip (tr( "edit Heading" ));
   8.170 -	a->setShortcut ( Qt::Key_F2 );
   8.171 +	a->setShortcut ( Qt::Key_F2 );					//Edit heading
   8.172  	a->setShortcutContext (Qt::WindowShortcut);
   8.173  	addAction (a);
   8.174      connect( a, SIGNAL( triggered() ), this, SLOT( editHeading() ) );
   8.175 @@ -450,7 +455,7 @@
   8.176      // Shortcut to delete selection
   8.177      a = new QAction( tr( "Delete Selection","Edit menu" ),this);
   8.178  	a->setStatusTip (tr( "Delete Selection" ));
   8.179 -	a->setShortcut ( Qt::Key_Delete);
   8.180 +	a->setShortcut ( Qt::Key_Delete);				//Delete selection
   8.181  	a->setShortcutContext (Qt::WindowShortcut);
   8.182  	addAction (a);
   8.183      connect( a, SIGNAL( triggered() ), this, SLOT( editDeleteSelection() ) );
   8.184 @@ -459,13 +464,13 @@
   8.185      // Shortcut to add branch
   8.186  	alt = new QAction(QPixmap(iconPath+"newbranch.png"), tr( "Add branch as child","Edit menu" ), this);
   8.187  	alt->setStatusTip ( tr( "Add a branch as child of selection" ));
   8.188 -	alt->setShortcut (Qt::Key_A);
   8.189 +	alt->setShortcut (Qt::Key_A);					//Add branch
   8.190  	alt->setShortcutContext (Qt::WindowShortcut);
   8.191  	addAction (alt);
   8.192  	connect( alt, SIGNAL( triggered() ), this, SLOT( editNewBranch() ) );
   8.193  	a = new QAction(QPixmap(iconPath+"newbranch.png"), tr( "Add branch as child","Edit menu" ), this);
   8.194  	a->setStatusTip ( tr( "Add a branch as child of selection" ));
   8.195 -	a->setShortcut (Qt::Key_Insert);	
   8.196 +	a->setShortcut (Qt::Key_Insert);				//Add branch
   8.197  	connect( a, SIGNAL( triggered() ), this, SLOT( editNewBranch() ) );
   8.198  	actionListBranches.append(a);
   8.199  	#if defined (Q_OS_MACX)
   8.200 @@ -481,7 +486,7 @@
   8.201      // Add branch by inserting it at selection
   8.202  	a = new QAction(tr( "Add branch (insert)","Edit menu" ), this);
   8.203  	a->setStatusTip ( tr( "Add a branch by inserting and making selection its child" ));
   8.204 -	a->setShortcut (Qt::ALT + Qt::Key_Insert );
   8.205 +	a->setShortcut (Qt::ALT + Qt::Key_Insert );		//Insert branch
   8.206  	a->setShortcutContext (Qt::WindowShortcut);
   8.207  	addAction (a);
   8.208      connect( a, SIGNAL( triggered() ), this, SLOT( editNewBranchBefore() ) );
   8.209 @@ -490,7 +495,7 @@
   8.210  	actionEditAddBranchBefore=a;
   8.211  	a = new QAction(tr( "Add branch (insert)","Edit menu" ),this);
   8.212  	a->setStatusTip ( tr( "Add a branch by inserting and making selection its child" ));
   8.213 -	a->setShortcut ( Qt::ALT + Qt::Key_A );
   8.214 +	a->setShortcut ( Qt::ALT + Qt::Key_A );			//Insert branch
   8.215  	a->setShortcutContext (Qt::WindowShortcut);
   8.216  	addAction (a);
   8.217      connect( a, SIGNAL( triggered() ), this, SLOT( editNewBranchBefore() ) );
   8.218 @@ -499,7 +504,7 @@
   8.219  	// Add branch above
   8.220      a = new QAction(tr( "Add branch above","Edit menu" ), this);
   8.221  	a->setStatusTip ( tr( "Add a branch above selection" ));
   8.222 -	a->setShortcut (Qt::SHIFT+Qt::Key_Insert );
   8.223 +	a->setShortcut (Qt::SHIFT+Qt::Key_Insert );		//Add branch above
   8.224  	a->setShortcutContext (Qt::WindowShortcut);
   8.225  	addAction (a);
   8.226      connect( a, SIGNAL( triggered() ), this, SLOT( editNewBranchAbove() ) );
   8.227 @@ -508,7 +513,7 @@
   8.228  	actionEditAddBranchAbove=a;
   8.229      a = new QAction(tr( "Add branch above","Edit menu" ), this);
   8.230  	a->setStatusTip ( tr( "Add a branch above selection" ));
   8.231 -	a->setShortcut (Qt::SHIFT+Qt::Key_A );
   8.232 +	a->setShortcut (Qt::SHIFT+Qt::Key_A );			//Add branch above
   8.233  	a->setShortcutContext (Qt::WindowShortcut);
   8.234  	addAction (a);
   8.235      connect( a, SIGNAL( triggered() ), this, SLOT( editNewBranchAbove() ) );
   8.236 @@ -517,7 +522,7 @@
   8.237  	// Add branch below 
   8.238      a = new QAction(tr( "Add branch below","Edit menu" ), this);
   8.239  	a->setStatusTip ( tr( "Add a branch below selection" ));
   8.240 -	a->setShortcut (Qt::CTRL +Qt::Key_Insert );
   8.241 +	a->setShortcut (Qt::CTRL +Qt::Key_Insert );		//Add branch below
   8.242  	a->setShortcutContext (Qt::WindowShortcut);
   8.243  	addAction (a);
   8.244      connect( a, SIGNAL( triggered() ), this, SLOT( editNewBranchBelow() ) );
   8.245 @@ -526,7 +531,7 @@
   8.246  	actionEditAddBranchBelow=a;
   8.247      a = new QAction(tr( "Add branch below","Edit menu" ), this);
   8.248  	a->setStatusTip ( tr( "Add a branch below selection" ));
   8.249 -	a->setShortcut (Qt::CTRL +Qt::Key_A );
   8.250 +	a->setShortcut (Qt::CTRL +Qt::Key_A );			// Add branch below
   8.251  	a->setShortcutContext (Qt::WindowShortcut);
   8.252  	addAction (a);
   8.253      connect( a, SIGNAL( triggered() ), this, SLOT( editNewBranchBelow() ) );
   8.254 @@ -534,7 +539,7 @@
   8.255  
   8.256      a = new QAction(QPixmap(iconPath+"up.png" ), tr( "Move up","Edit menu" ), this);
   8.257  	a->setStatusTip ( tr( "Move branch up" ) );
   8.258 -	a->setShortcut (Qt::Key_PageUp );
   8.259 +	a->setShortcut (Qt::Key_PageUp );				// Move branch up
   8.260  	a->setEnabled (false);
   8.261      tb->addAction (a);
   8.262  	editMenu->addAction (a);
   8.263 @@ -544,7 +549,7 @@
   8.264      a = new QAction( QPixmap( iconPath+"down.png"), tr( "Move down","Edit menu" ),this);
   8.265      connect( a, SIGNAL( triggered() ), this, SLOT( editMoveDown() ) );
   8.266  	a->setStatusTip (tr( "Move branch down" ) );
   8.267 -	a->setShortcut ( Qt::Key_PageDown );
   8.268 +	a->setShortcut ( Qt::Key_PageDown );			// Move branch down
   8.269  	a->setEnabled (false);
   8.270      tb->addAction (a);
   8.271  	editMenu->addAction (a);
   8.272 @@ -557,7 +562,7 @@
   8.273      connect( a, SIGNAL( triggered() ), this, SLOT( editToggleScroll() ) );
   8.274  
   8.275  	alt = new QAction( QPixmap(flagsPath+"flag-scrolled-right.png"), tr( "Scroll branch","Edit menu" ), this);
   8.276 -	alt->setShortcut ( Qt::Key_S );
   8.277 +	alt->setShortcut ( Qt::Key_S );					// Scroll branch
   8.278  	alt->setStatusTip (tr( "Scroll branch" )); 
   8.279      connect( alt, SIGNAL( triggered() ), this, SLOT( editToggleScroll() ) );
   8.280  	#if defined(Q_OS_MACX)
   8.281 @@ -583,7 +588,7 @@
   8.282  
   8.283  	a = new QAction( QPixmap(iconPath+"find.png"), tr( "Find...","Edit menu"), this);
   8.284  	a->setStatusTip (tr( "Find" ) );
   8.285 -	a->setShortcut (Qt::CTRL + Qt::Key_F );
   8.286 +	a->setShortcut (Qt::CTRL + Qt::Key_F );				//Find
   8.287  	editMenu->addAction (a);
   8.288      connect( a, SIGNAL( triggered() ), this, SLOT( editOpenFindWindow() ) );
   8.289      
   8.290 @@ -779,10 +784,13 @@
   8.291      connect( a, SIGNAL( triggered() ), this, SLOT( editLoadImage() ) );
   8.292  	actionEditLoadImage=a;
   8.293  
   8.294 -    a = new QAction( tr( "Properties","Context menu for images and branches" )+QString ("..."), this);
   8.295 -	a->setStatusTip (tr( "Set properties for object" ));
   8.296 +    a = new QAction( tr( "Property Dialog","Dialog to edit properties of selection" )+QString ("..."), this);
   8.297 +	a->setStatusTip (tr( "Set properties for selection" ));
   8.298 +	a->setShortcut ( Qt::CTRL + Qt::Key_I );		//Property window
   8.299 +	a->setShortcutContext (Qt::WindowShortcut);
   8.300 +	addAction (a);
   8.301      connect( a, SIGNAL( triggered() ), this, SLOT( showPropertyDialog() ) );
   8.302 -	actionOpenPropertyDialog=a;
   8.303 +	actionTogglePropertyDialog=a;
   8.304  }
   8.305  
   8.306  // Format Actions
   8.307 @@ -813,7 +821,7 @@
   8.308  
   8.309      a= new QAction(QPixmap(iconPath+"formatcolorbranch.png"), tr( "Color &branch","Edit menu" ), this);
   8.310  	a->setStatusTip ( tr( "Color branch" ) );
   8.311 -	a->setShortcut (Qt::CTRL + Qt::Key_I);
   8.312 +	a->setShortcut (Qt::CTRL + Qt::Key_B);
   8.313      connect( a, SIGNAL( triggered() ), this, SLOT( formatColorBranch() ) );
   8.314  	a->setEnabled (false);
   8.315      a->addTo( tb );
   8.316 @@ -893,6 +901,12 @@
   8.317      connect( a, SIGNAL( triggered() ), this, SLOT( formatSelectLinkColor() ) );
   8.318      actionFormatLinkColor=a;
   8.319  
   8.320 +    a= new QAction( pix, tr( "Set &Selection Color"+QString("...") ), this  );
   8.321 +	a->setStatusTip (tr( "Set Selection Color" ));
   8.322 +	formatMenu->addAction (a);
   8.323 +    connect( a, SIGNAL( triggered() ), this, SLOT( formatSelectSelectionColor() ) );
   8.324 +    actionFormatSelectionColor=a;
   8.325 +
   8.326      a= new QAction( pix, tr( "Set &Background Color" )+QString("..."), this );
   8.327  	a->setStatusTip (tr( "Set Background Color" ));
   8.328  	formatMenu->addAction (a);
   8.329 @@ -950,8 +964,8 @@
   8.330      connect( a, SIGNAL( triggered() ), this, SLOT(windowToggleNoteEditor() ) );
   8.331  	actionViewToggleNoteEditor=a;
   8.332  
   8.333 -    a = new QAction(QPixmap(iconPath+"history.png"),  tr( "Show history window","View action" ),this );
   8.334 -	a->setStatusTip ( tr( "Show history window" ));
   8.335 +    a = new QAction(QPixmap(iconPath+"history.png"),  tr( "History Window","View action" ),this );
   8.336 +	a->setStatusTip ( tr( "Show History Window" ));
   8.337  	a->setShortcut ( Qt::CTRL + Qt::Key_H  );
   8.338  	a->setToggleAction(true);
   8.339      a->addTo( tb );
   8.340 @@ -959,6 +973,8 @@
   8.341      connect( a, SIGNAL( triggered() ), this, SLOT(windowToggleHistory() ) );
   8.342  	actionViewToggleHistoryWindow=a;
   8.343  
   8.344 +	viewMenu->addAction (actionTogglePropertyDialog );
   8.345 +
   8.346      a = new QAction(tr( "Antialiasing","View action" ),this );
   8.347  	a->setStatusTip ( tr( "Antialiasing" ));
   8.348  	a->setToggleAction(true);
   8.349 @@ -1450,8 +1466,7 @@
   8.350  
   8.351  	// Context Menu for branch or mapcenter
   8.352  	branchContextMenu =new QMenu (this);
   8.353 -
   8.354 -	actionOpenPropertyDialog->addTo (branchContextMenu);
   8.355 +	branchContextMenu->addAction (actionTogglePropertyDialog);
   8.356  	branchContextMenu->addSeparator();	
   8.357  
   8.358  		// Submenu "Add"
   8.359 @@ -1533,6 +1548,7 @@
   8.360  	canvasContextMenu->insertSeparator();	
   8.361  	actionFormatLinkColorHint->addTo( canvasContextMenu );
   8.362  	actionFormatLinkColor->addTo( canvasContextMenu );
   8.363 +	actionFormatSelectionColor->addTo( canvasContextMenu );
   8.364  	actionFormatBackColor->addTo( canvasContextMenu );
   8.365  	actionFormatBackImage->addTo( canvasContextMenu );
   8.366  
   8.367 @@ -2215,13 +2231,14 @@
   8.368  			QString dir=dia.getDir();
   8.369  			// Check, if warnings should be used before overwriting
   8.370  			// the output directory
   8.371 -			bool ok;
   8.372 -			if (dia.warnings()) 
   8.373 -				ok=reallyWriteDirectory(dir);
   8.374 -			else
   8.375 -				ok=true;
   8.376 -
   8.377 -			if (ok)
   8.378 +			WarningDialog warn;
   8.379 +			warn.showCancelButton (true);
   8.380 +			warn.setText(QString(
   8.381 +				"The directory %1 is not empty.\n"
   8.382 +				"Do you risk to overwrite some of its contents?").arg(dir));
   8.383 +			warn.setCaption("Warning: Directory not empty");
   8.384 +			warn.setShowAgainName("mainwindow/overwrite-dir-xhtml");
   8.385 +			if (warn.exec()==QDialog::Accepted)
   8.386  			{
   8.387  				me->exportXML (dia.getDir() );
   8.388  				dia.doExport(me->getMapName() );
   8.389 @@ -3067,6 +3084,12 @@
   8.390  		currentMapEditor()->selectMapLinkColor();
   8.391  }
   8.392  
   8.393 +void Main::formatSelectSelectionColor()
   8.394 +{
   8.395 +	if (currentMapEditor())
   8.396 +		currentMapEditor()->selectMapSelectionColor();
   8.397 +}
   8.398 +
   8.399  void Main::formatToggleLinkColorHint()
   8.400  {
   8.401  	currentMapEditor()->toggleMapLinkColorHint();
   8.402 @@ -3211,6 +3234,11 @@
   8.403  		currentMapEditor()->updateNoteFlag();
   8.404  }
   8.405  
   8.406 +void Main::updateSatellites(MapEditor *me)
   8.407 +{
   8.408 +	branchPropertyWindow->setMapEditor (me);
   8.409 +}
   8.410 +
   8.411  void Main::updateActions()
   8.412  {
   8.413  	MapEditor *me=currentMapEditor();
   8.414 @@ -3220,6 +3248,7 @@
   8.415  
   8.416  	// updateActions is also called when NoteEditor is closed
   8.417  	actionViewToggleNoteEditor->setOn (textEditor->showWithMain());
   8.418 +	actionViewToggleHistoryWindow->setOn (historyWindow->showWithMain());
   8.419  
   8.420  	if (me->getMapLinkColorHint()==HeadingColor) 
   8.421  		actionFormatLinkColorHint->setOn(true);
   8.422 @@ -3244,12 +3273,16 @@
   8.423  			break;
   8.424  	}	
   8.425  
   8.426 +	// Update colors
   8.427  	QPixmap pix( 16, 16 );
   8.428      pix.fill( me->getMapBackgroundColor() );
   8.429      actionFormatBackColor->setIconSet( pix );
   8.430 +    pix.fill( me->getSelectionColor() );
   8.431 +    actionFormatSelectionColor->setIconSet( pix );
   8.432      pix.fill( me->getMapDefLinkColor() );
   8.433      actionFormatLinkColor->setIconSet( pix );
   8.434  
   8.435 +
   8.436  	actionFileSave->setEnabled( me->isUnsaved() );
   8.437  	if (me->isUndoAvailable())
   8.438  		actionEditUndo->setEnabled( true);
     9.1 --- a/mainwindow.h	Sat Mar 31 09:28:27 2007 +0000
     9.2 +++ b/mainwindow.h	Sat Mar 31 09:28:27 2007 +0000
     9.3 @@ -147,6 +147,7 @@
     9.4      void formatSelectBackColor();
     9.5      void formatSelectBackImage();
     9.6      void formatSelectLinkColor();
     9.7 +    void formatSelectSelectionColor();
     9.8      void formatToggleLinkColorHint();
     9.9  	void formatIncludeImagesVer();
    9.10  	void formatIncludeImagesHor();
    9.11 @@ -167,6 +168,7 @@
    9.12  	void windowToggleAntiAlias();
    9.13  	void windowToggleSmoothPixmap();
    9.14  	void updateNoteFlag();
    9.15 +	void updateSatellites(MapEditor *);
    9.16  	void updateActions();
    9.17  	ModMode getModMode();
    9.18  	bool autoEdit();
    9.19 @@ -260,6 +262,7 @@
    9.20  	QAction* actionFormatBackColor;
    9.21  	QAction* actionFormatBackImage;
    9.22  	QAction* actionFormatLinkColor;
    9.23 +	QAction* actionFormatSelectionColor;
    9.24  	QAction *actionFormatIncludeImagesVer;
    9.25  	QAction *actionFormatIncludeImagesHor;
    9.26  
    9.27 @@ -270,7 +273,7 @@
    9.28  
    9.29  	QActionGroup *actionGroupFormatFrameTypes;
    9.30  
    9.31 -	QAction *actionOpenPropertyDialog;
    9.32 +	QAction *actionTogglePropertyDialog;
    9.33  
    9.34  	QActionGroup *actionGroupFormatLinkStyles;
    9.35  	QAction *actionFormatLinkStyleLine;
    10.1 --- a/mapeditor.cpp	Sat Mar 31 09:28:27 2007 +0000
    10.2 +++ b/mapeditor.cpp	Sat Mar 31 09:28:27 2007 +0000
    10.3 @@ -97,7 +97,7 @@
    10.4      editingBO=NULL;
    10.5      movingObj=NULL;
    10.6  
    10.7 -	xelection.setMapCenter (mapCenter);
    10.8 +	xelection.setMapEditor (this);
    10.9  	xelection.unselect();
   10.10  
   10.11  	defXLinkWidth=1;
   10.12 @@ -222,6 +222,7 @@
   10.13  				  attribut("comment",mapCenter->getComment()) +
   10.14  			      attribut("date",mapCenter->getDate()) +
   10.15  		          attribut("backgroundColor", mapScene->backgroundBrush().color().name() ) +
   10.16 +		          attribut("selectionColor", xelection.getColor().name() ) +
   10.17  		          attribut("linkStyle", ls ) +
   10.18  		          attribut("linkColor", defLinkColor.name() ) +
   10.19  		          attribut("defXLinkColor", defXLinkColor.name() ) +
   10.20 @@ -890,6 +891,13 @@
   10.21  			b=parser.parBool(ok,0);
   10.22  			if (ok) setIncludeImagesVer(b);
   10.23  		}
   10.24 +	} else if (com=="setSelectionColor")
   10.25 +	{
   10.26 +		if (parser.checkParamCount(1))
   10.27 +		{
   10.28 +			QColor c=parser.parColor (ok,0);
   10.29 +			if (ok) setSelectionColorInt (c);
   10.30 +		}	
   10.31  	} else if (com=="setURL")
   10.32  	{
   10.33  		if (xelection.isEmpty() )
   10.34 @@ -1147,6 +1155,7 @@
   10.35  		if ( ok ) 
   10.36  		{
   10.37  			mapCenter->reposition();
   10.38 +			xelection.update();
   10.39  			if (lmode==NewMap)
   10.40  			{
   10.41  				mapDefault=false;
   10.42 @@ -1221,8 +1230,6 @@
   10.43  		printer->setOutputFileName(settings.value("/mainwindow/printerFileName",printer->outputFileName()).toString());
   10.44  	}
   10.45  
   10.46 -	// FIXME testing cout << "ME::print  printProgram="<<printer->printProgram().ascii()<<endl;
   10.47 -
   10.48  	QRectF totalBBox=mapCenter->getTotalBBox();
   10.49  
   10.50  	// Try to set orientation automagically
   10.51 @@ -1319,7 +1326,6 @@
   10.52  {
   10.53  	QRectF mapRect=mapCenter->getTotalBBox();
   10.54  	QPixmap pix((int)mapRect.width(),(int)mapRect.height());
   10.55 -	cout << "w.h="<<(int)mapRect.width()<<","<<(int)mapRect.height()<<endl;
   10.56  	QPainter pp (&pix);
   10.57  	
   10.58  	pp.setRenderHints(renderHints());
   10.59 @@ -1611,6 +1617,7 @@
   10.60  
   10.61  	mainWindow->updateHistory (undoSet);
   10.62  	updateActions();
   10.63 +	xelection.update();
   10.64  	ensureSelectionVisible();
   10.65  }
   10.66  
   10.67 @@ -1777,6 +1784,7 @@
   10.68  			QString("Move %1 to  %2").arg(getName(sel)).arg(ps));
   10.69  		sel->move(x,y);	// FIXME	xelection not moved automagically...
   10.70  		mapCenter->reposition();
   10.71 +		xelection.update();
   10.72  	}
   10.73  
   10.74  }
   10.75 @@ -1795,6 +1803,7 @@
   10.76  		((OrnamentedObj*)sel)->move2RelPos (x,y);
   10.77  		mapCenter->reposition();
   10.78  		sel->updateLink();
   10.79 +		xelection.update();
   10.80  	}
   10.81  }
   10.82  
   10.83 @@ -1813,6 +1822,7 @@
   10.84  		saveState (bo,"moveBranchDown ()",bo,"moveBranchUp ()",QString("Move up %1").arg(getName(bo)));
   10.85  		mapCenter->reposition();
   10.86  		scene()->update();
   10.87 +		xelection.update();
   10.88  		ensureSelectionVisible();
   10.89  	}
   10.90  }
   10.91 @@ -1832,6 +1842,7 @@
   10.92  		saveState(bo,"moveBranchUp ()",bo,"moveBranchDown ()",QString("Move down %1").arg(getName(bo)));
   10.93  		mapCenter->reposition();
   10.94  		scene()->update();
   10.95 +		xelection.update();
   10.96  		ensureSelectionVisible();
   10.97  	}	
   10.98  }
   10.99 @@ -1892,6 +1903,7 @@
  10.100  			QString("Set heading of %1 to \"%2\"").arg(getName(sel)).arg(s) );
  10.101  		sel->setHeading(s );
  10.102  		mapCenter->reposition();
  10.103 +		xelection.update();
  10.104  		ensureSelectionVisible();
  10.105  	}
  10.106  }
  10.107 @@ -1904,6 +1916,7 @@
  10.108  	{
  10.109  		bo->setURL(s);
  10.110  		mapCenter->reposition();
  10.111 +		xelection.update();
  10.112  		ensureSelectionVisible();
  10.113  	}
  10.114  }
  10.115 @@ -1915,6 +1928,7 @@
  10.116  	{
  10.117  		bo->setHeading(s);
  10.118  		mapCenter->reposition();
  10.119 +		xelection.update();
  10.120  		ensureSelectionVisible();
  10.121  	}
  10.122  }
  10.123 @@ -1927,6 +1941,7 @@
  10.124  	{
  10.125  		bo->setVymLink(s);
  10.126  		mapCenter->reposition();
  10.127 +		xelection.update();
  10.128  		ensureSelectionVisible();
  10.129  	}
  10.130  }
  10.131 @@ -1988,6 +2003,7 @@
  10.132  				QString ("Add new branch to %1").arg(getName(bo)));	
  10.133  
  10.134  			mapCenter->reposition();
  10.135 +			xelection.update();
  10.136  		}
  10.137  	}	
  10.138  	return newbo;
  10.139 @@ -2019,6 +2035,7 @@
  10.140  				QString ("Add branch before %1").arg(getName(bo)));
  10.141  
  10.142  			mapCenter->reposition();
  10.143 +			xelection.update();
  10.144  		}
  10.145  	}	
  10.146  	return newbo;
  10.147 @@ -2036,7 +2053,8 @@
  10.148  		xelection.select (par);
  10.149  		ensureSelectionVisible();
  10.150  		mapCenter->reposition();
  10.151 -		mapScene->update();
  10.152 +		xelection.update();
  10.153 +		xelection.update();
  10.154  		return;
  10.155  	}
  10.156  	FloatImageObj *fio=xelection.getFloatImage();
  10.157 @@ -2052,9 +2070,9 @@
  10.158  		xelection.unselect();
  10.159  		par->removeFloatImage(fio);
  10.160  		xelection.select (par);
  10.161 +		mapCenter->reposition();
  10.162 +		xelection.update();
  10.163  		ensureSelectionVisible();
  10.164 -		mapCenter->reposition();
  10.165 -		mapScene->update();
  10.166  		return;
  10.167  	}
  10.168  }
  10.169 @@ -2064,6 +2082,16 @@
  10.170  	return xelection.single();
  10.171  }
  10.172  
  10.173 +BranchObj* MapEditor::getSelectedBranch()
  10.174 +{
  10.175 +	return xelection.getBranch();
  10.176 +}
  10.177 +
  10.178 +FloatImageObj* MapEditor::getSelectedFloatImage()
  10.179 +{
  10.180 +	return xelection.getFloatImage();
  10.181 +}
  10.182 +
  10.183  void MapEditor::unselect()
  10.184  {
  10.185  	xelection.unselect();
  10.186 @@ -2083,6 +2111,7 @@
  10.187  	{
  10.188  		xelection.unselect();
  10.189  		xelection.select(lmo);
  10.190 +		xelection.update();
  10.191  		ensureSelectionVisible();
  10.192  		return true;
  10.193  	} 
  10.194 @@ -2097,7 +2126,10 @@
  10.195  void MapEditor::selectInt (LinkableMapObj *lmo)
  10.196  {
  10.197  	if (lmo && xelection.single()!= lmo)
  10.198 +	{
  10.199  		xelection.select(lmo);
  10.200 +		xelection.update();
  10.201 +	}	
  10.202  }
  10.203  
  10.204  void MapEditor::selectNextBranchInt()
  10.205 @@ -2311,6 +2343,7 @@
  10.206  				{
  10.207  					bo=par->getLastBranch();
  10.208  					xelection.select(bo);
  10.209 +					xelection.update();
  10.210  					ensureSelectionVisible();
  10.211  				}
  10.212  			}	
  10.213 @@ -2323,6 +2356,7 @@
  10.214  					xelection.type() == FloatImage)
  10.215  				{
  10.216  					xelection.select(par);
  10.217 +					xelection.update();
  10.218  					ensureSelectionVisible();
  10.219  				}
  10.220  			} else
  10.221 @@ -2333,6 +2367,7 @@
  10.222  					if (bo) 
  10.223  					{
  10.224  						xelection.select(bo);
  10.225 +						xelection.update();
  10.226  						ensureSelectionVisible();
  10.227  					}
  10.228  				}
  10.229 @@ -2360,6 +2395,7 @@
  10.230  				if (bo)
  10.231  				{
  10.232  					xelection.select(bo);
  10.233 +					xelection.update();
  10.234  					ensureSelectionVisible();
  10.235  				}
  10.236  			}
  10.237 @@ -2372,6 +2408,7 @@
  10.238  					xelection.type() == FloatImage)
  10.239  				{
  10.240  					xelection.select(par);
  10.241 +					xelection.update();
  10.242  					ensureSelectionVisible();
  10.243  				}
  10.244  			} else
  10.245 @@ -2382,6 +2419,7 @@
  10.246  					if (bo) 
  10.247  					{
  10.248  						xelection.select(bo);
  10.249 +						xelection.update();
  10.250  						ensureSelectionVisible();
  10.251  					}
  10.252  				}
  10.253 @@ -2401,6 +2439,7 @@
  10.254  		bo2=par->getFirstBranch();
  10.255  		if (bo2) {
  10.256  			xelection.select(bo2);
  10.257 +			xelection.update();
  10.258  			ensureSelectionVisible();
  10.259  		}
  10.260  	}		
  10.261 @@ -2418,6 +2457,7 @@
  10.262  		if (bo2) 
  10.263  		{
  10.264  			xelection.select(bo2);
  10.265 +			xelection.update();
  10.266  			ensureSelectionVisible();
  10.267  		}
  10.268  	}		
  10.269 @@ -2444,7 +2484,7 @@
  10.270  	}
  10.271  }	
  10.272  
  10.273 -void MapEditor::setMapBackgroundImage (const QString &fn)
  10.274 +void MapEditor::setMapBackgroundImage (const QString &fn)	//FIXME missing savestate
  10.275  {
  10.276  	QColor oldcol=mapScene->backgroundBrush().color();
  10.277  	/*
  10.278 @@ -2455,7 +2495,6 @@
  10.279  		QString ("setMapBackgroundImage (%1)").arg(col.name()),
  10.280  		QString("Set background color of map to %1").arg(col.name()));
  10.281  	*/	
  10.282 -	cout << "Trying to load "<<fn.ascii()<<endl;//FIXME
  10.283  	QBrush brush;
  10.284  	brush.setTextureImage (QPixmap (fn));
  10.285  	mapScene->setBackgroundBrush(brush);
  10.286 @@ -2550,6 +2589,7 @@
  10.287  			QString("%1 (\"%2\")").arg(r).arg(f),
  10.288  			QString("Toggling standard flag \"%1\" of %2").arg(f).arg(getName(bo)));
  10.289  		bo->toggleStandardFlag (f,mainWindow->useFlagGroups());
  10.290 +		xelection.update();
  10.291  	}
  10.292  }
  10.293  
  10.294 @@ -2715,6 +2755,7 @@
  10.295  		QFileDialog *fd=new QFileDialog( this,vymName+" - " +tr("Link to another map"));
  10.296  		fd->setFilters (filters);
  10.297  		fd->setCaption(vymName+" - " +tr("Link to another map"));
  10.298 +		fd->setDirectory (lastFileDir);
  10.299  		if (! bo->getVymLink().isEmpty() )
  10.300  			fd->selectFile( bo->getVymLink() );
  10.301  		fd->show();
  10.302 @@ -2722,6 +2763,7 @@
  10.303  		QString fn;
  10.304  		if ( fd->exec() == QDialog::Accepted )
  10.305  		{
  10.306 +			lastFileDir=QDir (fd->directory().path());
  10.307  			saveState(
  10.308  				bo,
  10.309  				"setVymLink (\""+bo->getVymLink()+"\")",
  10.310 @@ -2892,8 +2934,22 @@
  10.311  	}
  10.312  }
  10.313  
  10.314 +void MapEditor::ensureSelectionVisible()
  10.315 +{
  10.316 +	LinkableMapObj *lmo=xelection.single();
  10.317 +	if (lmo) ensureVisible (lmo->getBBox() );
  10.318 +	
  10.319 +}
  10.320 +
  10.321 +void MapEditor::updateSelection()
  10.322 +{
  10.323 +	// Tell selection to update geometries
  10.324 +	xelection.update();
  10.325 +}
  10.326 +
  10.327  void MapEditor::updateActions()
  10.328  {
  10.329 +	// Tell mainwindow to update states of actions
  10.330  	mainWindow->updateActions();
  10.331  	// TODO maybe don't update if blockReposition is set
  10.332  }
  10.333 @@ -3048,7 +3104,36 @@
  10.334  		QString("Set link color to %1").arg(col.name())
  10.335  	);
  10.336  	setMapDefLinkColor( col );
  10.337 -
  10.338 +}
  10.339 +
  10.340 +void MapEditor::selectMapSelectionColor()
  10.341 +{
  10.342 +	QColor col = QColorDialog::getColor( defLinkColor, this );
  10.343 +	setSelectionColor (col);
  10.344 +}
  10.345 +
  10.346 +void MapEditor::setSelectionColorInt (QColor col)
  10.347 +{
  10.348 +	if ( !col.isValid() ) return;
  10.349 +	xelection.setColor (col);
  10.350 +}
  10.351 +
  10.352 +void MapEditor::setSelectionColor(QColor col)
  10.353 +{
  10.354 +	if ( !col.isValid() ) return;
  10.355 +	saveState (
  10.356 +		mapCenter,
  10.357 +		QString("setSelectionColor (%1)").arg(xelection.getColor().name()),
  10.358 +		mapCenter,
  10.359 +		QString("setSelectionColor (%1)").arg(col.name()),
  10.360 +		QString("Set color of selection box to %1").arg(col.name())
  10.361 +	);
  10.362 +	setSelectionColorInt (col);
  10.363 +}
  10.364 +
  10.365 +QColor MapEditor::getSelectionColor()
  10.366 +{
  10.367 +	return xelection.getColor();
  10.368  }
  10.369  
  10.370  bool MapEditor::scrollBranch()
  10.371 @@ -3240,7 +3325,7 @@
  10.372  	}
  10.373  }
  10.374  
  10.375 -void MapEditor::setFrame(const FrameType &t)	// FIXME missing saveState
  10.376 +void MapEditor::setFrameType(const FrameType &t)	// FIXME missing saveState
  10.377  {
  10.378  	BranchObj *bo=xelection.getBranch();
  10.379  	if (bo)
  10.380 @@ -3251,6 +3336,20 @@
  10.381  	}
  10.382  }
  10.383  
  10.384 +void MapEditor::setFramePenColor(const QColor &c)	// FIXME missing saveState
  10.385 +{
  10.386 +	BranchObj *bo=xelection.getBranch();
  10.387 +	if (bo)
  10.388 +		bo->setFramePenColor (c);
  10.389 +}
  10.390 +
  10.391 +void MapEditor::setFrameBrushColor(const QColor &c)	// FIXME missing saveState
  10.392 +{
  10.393 +	BranchObj *bo=xelection.getBranch();
  10.394 +	if (bo)
  10.395 +		bo->setFrameBrushColor (c);
  10.396 +}
  10.397 +
  10.398  void MapEditor::setIncludeImagesVer(bool b)	
  10.399  {
  10.400  	BranchObj *bo=xelection.getBranch();
  10.401 @@ -3455,12 +3554,6 @@
  10.402  	*/
  10.403  }
  10.404  
  10.405 -void MapEditor::ensureSelectionVisible()
  10.406 -{
  10.407 -	LinkableMapObj *lmo=xelection.single();
  10.408 -	if (lmo) ensureVisible (lmo->getBBox() );
  10.409 -}
  10.410 -
  10.411  void MapEditor::contextMenuEvent ( QContextMenuEvent * e )
  10.412  {
  10.413  	// Lineedits are already closed by preceding
  10.414 @@ -3542,7 +3635,7 @@
  10.415  	
  10.416  	e->accept();
  10.417  
  10.418 -	//Take care of clickdesystem flags _or_ modifier modes
  10.419 +	//Take care of  system flags _or_ modifier modes
  10.420  	//
  10.421  	if (lmo && (typeid(*lmo)==typeid(BranchObj) ||
  10.422  		typeid(*lmo)==typeid(MapCenterObj) ))
  10.423 @@ -3568,12 +3661,12 @@
  10.424  				mainWindow->windowToggleNoteEditor();
  10.425  			else if (foname=="hideInExport")		
  10.426  				toggleHideExport();
  10.427 +			xelection.update();	
  10.428  			return;	
  10.429  		} 
  10.430  	} 
  10.431 -	// No system flag clicked, take care of modmodes
  10.432 -
  10.433 -	// Special case: CTRL is pressed
  10.434 +
  10.435 +	// No system flag clicked, take care of modmodes (CTRL-Click)
  10.436  	if (e->state() & Qt::ControlModifier)
  10.437  	{
  10.438  		if (mainWindow->getModMode()==ModModeColor)
  10.439 @@ -3604,10 +3697,13 @@
  10.440  				return;
  10.441  			} 
  10.442  		}
  10.443 -	}
  10.444 +	}	// End of modmodes
  10.445 +
  10.446      if (lmo) 
  10.447  	{	
  10.448 +		// Select the clicked object
  10.449  		selectInt (lmo);
  10.450 +
  10.451  		// Left Button	    Move Branches
  10.452  		if (e->button() == Qt::LeftButton )
  10.453  		{
  10.454 @@ -3642,6 +3738,7 @@
  10.455  			if (e->button() == Qt::MidButton )
  10.456  				toggleScroll();
  10.457  		updateActions();
  10.458 +		xelection.update();
  10.459  	} else 
  10.460  	{ // No MapObj found, we are on the scene itself
  10.461  		// Left Button	    move Pos of sceneView
  10.462 @@ -3690,6 +3787,7 @@
  10.463  			fio->move   (p.x() -movingObj_start.x(), p.y()-movingObj_start.y() );		
  10.464  			fio->setRelPos();
  10.465  			fio->updateLink(); //no need for reposition, if we update link here
  10.466 +			xelection.update();
  10.467  
  10.468  			// Relink float to new mapcenter or branch, if shift is pressed	
  10.469  			// Only relink, if selection really has a new parent
  10.470 @@ -3716,12 +3814,9 @@
  10.471  					fio->getParObj()->requestReposition();
  10.472  					mapCenter->reposition();
  10.473  
  10.474 -					cout << "current relPos="<<movingObj_orgRelPos<<endl;	// FIXME testing
  10.475  					linkTo (lmo->getSelectString());
  10.476 -					cout << "setting movingObj\n";
  10.477 -					movingObj=lmosel;
  10.478 -					movingObj_orgRelPos=lmosel->getRelPos();	
  10.479 -					cout <<"ok 0\n";
  10.480 +					//movingObj=lmosel;
  10.481 +					//movingObj_orgRelPos=lmosel->getRelPos();	
  10.482  
  10.483  					mapCenter->reposition();
  10.484  				}	
  10.485 @@ -3777,6 +3872,7 @@
  10.486  				lmosel->reposition();	
  10.487  			} // depth>0
  10.488  
  10.489 +			xelection.update();
  10.490  		} // no FloatImageObj
  10.491  
  10.492  		scene()->update();
  10.493 @@ -3945,6 +4041,7 @@
  10.494  			// Draw the original link, before selection was moved around
  10.495  			mapCenter->reposition();
  10.496  		}
  10.497 +		xelection.update();
  10.498  		// Finally resize scene, if needed
  10.499  		scene()->update();
  10.500  		movingObj=NULL;		
    11.1 --- a/mapeditor.h	Sat Mar 31 09:28:27 2007 +0000
    11.2 +++ b/mapeditor.h	Sat Mar 31 09:28:27 2007 +0000
    11.3 @@ -1,7 +1,7 @@
    11.4  #ifndef MAPEDITOR_H
    11.5  #define MAPEDITOR_H
    11.6  
    11.7 -#include <QBuffer>
    11.8 +//#include <QBuffer>
    11.9  #include <QGraphicsView>
   11.10  
   11.11  #include "mapcenterobj.h"
   11.12 @@ -100,10 +100,12 @@
   11.13      BranchObj* addNewBranch(int);			// pos allows to add above/below selection
   11.14      BranchObj* addNewBranchBefore();		// insert and make selection its
   11.15      void deleteSelection();
   11.16 -	LinkableMapObj* getSelection();	// returns selection
   11.17 -	void unselect();				// before changing current noteedit
   11.18 -	void reselect();				// after  changing current noteedit
   11.19 -	bool select(const QString &);	// Select by string
   11.20 +	LinkableMapObj* getSelection();			// returns selection
   11.21 +	BranchObj* getSelectedBranch();			// returns selected branch or NULL
   11.22 +	FloatImageObj* getSelectedFloatImage();	// returns selected branch or NULL
   11.23 +	void unselect();						// before changing current noteedit
   11.24 +	void reselect();						// after  changing current noteedit
   11.25 +	bool select(const QString &);			// Select by string
   11.26  	QString getSelectString();
   11.27  private:	
   11.28  	void selectInt(LinkableMapObj*);	
   11.29 @@ -143,6 +145,8 @@
   11.30  	void deleteKeepChilds();				// remove but keep childs
   11.31  	void deleteChilds();					// remove childs
   11.32  	void editMapInfo();						// dialog to enter author, ...
   11.33 +	void ensureSelectionVisible();		
   11.34 +	void updateSelection();					// update geometry of selection
   11.35  	void updateActions();					// update e.g. format buttons
   11.36  	void updateNoteFlag();					// when TextEditor changes
   11.37  	void setMapAuthor (const QString &);
   11.38 @@ -160,6 +164,12 @@
   11.39  	int getMapDefXLinkWidth();
   11.40  	void toggleMapLinkColorHint();			// after changing linkStyles
   11.41      void selectMapLinkColor();
   11.42 +    void selectMapSelectionColor();
   11.43 +private:	
   11.44 +    void setSelectionColorInt(QColor);
   11.45 +public:	
   11.46 +    void setSelectionColor(QColor);
   11.47 +    QColor getSelectionColor();
   11.48  	bool scrollBranch();
   11.49  	bool unscrollBranch();
   11.50      void toggleScroll();
   11.51 @@ -172,7 +182,9 @@
   11.52  	void saveFloatImageInt (FloatImageObj*, const QString &, const QString &);
   11.53  public:	
   11.54  	void saveFloatImage ();
   11.55 -	void setFrame(const FrameType &);
   11.56 +	void setFrameType(const FrameType &);
   11.57 +	void setFramePenColor (const QColor &);
   11.58 +	void setFrameBrushColor (const QColor &);
   11.59  	void setIncludeImagesVer(bool);
   11.60  	void setIncludeImagesHor(bool);
   11.61  	void setHideLinkUnselected (bool);
   11.62 @@ -187,7 +199,6 @@
   11.63  											// set /mainwindo/showTestMenu=true...
   11.64  
   11.65  protected:
   11.66 -	void ensureSelectionVisible();		
   11.67  	virtual void contextMenuEvent ( QContextMenuEvent *e );
   11.68      virtual void keyPressEvent(QKeyEvent*);
   11.69      virtual void keyReleaseEvent(QKeyEvent*);
    12.1 --- a/ornamentedobj.cpp	Sat Mar 31 09:28:27 2007 +0000
    12.2 +++ b/ornamentedobj.cpp	Sat Mar 31 09:28:27 2007 +0000
    12.3 @@ -31,9 +31,10 @@
    12.4  
    12.5  OrnamentedObj::~OrnamentedObj()
    12.6  {
    12.7 -    delete (heading);
    12.8 -	delete (systemFlags);
    12.9 -	delete (standardFlags);
   12.10 +    delete heading;
   12.11 +	delete systemFlags;
   12.12 +	delete standardFlags;
   12.13 +	delete frame;
   12.14  }
   12.15  
   12.16  
   12.17 @@ -54,6 +55,8 @@
   12.18  	standardFlags->clone(standardFlagsDefault);
   12.19  	standardFlags->setName ("standardFlags");
   12.20  
   12.21 +	frame = new FrameObj (scene);
   12.22 +
   12.23  	hideExport=false;
   12.24  	hidden=false;
   12.25  
   12.26 @@ -103,6 +106,56 @@
   12.27      return heading->getColor();
   12.28  }
   12.29  
   12.30 +FrameType OrnamentedObj::getFrameType()
   12.31 +{
   12.32 +	return frame->getFrameType();
   12.33 +}
   12.34 +
   12.35 +void OrnamentedObj::setFrameType(const FrameType &t)
   12.36 +{
   12.37 +	frame->setFrameType(t);
   12.38 +	if (t == NoFrame)
   12.39 +		linkpos=LinkBottom;
   12.40 +	else	
   12.41 +		linkpos=LinkMiddle;
   12.42 +
   12.43 +	calcBBoxSize();
   12.44 +	positionBBox();
   12.45 +	requestReposition();
   12.46 +}
   12.47 +
   12.48 +void OrnamentedObj::setFrameType(const QString &t)
   12.49 +{
   12.50 +	frame->setFrameType(t);
   12.51 +	if (frame->getFrameType() == NoFrame)
   12.52 +		linkpos=LinkBottom;
   12.53 +	else	
   12.54 +		linkpos=LinkMiddle;
   12.55 +
   12.56 +	calcBBoxSize();
   12.57 +	positionBBox();
   12.58 +	requestReposition();
   12.59 +}
   12.60 +
   12.61 +void OrnamentedObj::setFramePenColor(QColor col)
   12.62 +{
   12.63 +	frame->setPenColor (col);
   12.64 +}
   12.65 +
   12.66 +QColor OrnamentedObj::getFramePenColor()
   12.67 +{
   12.68 +	return frame->getPenColor ();
   12.69 +}
   12.70 +
   12.71 +void OrnamentedObj::setFrameBrushColor(QColor col)
   12.72 +{
   12.73 +	frame->setBrushColor (col);
   12.74 +}
   12.75 +
   12.76 +QColor OrnamentedObj::getFrameBrushColor()
   12.77 +{
   12.78 +	return frame->getBrushColor ();
   12.79 +}
   12.80  
   12.81  void OrnamentedObj::positionContents()
   12.82  {
    13.1 --- a/ornamentedobj.h	Sat Mar 31 09:28:27 2007 +0000
    13.2 +++ b/ornamentedobj.h	Sat Mar 31 09:28:27 2007 +0000
    13.3 @@ -1,6 +1,7 @@
    13.4  #ifndef ORNAMENTEDOBJ_H
    13.5  #define ORNAMENTEDOBJ_H
    13.6  
    13.7 +#include "frameobj.h"
    13.8  #include "linkablemapobj.h"
    13.9  
   13.10  class OrnamentedObj:public LinkableMapObj {
   13.11 @@ -16,6 +17,15 @@
   13.12  	virtual void setLinkColor();			// sets color according to colorhint, overloaded
   13.13  	virtual void setColor(QColor);			// set the color of text and link
   13.14  	QColor getColor ();						// get color of heading
   13.15 +
   13.16 +	virtual FrameType getFrameType ();
   13.17 +	virtual void setFrameType (const FrameType &);
   13.18 +	virtual void setFrameType (const QString &);
   13.19 +	virtual void setFramePenColor (QColor);
   13.20 +	virtual QColor getFramePenColor ();
   13.21 +	virtual void setFrameBrushColor (QColor);
   13.22 +	virtual QColor getFrameBrushColor ();
   13.23 +
   13.24      virtual void positionContents();
   13.25      virtual void move   (double,double);
   13.26      virtual void move   (QPointF);
   13.27 @@ -53,6 +63,7 @@
   13.28  	bool isNoteInEditor;			// true if TextEditor has this note
   13.29  	FlagRowObj *systemFlags;		// System Flags
   13.30  	FlagRowObj *standardFlags;		// Standard Flags
   13.31 +	FrameObj *frame;				// frame around object
   13.32  	QRectF ornamentsBBox;			// bbox of flags and heading
   13.33  	QString url;					// url to external doc
   13.34  	QString vymLink;				// path to another map
    14.1 --- a/texteditor.cpp	Sat Mar 31 09:28:27 2007 +0000
    14.2 +++ b/texteditor.cpp	Sat Mar 31 09:28:27 2007 +0000
    14.3 @@ -500,7 +500,7 @@
    14.4  {
    14.5      ce->accept();	// TextEditor can be reopened with show()
    14.6      showwithmain=false;
    14.7 -	emit (textEditorClosed() );
    14.8 +	emit (windowClosed() );
    14.9      return;
   14.10  }
   14.11  
    15.1 --- a/texteditor.h	Sat Mar 31 09:28:27 2007 +0000
    15.2 +++ b/texteditor.h	Sat Mar 31 09:28:27 2007 +0000
    15.3 @@ -44,7 +44,7 @@
    15.4  
    15.5  signals:
    15.6  	void textHasChanged();
    15.7 -	void textEditorClosed();
    15.8 +	void windowClosed();
    15.9  	void fontFamilyHasChanged();
   15.10  	void fontSizeHasChanged();
   15.11  	
    16.1 --- a/version.h	Sat Mar 31 09:28:27 2007 +0000
    16.2 +++ b/version.h	Sat Mar 31 09:28:27 2007 +0000
    16.3 @@ -4,8 +4,8 @@
    16.4  #include <QString>
    16.5  
    16.6  #define __VYM_NAME "VYM"
    16.7 -#define __VYM_VERSION "1.8.69"
    16.8 -#define __VYM_BUILD_DATE "March 21, 2007"
    16.9 +#define __VYM_VERSION "1.8.70"
   16.10 +#define __VYM_BUILD_DATE "March 31, 2007"
   16.11  
   16.12  
   16.13  bool checkVersion(const QString &);