Fixed relinking of floats undo/redo
authorinsilmaril
Wed, 10 Jan 2007 13:26:12 +0000
changeset 420b7447adddc9a
parent 419 3988818e8087
child 421 5522d1da7e37
Fixed relinking of floats undo/redo
demos/todo.vym
historywindow.cpp
mainwindow.cpp
mapeditor.cpp
mapeditor.h
tex/vym.changelog
tex/vym.tex
version.h
     1.1 Binary file demos/todo.vym has changed
     2.1 --- a/historywindow.cpp	Fri Jan 05 11:17:33 2007 +0000
     2.2 +++ b/historywindow.cpp	Wed Jan 10 13:26:12 2007 +0000
     2.3 @@ -37,6 +37,8 @@
     2.4  	resize (settings.value ( "/historywindow/geometry/size", QSize(450,600)).toSize());
     2.5  	move   (settings.value ( "/historywindow/geometry/pos", QPoint (250,50)).toPoint());
     2.6  
     2.7 +	for (int i=0; i<3; ++i)
     2.8 +		ui.historyTable->setColumnWidth (i,settings.value( QString("/historywindow/geometry/columnWidth/%1").arg(i),150).toInt());
     2.9  /*
    2.10  	if (settings.value ( "/historywindow/showWithMain",false).toBool())
    2.11  		setShowWithMain(true);
    2.12 @@ -50,6 +52,8 @@
    2.13  	settings.setValue( "/historywindow/geometry/size", size() );
    2.14  	settings.setValue( "/historywindow/geometry/pos", pos() );
    2.15  	//settings.setValue( "/historywindow/showWithMain",showWithMain());
    2.16 +	for (int i=0; i<3; ++i)
    2.17 +		settings.setValue( QString("/historywindow/geometry/columnWidth/%1").arg(i), ui.historyTable->columnWidth (i) );
    2.18  }
    2.19  
    2.20  void HistoryWindow::clearRow(int row)
     3.1 --- a/mainwindow.cpp	Fri Jan 05 11:17:33 2007 +0000
     3.2 +++ b/mainwindow.cpp	Wed Jan 10 13:26:12 2007 +0000
     3.3 @@ -2767,8 +2767,10 @@
     3.4  
     3.5  void Main::editMoveUp()
     3.6  {
     3.7 +	cout << "Main editMoveUp begin\n";
     3.8  	if (currentMapEditor())
     3.9  	    currentMapEditor()->moveBranchUp();
    3.10 +	cout << "Main editMoveUp end\n";
    3.11  }
    3.12  
    3.13  void Main::editMoveDown()
    3.14 @@ -3476,50 +3478,52 @@
    3.15  		docname="vym_es.pdf";
    3.16  	else	
    3.17  		docname="vym.pdf";
    3.18 +
    3.19 +	QStringList searchList;
    3.20  	QDir docdir;
    3.21  	#if defined(Q_OS_MACX)
    3.22 -		docdir.setPath("./vym.app/Contents");
    3.23 +		searchList << "./vym.app/Contents";
    3.24  	#else
    3.25  		// default path in SUSE LINUX
    3.26 -		docdir.setPath("/usr/share/doc/packages/vym/doc");
    3.27 +		searchList <<"/usr/share/doc/packages/vym/doc";
    3.28  	#endif
    3.29  
    3.30 -	if (!docdir.exists() )
    3.31 +	searchList << "doc";	// relative path for easy testing in tarball
    3.32 +	searchList << "doc/tex";	// Easy testing working on vym.tex
    3.33 +	searchList << "/usr/share/doc/vym";	// Debian
    3.34 +	searchList << "/usr/share/doc/packages";// Knoppix
    3.35 +
    3.36 +	bool found=false;
    3.37 +	QFile docfile;
    3.38 +	for (int i=0; i<searchList.count(); ++i)
    3.39  	{
    3.40 -		// relative path for easy testing in tarball
    3.41 -		docdir.setPath("doc");
    3.42 -		if (!docdir.exists() )
    3.43 +		docfile.setFileName(QDir::convertSeparators(searchList.at(i)+"/"+docname));
    3.44 +		if (docfile.exists() )
    3.45  		{
    3.46 -			// relative path for testing while still writing vym.tex
    3.47 -			docdir.setPath("doc/tex/vym.pdf");
    3.48 -			if (!docdir.exists() )
    3.49 -			{
    3.50 -				// Try yet another one for Knoppix
    3.51 -				docdir.setPath("/usr/share/doc/packages/vym");
    3.52 -				if (!docdir.exists() )
    3.53 -				{
    3.54 -					QMessageBox::critical(0, 
    3.55 -					tr("Critcal error"),
    3.56 -					tr("Couldn't find the documentation\n"
    3.57 -					"vym.pdf in various directories."));
    3.58 -					return;
    3.59 -				}	
    3.60 -			}	
    3.61 -		}
    3.62 +			found=true;
    3.63 +			break;
    3.64 +		}	
    3.65 +
    3.66  	}
    3.67 -	
    3.68 -	QString docpath=docdir.path()+"/"+docname;
    3.69 +	if (!found)
    3.70 +	{
    3.71 +		QMessageBox::critical(0, 
    3.72 +			tr("Critcal error"),
    3.73 +			tr("Couldn't find the documentation %1 in:\n%2").arg(searchList.join("\n")));
    3.74 +		return;
    3.75 +	}	
    3.76 +
    3.77  	QStringList args;
    3.78  	Process *pdfProc = new Process();
    3.79 -	args <<docpath;
    3.80 -
    3.81 -	pdfProc->start( settings.value("/mainwindow/readerPDF").toString());
    3.82 +	args <<docfile.fileName();
    3.83 +
    3.84 +	pdfProc->start( settings.value("/mainwindow/readerPDF").toString(),args);
    3.85  	if ( !pdfProc->waitForStarted() ) 
    3.86  	{
    3.87  		// error handling
    3.88  		QMessageBox::warning(0, 
    3.89  			tr("Warning"),
    3.90 -			tr("Couldn't find a viewer to open %1.\n").arg(docpath)+
    3.91 +			tr("Couldn't find a viewer to open %1.\n").arg(docfile.fileName())+
    3.92  			tr("Please use Settings->")+tr("Set application to open PDF files"));
    3.93  		settingsPDF();	
    3.94  		return;
     4.1 --- a/mapeditor.cpp	Fri Jan 05 11:17:33 2007 +0000
     4.2 +++ b/mapeditor.cpp	Wed Jan 10 13:26:12 2007 +0000
     4.3 @@ -165,7 +165,7 @@
     4.4  	return blockReposition;
     4.5  }
     4.6  
     4.7 -QString MapEditor::getName (LinkableMapObj *lmo)
     4.8 +QString MapEditor::getName (const LinkableMapObj *lmo)
     4.9  {
    4.10  	QString s;
    4.11  	if (!lmo) return QString("Error: NULL has no name!");
    4.12 @@ -638,6 +638,29 @@
    4.13  				}	
    4.14  			}	
    4.15  		}
    4.16 +	} else if (com=="linkTo")
    4.17 +	{
    4.18 +		if (!selection)
    4.19 +		{
    4.20 +			api.setError (Aborted,"Nothing selected");
    4.21 +		} else if ( (typeid(*selection) != typeid(BranchObj) && 
    4.22 +					 typeid(*selection) != typeid(MapCenterObj) &&
    4.23 +					 typeid(*selection) != typeid(FloatImageObj)))
    4.24 +		{				  
    4.25 +			api.setError (Aborted,"Type of selection is not a floatimage");
    4.26 +		} else if (api.checkParamCount(1))
    4.27 +		{
    4.28 +			// 0	selectstring of parent
    4.29 +			s=api.parString(ok,0);
    4.30 +			LinkableMapObj *dst=mapCenter->findObjBySelect (s);
    4.31 +			if (dst)
    4.32 +			{	
    4.33 +				if (typeid(*dst) == typeid(BranchObj) ||
    4.34 +				    typeid(*dst) == typeid(MapCenterObj)) 
    4.35 +					linkTo (dst->getSelectString());
    4.36 +			} else	
    4.37 +				api.setError (Aborted,"Destination is not a branch");
    4.38 +		}
    4.39  	} else if (com=="moveBranchUp")
    4.40  	{
    4.41  		if (!selection)
    4.42 @@ -1208,10 +1231,12 @@
    4.43  
    4.44  QPixmap MapEditor::getPixmap()
    4.45  {
    4.46 -/* FIXME getPixmap not ported yet to QT4
    4.47  	QRectF mapRect=mapCenter->getTotalBBox();
    4.48 -	QPixmap pix ();
    4.49 +	QPixmap pix((int)mapRect.width(),(int)mapRect.height());
    4.50 +	cout << "w.h="<<(int)mapRect.width()<<","<<(int)mapRect.height()<<endl;
    4.51  	QPainter pp (&pix);
    4.52 +	
    4.53 +	pp.setRenderHints(renderHints());
    4.54  
    4.55  	// Don't print the visualisation of selection
    4.56  	LinkableMapObj *oldselection=NULL;
    4.57 @@ -1221,10 +1246,11 @@
    4.58  		selection->unselect();
    4.59  	}
    4.60  
    4.61 -	pp.setWindow (mapRect);
    4.62 -
    4.63 -	//mapScene->drawArea(mapRect, &pp);	// draw scene to painter
    4.64 -	mapScene->render(&pp);	// draw scene to painter
    4.65 +	mapScene->render (	&pp, 
    4.66 +		QRectF(0,0,mapRect.width(),mapRect.height()),
    4.67 +		QRectF(mapRect.x(),mapRect.y(),mapRect.width(),mapRect.height() ));
    4.68 +
    4.69 +//	mapScene->render(&pp);	// draw scene to painter
    4.70  
    4.71  
    4.72  
    4.73 @@ -1236,7 +1262,6 @@
    4.74  	}	
    4.75  	
    4.76  	return pix;
    4.77 -*/
    4.78  }
    4.79  
    4.80  void MapEditor::setHideTmpMode (HideTmpMode mode)
    4.81 @@ -1513,6 +1538,7 @@
    4.82  
    4.83  	mainWindow->updateHistory (undoSet);
    4.84  	updateActions();
    4.85 +	ensureSelectionVisible();
    4.86  }
    4.87  
    4.88  bool MapEditor::isUndoAvailable()
    4.89 @@ -1689,6 +1715,7 @@
    4.90  			QString("Move %1 to relativ position %2").arg(getName(selection)).arg(ps));
    4.91  		((OrnamentedObj*)selection)->move2RelPos (x,y);
    4.92  		mapCenter->reposition();
    4.93 +		selection->updateLink();
    4.94  	}
    4.95  }
    4.96  
    4.97 @@ -1706,6 +1733,7 @@
    4.98  		selection->select();
    4.99  		saveState (selection,"moveBranchDown ()",bo,"moveBranchUp ()",QString("Move up %1").arg(getName(bo)));
   4.100  		mapCenter->reposition();
   4.101 +		scene()->update();
   4.102  		ensureSelectionVisible();
   4.103  	}
   4.104  }
   4.105 @@ -1724,10 +1752,42 @@
   4.106  		selection->select();
   4.107  		saveState(selection,"moveBranchUp ()",bo,"moveBranchDown ()",QString("Move down %1").arg(getName(bo)));
   4.108  		mapCenter->reposition();
   4.109 +		scene()->update();
   4.110  		ensureSelectionVisible();
   4.111  	}	
   4.112  }
   4.113  
   4.114 +void MapEditor::linkTo(const QString &dstString)
   4.115 +{
   4.116 +	BranchObj *dst=(BranchObj*)(mapCenter->findObjBySelect(dstString));
   4.117 +	if (dst && (typeid(*dst)==typeid (BranchObj) || 
   4.118 +	            typeid(*dst)==typeid (MapCenterObj)))
   4.119 +	{			
   4.120 +		LinkableMapObj *dstPar=dst->getParObj();
   4.121 +		QString parString=dstPar->getSelectString();
   4.122 +		if (typeid(*selection)==typeid(FloatImageObj)) 
   4.123 +		{
   4.124 +			FloatImageObj *fio=(FloatImageObj*)selection;
   4.125 +			QString fioPreSelectString=fio->getSelectString();
   4.126 +			QString fioPreParentSelectString=fio->getParObj()->getSelectString();
   4.127 +			((BranchObj*)(dst))->addFloatImage (fio);
   4.128 +			fio->unselect();
   4.129 +			((BranchObj*)(fio->getParObj()))->removeFloatImage (fio);
   4.130 +			fio=((BranchObj*)(dst))->getLastFloatImage();
   4.131 +			fio->setRelPos();
   4.132 +			fio->reposition();
   4.133 +			selection=(LinkableMapObj*)fio;
   4.134 +			selection->select();
   4.135 +			saveState(
   4.136 +				fio->getSelectString(),
   4.137 +				QString("linkTo (\"%1\")").arg(fioPreParentSelectString), 
   4.138 +				fioPreSelectString, 
   4.139 +				QString ("linkTo (\"%1\")").arg(dstString),
   4.140 +				QString ("Link floatimage to %1").arg(getName(dst)));
   4.141 +		}	
   4.142 +	}
   4.143 +}
   4.144 +
   4.145  QString MapEditor::getHeading(bool &ok, QPoint &p)
   4.146  {
   4.147  	if (selection  &&  
   4.148 @@ -3310,7 +3370,7 @@
   4.149  		cout << "canceled!\n";
   4.150  	return;
   4.151  
   4.152 -/* Hide hidden stuff temporary, maybe add this as regular function somewhere
   4.153 +/* TODO Hide hidden stuff temporary, maybe add this as regular function somewhere
   4.154  	if (hidemode==HideNone)
   4.155  	{
   4.156  		setHideTmpMode (HideExport);
   4.157 @@ -3593,21 +3653,32 @@
   4.158  				( lmo != fo->getParObj())  
   4.159  				)
   4.160  			{
   4.161 -				if (typeid(*fo) == typeid(FloatImageObj)) 
   4.162 +				if (typeid(*fo) == typeid(FloatImageObj) && 
   4.163 +				( (typeid(*lmo)==typeid(BranchObj) ||
   4.164 +				  typeid(*lmo)==typeid(MapCenterObj)) ))  
   4.165  				{
   4.166 -					//FIXME undocom for relinking of floats
   4.167 -
   4.168 -					//saveStateComplete(QString("Relink %1 to %2").arg(getName(fo)).arg(getName(lmo) ) );
   4.169 -					FloatImageObj *fio=(FloatImageObj*)(fo);
   4.170 -					((BranchObj*)(lmo))->addFloatImage (fio);
   4.171 -					fio->unselect();
   4.172 -					((BranchObj*)(fio->getParObj()))->removeFloatImage (fio);
   4.173 -					fio=((BranchObj*)(lmo))->getLastFloatImage();
   4.174 -					fio->setRelPos();
   4.175 -					fio->reposition();
   4.176 -					selection=(LinkableMapObj*)(fio);
   4.177 -					selection->select();
   4.178 -					movingObj=(MapObj*)(fio);
   4.179 +
   4.180 +					// Also save the move which was done so far
   4.181 +					FloatImageObj *fio=(FloatImageObj*)selection;
   4.182 +					QString pold=qpointfToString(movingObj_orgRelPos);
   4.183 +					QString pnow=qpointfToString(fio->getRelPos());
   4.184 +					saveState(
   4.185 +						selection,
   4.186 +						"moveRel "+pold,
   4.187 +						selection,
   4.188 +						"moveRel "+pnow,
   4.189 +						QString("Move %1 to relativ position %2").arg(getName(selection)).arg(pnow));
   4.190 +					fio->getParObj()->requestReposition();
   4.191 +					mapCenter->reposition();
   4.192 +
   4.193 +					cout << "current relPos="<<movingObj_orgRelPos<<endl;
   4.194 +					linkTo (lmo->getSelectString());
   4.195 +					cout << "setting movingObj\n";
   4.196 +					movingObj=(MapObj*)selection;
   4.197 +					movingObj_orgRelPos=selection->getRelPos();	
   4.198 +					cout <<"ok 0\n";
   4.199 +
   4.200 +					mapCenter->reposition();
   4.201  				}	
   4.202  			}
   4.203  		} else	
   4.204 @@ -3929,7 +4000,7 @@
   4.205                         bo->setHeading(uris.at(i).toString());
   4.206  				}
   4.207  			}
   4.208 -		mapCenter->reposition();
   4.209 +			mapCenter->reposition();
   4.210  		}
   4.211  	}	
   4.212  	event->acceptProposedAction();
     5.1 --- a/mapeditor.h	Fri Jan 05 11:17:33 2007 +0000
     5.2 +++ b/mapeditor.h	Wed Jan 10 13:26:12 2007 +0000
     5.3 @@ -24,7 +24,7 @@
     5.4  	bool isRepositionBlocked(); // block while load or undo
     5.5  	
     5.6  private:
     5.7 -	QString getName(LinkableMapObj*);	// Get e.g. heading or filename
     5.8 +	QString getName(const LinkableMapObj*);	// Get e.g. heading or filename
     5.9  	void makeTmpDirs();		// create temporary directories
    5.10      QString saveToDir(const QString&,const QString &,bool, const QPointF &,LinkableMapObj*);
    5.11      void saveStateChangingPart (LinkableMapObj *, LinkableMapObj *, const QString &, const QString &);
    5.12 @@ -93,6 +93,9 @@
    5.13      void moveRel (const int &x, const int &y);
    5.14      void moveBranchUp();
    5.15      void moveBranchDown();
    5.16 +private:	
    5.17 +	void linkTo(const QString &);
    5.18 +public:	
    5.19  	QString getHeading (bool &ok,QPoint &p); // Get heading, ok if selection is branch
    5.20  	void setHeading(const QString &);
    5.21  private:
     6.1 --- a/tex/vym.changelog	Fri Jan 05 11:17:33 2007 +0000
     6.2 +++ b/tex/vym.changelog	Wed Jan 10 13:26:12 2007 +0000
     6.3 @@ -1,3 +1,10 @@
     6.4 +-------------------------------------------------------------------
     6.5 +Wed Jan 10 19:48:32 CET 2007 - uwe
     6.6 +
     6.7 +- Version: 1.8.64
     6.8 +- Bugfix: move branch up/down calls scene()->update() now => much faster
     6.9 +- Bugfix: Relinking of floatimages undo/redo
    6.10 +
    6.11  -------------------------------------------------------------------
    6.12  Tue Jan  2 19:30:50 CET 2007 - uwedr
    6.13  
     7.1 --- a/tex/vym.tex	Fri Jan 05 11:17:33 2007 +0000
     7.2 +++ b/tex/vym.tex	Wed Jan 10 13:26:12 2007 +0000
     7.3 @@ -147,8 +147,8 @@
     7.4  
     7.5  \section{Concept of \vym}
     7.6  %TODO may add a general introduction here...
     7.7 -\subsection{Windows: mapeditor and noteeditor}
     7.8 -\vym uses two windows: an editor for the map itself and another one for
     7.9 +\subsection{Windows: Mapeditor, Noteeditor, and more}
    7.10 +\vym uses mainly two windows: an editor for the map itself and another one for
    7.11  notes, which are part of the map. Let's call them {\em mapeditor} and
    7.12  {\em noteeditor}: 
    7.13  \begin{center}
    7.14 @@ -160,6 +160,10 @@
    7.15  information e.g. the content of a email easily in a {\em branch}: Just
    7.16  type or copy\&paste it into the {\em noteeditor}. Working with notes is
    7.17  explained in \ref{noteeditor}
    7.18 + 
    7.19 +Another window which can be toggled on or off is the {\em history
    7.20 +window}. It can be used to see the latest actions performed on a map and
    7.21 +also to undo and redo actions. Details are in \ref{historywindow}.
    7.22  
    7.23  \subsection{Menus and Context menus}
    7.24  On top of each window you find the menubar. The options you find there
    7.25 @@ -577,9 +581,9 @@
    7.26  \end{center}
    7.27  
    7.28  \subsection{Import and export notes}
    7.29 -The note is always saved automatically within the \vym file itself.
    7.30 +The note is always saved automatically within the \vym map itself.
    7.31  Nevertheless sometimes it is nice to import a note from an external file
    7.32 -or write it. Use "File\ra~Import" and "File\ra~Export" to do so. 
    7.33 +or write it. Use "Map\ra~Import" and "Map\ra~Export" to do so. 
    7.34  
    7.35  \subsection{Edit and print note}
    7.36  Editing works like in any simple texteditor, including undo and redo
    7.37 @@ -630,17 +634,6 @@
    7.38  an email. Normally \vym will generate a new paragraph for each new line.
    7.39  This usually is not what you want, so you can choose from the menu
    7.40  
    7.41 -\subsection{Advanced actions}
    7.42 -\subsubsection*{Edit \ra Convert subsubsections:}
    7.43 -This turns subsubsections in selected text (or all text, if nothing is
    7.44 -selected) into linebreaks. This is especially useful for snippets of
    7.45 -source code.
    7.46 -
    7.47 -\subsubsection*{Edit \ra Join Lines:}
    7.48 -Tries to format text, so that empty lines are used to delimit
    7.49 -paragraphs. This is done for selected text (or all text, if nothing is
    7.50 -selected). Especially useful for text like emails, meeting minutes etc.
    7.51 -
    7.52  \section{Hello world}
    7.53  This section is about how \vym can interact with other applications.
    7.54  Many applications meanwhile can read and write their data using XML, the
    7.55 @@ -658,7 +651,7 @@
    7.56  use \vym to maintain the bookmark mess? To create a new map containing
    7.57  your current KDE bookmarks just choose
    7.58  \begin{itemize}
    7.59 -	\item File \ra Import\ra KDE Bookmarks
    7.60 +	\item Map \ra Import\ra KDE Bookmarks
    7.61  \end{itemize}
    7.62  
    7.63  \subsubsection*{Mind Manager}
    7.64 @@ -669,7 +662,7 @@
    7.65  \href{http://mindjet.de}{http://mindjet.de}} into \vym maps. Notes and
    7.66  pictures are not converted at the moment. You can import files with
    7.67  \begin{itemize}
    7.68 -	\item File \ra Import\ra Mind Manager
    7.69 +	\item Map \ra Import\ra Mind Manager
    7.70  \end{itemize}
    7.71  
    7.72  
    7.73 @@ -701,7 +694,7 @@
    7.74  currently limited, but it possible to export presentations which can be
    7.75  opened in Open Office Impress. By selecting
    7.76  \begin{itemize}
    7.77 -	\item File \ra Export\ra Open Office
    7.78 +	\item Map  \ra Export\ra Open Office
    7.79  \end{itemize}
    7.80  you get a file dialogue where you can choose the output file and the
    7.81  file type:
    7.82 @@ -740,7 +733,7 @@
    7.83  as experimental, there are no options (yet). 
    7.84  By selecting
    7.85  \begin{itemize}
    7.86 -	\item File \ra Export\ra \LaTeX 
    7.87 +	\item Map  \ra Export\ra \LaTeX 
    7.88  \end{itemize}
    7.89  you will be asked in a file dialog for the name of the output file. This
    7.90  file should be included in a \LaTeX document using command  
    7.91 @@ -753,7 +746,7 @@
    7.92  running konquerors via DCOP of the changed file. \vym does not create a
    7.93  backup!
    7.94  \begin{itemize}
    7.95 -	\item File \ra Export \ra KDE Bookmarks
    7.96 +	\item Map \ra Export \ra KDE Bookmarks
    7.97  \end{itemize}
    7.98  
    7.99  
   7.100 @@ -808,6 +801,9 @@
   7.101  
   7.102  \section{Advanced Editing}
   7.103  
   7.104 +\subsection{Changing the history: Undo and Redo}
   7.105 +%FIXME
   7.106 +
   7.107  \subsection{How to deal with Bookmarks} \label{bookmarks}
   7.108  \subsubsection*{Open new tabs instead of new windows}
   7.109  If you use konqueror as browser, \vym will remember the konqueror which
   7.110 @@ -939,6 +935,7 @@
   7.111  choose between {\em Import Add} and {\em Import Replace}: The imported
   7.112  data will be added after the selection resp. replace the selection.
   7.113  
   7.114 +\label{historywindow}
   7.115  
   7.116  \section{\vym on Mac OS X}
   7.117  \subsection{Overview}
   7.118 @@ -973,7 +970,22 @@
   7.119  
   7.120  \begin{appendix}
   7.121  
   7.122 -\section{Starting \vym}
   7.123 +\section{\vym initialization process and configuration}
   7.124 +\subsection{Configuration file}
   7.125 +On startup \vym will look for a configuration for user specific settings
   7.126 +like window positions, toolbars etc. If this file does not already
   7.127 +exist, it will be created. The file is located in the users home
   7.128 +directory. The exact position depends on the platform:
   7.129 +\begin{center}
   7.130 +\begin{tabular}{cl}
   7.131 +	{\bf Platform}	& {\bf Configuration file} \\ \hline
   7.132 +	Linux		& {\tt $\sim$/.config/InSilmaril/vym.conf  } \\
   7.133 +	Mac OS X	& {\tt /Users/NAME/Library/Preferences/com.insilmaril.vym.plist  } \\
   7.134 +\end{tabular}
   7.135 +\end{center}
   7.136 +The file can be edited manually, or on Mac~OS~X with Property List
   7.137 +Editor (installed with xtools).
   7.138 +
   7.139  \subsection{Path to ressources}
   7.140  \vym will try to find its ressources (images, stylesheets, filters,
   7.141  etc.) in the following places:
     8.1 --- a/version.h	Fri Jan 05 11:17:33 2007 +0000
     8.2 +++ b/version.h	Wed Jan 10 13:26:12 2007 +0000
     8.3 @@ -4,8 +4,8 @@
     8.4  #include <QString>
     8.5  
     8.6  #define __VYM_NAME "VYM"
     8.7 -#define __VYM_VERSION "1.8.64"
     8.8 -#define __VYM_BUILD_DATE "January 2, 2007"
     8.9 +#define __VYM_VERSION "1.8.65"
    8.10 +#define __VYM_BUILD_DATE "January 9, 2007"
    8.11  
    8.12  
    8.13  bool checkVersion(const QString &);