initial import master
authorMarcelo Barros de Almeida <marcelo@chuck-norris.(none)>
Thu, 14 Jan 2010 09:08:48 +0000 (07:08 -0200)
committerMarcelo Barros de Almeida <marcelo@chuck-norris.(none)>
Thu, 14 Jan 2010 09:08:48 +0000 (07:08 -0200)
387 files changed:
INSTALL.txt [new file with mode: 0644]
LICENSE.txt [new file with mode: 0644]
Makefile [new file with mode: 0644]
Makefile.Debug [new file with mode: 0644]
Makefile.Release [new file with mode: 0644]
README.txt [new file with mode: 0644]
aboutdialog.cpp [new file with mode: 0644]
aboutdialog.h [new file with mode: 0644]
animpoint.cpp [new file with mode: 0644]
animpoint.h [new file with mode: 0644]
attribute.cpp [new file with mode: 0644]
attribute.h [new file with mode: 0644]
attributedelegate.cpp [new file with mode: 0644]
attributedelegate.h [new file with mode: 0644]
attributedialog.cpp [new file with mode: 0644]
attributedialog.h [new file with mode: 0644]
attributedialog.ui [new file with mode: 0644]
attributewidget.cpp [new file with mode: 0644]
attributewidget.h [new file with mode: 0644]
attributewidget.ui [new file with mode: 0644]
branchobj.cpp [new file with mode: 0644]
branchobj.h [new file with mode: 0644]
branchpropwindow.cpp [new file with mode: 0644]
branchpropwindow.h [new file with mode: 0644]
branchpropwindow.ui [new file with mode: 0644]
debian/.pc/.version [new file with mode: 0644]
debian/README.Debian [new file with mode: 0644]
debian/changelog [new file with mode: 0644]
debian/compat [new file with mode: 0644]
debian/control [new file with mode: 0644]
debian/copyright [new file with mode: 0644]
debian/dirs [new file with mode: 0644]
debian/docs [new file with mode: 0644]
debian/menu [new file with mode: 0644]
debian/patches/gcc-ftbfs-fix.patch [new file with mode: 0644]
debian/patches/iconpath.patch [new file with mode: 0644]
debian/patches/pro-file.patch [new file with mode: 0644]
debian/patches/series [new file with mode: 0644]
debian/rules [new file with mode: 0644]
debian/vym.1 [new file with mode: 0644]
debian/vym.desktop [new file with mode: 0644]
debian/vym.manpages [new file with mode: 0644]
debian/x-vym.desktop [new file with mode: 0644]
demos/lifeforms.vym [new file with mode: 0644]
demos/math.vym [new file with mode: 0644]
demos/time-management.vym [new file with mode: 0644]
demos/vym-projectplan.vym [new file with mode: 0644]
doc/vym.pdf [new file with mode: 0644]
doc/vym_es.pdf [new file with mode: 0644]
doc/vym_fr.pdf [new file with mode: 0644]
doxygen.config [new file with mode: 0644]
editxlinkdialog.cpp [new file with mode: 0644]
editxlinkdialog.h [new file with mode: 0644]
editxlinkdialog.ui [new file with mode: 0644]
exporthtmldialog.ui [new file with mode: 0644]
exportoofiledialog.cpp [new file with mode: 0644]
exportoofiledialog.h [new file with mode: 0644]
exports.cpp [new file with mode: 0644]
exports.h [new file with mode: 0644]
exports/orange-blue.conf [new file with mode: 0644]
exports/template-orange-blue/META-INF/manifest.xml [new file with mode: 0644]
exports/template-orange-blue/Pictures/1000000000000040000000400142E835.png [new file with mode: 0644]
exports/template-orange-blue/Thumbnails/thumbnail.png [new file with mode: 0644]
exports/template-orange-blue/content-template.xml [new file with mode: 0644]
exports/template-orange-blue/content.xml [new file with mode: 0644]
exports/template-orange-blue/meta.xml [new file with mode: 0644]
exports/template-orange-blue/mimetype [new file with mode: 0644]
exports/template-orange-blue/page-template.xml [new file with mode: 0644]
exports/template-orange-blue/settings.xml [new file with mode: 0644]
exports/template-orange-blue/styles.xml [new file with mode: 0644]
exportxhtmldialog.cpp [new file with mode: 0644]
exportxhtmldialog.h [new file with mode: 0644]
exportxhtmldialog.ui [new file with mode: 0644]
extrainfodialog.cpp [new file with mode: 0644]
extrainfodialog.h [new file with mode: 0644]
extrainfodialog.ui [new file with mode: 0644]
file.cpp [new file with mode: 0644]
file.h [new file with mode: 0644]
findwindow.cpp [new file with mode: 0644]
findwindow.h [new file with mode: 0644]
flagobj.cpp [new file with mode: 0644]
flagobj.h [new file with mode: 0644]
flagrowobj.cpp [new file with mode: 0644]
flagrowobj.h [new file with mode: 0644]
flags/flag-arrow-2down.png [new file with mode: 0644]
flags/flag-arrow-2up.png [new file with mode: 0644]
flags/flag-arrow-down.png [new file with mode: 0644]
flags/flag-arrow-up.png [new file with mode: 0644]
flags/flag-cross-red.png [new file with mode: 0644]
flags/flag-exclamationmark.png [new file with mode: 0644]
flags/flag-flash.png [new file with mode: 0644]
flags/flag-heart.png [new file with mode: 0644]
flags/flag-hideexport.png [new file with mode: 0644]
flags/flag-hook-green.png [new file with mode: 0644]
flags/flag-info.png [new file with mode: 0644]
flags/flag-kalarm.png [new file with mode: 0644]
flags/flag-lamp.png [new file with mode: 0644]
flags/flag-lifebelt.png [new file with mode: 0644]
flags/flag-note.png [new file with mode: 0644]
flags/flag-phone.png [new file with mode: 0644]
flags/flag-present.png [new file with mode: 0644]
flags/flag-questionmark.png [new file with mode: 0644]
flags/flag-rose.png [new file with mode: 0644]
flags/flag-scrolled-right.png [new file with mode: 0644]
flags/flag-smiley-good.png [new file with mode: 0644]
flags/flag-smiley-omg.png [new file with mode: 0644]
flags/flag-smiley-sad.png [new file with mode: 0644]
flags/flag-stopsign.png [new file with mode: 0644]
flags/flag-thumb-down.png [new file with mode: 0644]
flags/flag-thumb-up.png [new file with mode: 0644]
flags/flag-tmpUnscrolled-right.png [new file with mode: 0644]
flags/flag-url-16x16.png [new file with mode: 0644]
flags/flag-url.png [new file with mode: 0644]
flags/flag-vymlink.png [new file with mode: 0644]
flags/flags.xcf [new file with mode: 0644]
flags/freemind/attach.png [new file with mode: 0644]
flags/freemind/back.png [new file with mode: 0644]
flags/freemind/bell.png [new file with mode: 0644]
flags/freemind/bookmark.png [new file with mode: 0644]
flags/freemind/clanbomber.png [new file with mode: 0644]
flags/freemind/desktopnew.png [new file with mode: 0644]
flags/freemind/flag.png [new file with mode: 0644]
flags/freemind/forward.png [new file with mode: 0644]
flags/freemind/gohome.png [new file with mode: 0644]
flags/freemind/help.png [new file with mode: 0644]
flags/freemind/idea.png [new file with mode: 0644]
flags/freemind/kaddressbook.png [new file with mode: 0644]
flags/freemind/knotify.png [new file with mode: 0644]
flags/freemind/korn.png [new file with mode: 0644]
flags/freemind/licq.png [new file with mode: 0644]
flags/freemind/mail.png [new file with mode: 0644]
flags/freemind/password.png [new file with mode: 0644]
flags/freemind/pencil.png [new file with mode: 0644]
flags/freemind/penguin.png [new file with mode: 0644]
flags/freemind/priority-1.png [new file with mode: 0644]
flags/freemind/priority-2.png [new file with mode: 0644]
flags/freemind/priority-3.png [new file with mode: 0644]
flags/freemind/priority-4.png [new file with mode: 0644]
flags/freemind/priority-5.png [new file with mode: 0644]
flags/freemind/priority-6.png [new file with mode: 0644]
flags/freemind/priority-7.png [new file with mode: 0644]
flags/freemind/stop.png [new file with mode: 0644]
flags/freemind/warning.png [new file with mode: 0644]
flags/freemind/wizard.png [new file with mode: 0644]
flags/freemind/xmag.png [new file with mode: 0644]
floatimageobj.cpp [new file with mode: 0644]
floatimageobj.h [new file with mode: 0644]
floatobj.cpp [new file with mode: 0644]
floatobj.h [new file with mode: 0644]
frameobj.cpp [new file with mode: 0644]
frameobj.h [new file with mode: 0644]
geometry.cpp [new file with mode: 0644]
geometry.h [new file with mode: 0644]
headingobj.cpp [new file with mode: 0644]
headingobj.h [new file with mode: 0644]
highlighter.cpp [new file with mode: 0644]
highlighter.h [new file with mode: 0644]
historywindow.cpp [new file with mode: 0644]
historywindow.h [new file with mode: 0644]
historywindow.ui [new file with mode: 0644]
icons/cursor.xcf [new file with mode: 0644]
icons/cursor16.xcf [new file with mode: 0644]
icons/cursorcolorpicker.png [new file with mode: 0644]
icons/cursorcolorpicker16.png [new file with mode: 0644]
icons/cursorcopy.png [new file with mode: 0644]
icons/cursorhandopen.png [new file with mode: 0644]
icons/cursorhandopen16.png [new file with mode: 0644]
icons/cursorxlink.png [new file with mode: 0644]
icons/down.png [new file with mode: 0644]
icons/editcopy.png [new file with mode: 0644]
icons/editcut.png [new file with mode: 0644]
icons/editpaste.png [new file with mode: 0644]
icons/editsort.png [new file with mode: 0644]
icons/edittrash.png [new file with mode: 0644]
icons/exit.png [new file with mode: 0644]
icons/fileclose.png [new file with mode: 0644]
icons/filenew.png [new file with mode: 0644]
icons/filenewcopy.png [new file with mode: 0644]
icons/fileopen.png [new file with mode: 0644]
icons/fileprint.png [new file with mode: 0644]
icons/filesave.png [new file with mode: 0644]
icons/filesaveas.png [new file with mode: 0644]
icons/find.png [new file with mode: 0644]
icons/flag-url-16x16.png [new file with mode: 0644]
icons/formatcolorbranch.png [new file with mode: 0644]
icons/formatcolorpicker.png [new file with mode: 0644]
icons/formatcolorpicker.xpm [new file with mode: 0644]
icons/formatcolorsubtree.png [new file with mode: 0644]
icons/formatfixedfont.png [new file with mode: 0644]
icons/formatvarfont.png [new file with mode: 0644]
icons/history.png [new file with mode: 0644]
icons/icons.xcf [new file with mode: 0644]
icons/modecolor.png [new file with mode: 0644]
icons/modecopy.png [new file with mode: 0644]
icons/modelink.png [new file with mode: 0644]
icons/newbranch.png [new file with mode: 0644]
icons/redo.png [new file with mode: 0644]
icons/text_block.png [new file with mode: 0644]
icons/text_bold.png [new file with mode: 0644]
icons/text_center.png [new file with mode: 0644]
icons/text_italic.png [new file with mode: 0644]
icons/text_left.png [new file with mode: 0644]
icons/text_right.png [new file with mode: 0644]
icons/text_sub.png [new file with mode: 0644]
icons/text_super.png [new file with mode: 0644]
icons/text_under.png [new file with mode: 0644]
icons/undo.png [new file with mode: 0644]
icons/up.png [new file with mode: 0644]
icons/viewmag+.png [new file with mode: 0644]
icons/viewmag-.png [new file with mode: 0644]
icons/viewmag-reset.png [new file with mode: 0644]
icons/viewshowsel.png [new file with mode: 0644]
icons/vym-128x128.png [new file with mode: 0644]
icons/vym-16x16.png [new file with mode: 0644]
icons/vym-editor.png [new file with mode: 0644]
icons/vym.icns [new file with mode: 0644]
icons/vym.ico [new file with mode: 0644]
icons/vym.png [new file with mode: 0644]
icons/vym.xcf [new file with mode: 0644]
icons/vym.xpm [new file with mode: 0644]
imageobj.cpp [new file with mode: 0644]
imageobj.h [new file with mode: 0644]
imports.cpp [new file with mode: 0644]
imports.h [new file with mode: 0644]
lang/vym_de.qm [new file with mode: 0644]
lang/vym_de.ts [new file with mode: 0644]
lang/vym_en.qm [new file with mode: 0644]
lang/vym_en.ts [new file with mode: 0644]
lang/vym_es.qm [new file with mode: 0644]
lang/vym_es.ts [new file with mode: 0644]
lang/vym_fr.qm [new file with mode: 0644]
lang/vym_fr.ts [new file with mode: 0644]
lang/vym_it.qm [new file with mode: 0644]
lang/vym_it.ts [new file with mode: 0644]
lang/vym_pt_BR.qm [new file with mode: 0644]
lang/vym_pt_BR.ts [new file with mode: 0644]
lang/vym_ru.qm [new file with mode: 0644]
lang/vym_ru.ts [new file with mode: 0644]
lang/vym_zh_CN.qm [new file with mode: 0644]
lang/vym_zh_CN.ts [new file with mode: 0644]
linkablemapobj.cpp [new file with mode: 0644]
linkablemapobj.h [new file with mode: 0644]
macros/macro-1.vys [new file with mode: 0644]
macros/macro-10.vys [new file with mode: 0644]
macros/macro-11.vys [new file with mode: 0644]
macros/macro-12.vys [new file with mode: 0644]
macros/macro-2.vys [new file with mode: 0644]
macros/macro-3.vys [new file with mode: 0644]
macros/macro-4.vys [new file with mode: 0644]
macros/macro-5.vys [new file with mode: 0644]
macros/macro-6.vys [new file with mode: 0644]
macros/macro-7.vys [new file with mode: 0644]
macros/macro-8.vys [new file with mode: 0644]
macros/macro-9.vys [new file with mode: 0644]
main.cpp [new file with mode: 0644]
mainwindow.cpp [new file with mode: 0644]
mainwindow.h [new file with mode: 0644]
mapcenterobj.cpp [new file with mode: 0644]
mapcenterobj.h [new file with mode: 0644]
mapeditor.cpp [new file with mode: 0644]
mapeditor.h [new file with mode: 0644]
mapobj.cpp [new file with mode: 0644]
mapobj.h [new file with mode: 0644]
misc.cpp [new file with mode: 0644]
misc.h [new file with mode: 0644]
mkdtemp.cpp [new file with mode: 0644]
mkdtemp.h [new file with mode: 0644]
noteobj.cpp [new file with mode: 0644]
noteobj.h [new file with mode: 0644]
object_script.vym.Debug [new file with mode: 0644]
object_script.vym.Release [new file with mode: 0644]
options.cpp [new file with mode: 0644]
options.h [new file with mode: 0644]
ornamentedobj.cpp [new file with mode: 0644]
ornamentedobj.h [new file with mode: 0644]
parser.cpp [new file with mode: 0644]
parser.h [new file with mode: 0644]
process.cpp [new file with mode: 0644]
process.h [new file with mode: 0644]
qtc-gdbmacros/LGPL_EXCEPTION.TXT [new file with mode: 0644]
qtc-gdbmacros/LICENSE.LGPL [new file with mode: 0644]
qtc-gdbmacros/Makefile [new file with mode: 0644]
qtc-gdbmacros/Makefile.Debug [new file with mode: 0644]
qtc-gdbmacros/Makefile.Release [new file with mode: 0644]
qtc-gdbmacros/debug/gdbmacros.dll [new file with mode: 0644]
qtc-gdbmacros/debug/gdbmacros.o [new file with mode: 0644]
qtc-gdbmacros/debug/libgdbmacros.a [new file with mode: 0644]
qtc-gdbmacros/gdbmacros.cpp [new file with mode: 0644]
qtc-gdbmacros/gdbmacros.pro [new file with mode: 0644]
scripts/exportvym [new file with mode: 0644]
scripts/niceXML [new file with mode: 0644]
scripts/release-mac [new file with mode: 0644]
scripts/update-bookmarks [new file with mode: 0644]
selection.cpp [new file with mode: 0644]
selection.h [new file with mode: 0644]
settings.cpp [new file with mode: 0644]
settings.h [new file with mode: 0644]
showtextdialog.cpp [new file with mode: 0644]
showtextdialog.h [new file with mode: 0644]
showtextdialog.ui [new file with mode: 0644]
simplescripteditor.cpp [new file with mode: 0644]
simplescripteditor.h [new file with mode: 0644]
simplescripteditor.ui [new file with mode: 0644]
styles/cm.xsl [new file with mode: 0644]
styles/kdebookmarks2vym.xsl [new file with mode: 0644]
styles/mmap2vym.xsl [new file with mode: 0644]
styles/tm.xsl [new file with mode: 0644]
styles/vym.css [new file with mode: 0644]
styles/vym2html.xsl [new file with mode: 0644]
styles/vym2kdebookmarks.xsl [new file with mode: 0644]
styles/vym2taskjuggler.xsl [new file with mode: 0644]
styles/vym2txt.xsl [new file with mode: 0644]
styles/vym2xhtml.xsl [new file with mode: 0644]
tex/examples/branches.vym [new file with mode: 0644]
tex/examples/macros.vym [new file with mode: 0644]
tex/images/branches-flags.png [new file with mode: 0644]
tex/images/branches-flags_es.png [new file with mode: 0644]
tex/images/branches-flags_fr.png [new file with mode: 0644]
tex/images/branches.png [new file with mode: 0644]
tex/images/branches_es.png [new file with mode: 0644]
tex/images/branches_fr.png [new file with mode: 0644]
tex/images/color-buttons.png [new file with mode: 0644]
tex/images/default-flags.png [new file with mode: 0644]
tex/images/example1.png [new file with mode: 0644]
tex/images/example1_es.png [new file with mode: 0644]
tex/images/example1_fr.png [new file with mode: 0644]
tex/images/export-oo.png [new file with mode: 0644]
tex/images/export-oo_es.png [new file with mode: 0644]
tex/images/find-window.png [new file with mode: 0644]
tex/images/find-window_es.png [new file with mode: 0644]
tex/images/flag-hideexport.png [new file with mode: 0644]
tex/images/flag-url.png [new file with mode: 0644]
tex/images/flag-vymlink.png [new file with mode: 0644]
tex/images/formatfixedfont.png [new file with mode: 0644]
tex/images/hiddenlink.png [new file with mode: 0644]
tex/images/hiddenlink_es.png [new file with mode: 0644]
tex/images/hiddenlink_fr.png [new file with mode: 0644]
tex/images/historywindow.png [new file with mode: 0644]
tex/images/includeImages.png [new file with mode: 0644]
tex/images/includeImages_es.png [new file with mode: 0644]
tex/images/includeImages_fr.png [new file with mode: 0644]
tex/images/macros.png [new file with mode: 0644]
tex/images/macros_fr.png [new file with mode: 0644]
tex/images/modmodes.png [new file with mode: 0644]
tex/images/move-buttons.png [new file with mode: 0644]
tex/images/noteeditor.png [new file with mode: 0644]
tex/images/noteeditor_es.png [new file with mode: 0644]
tex/images/noteeditor_fr.png [new file with mode: 0644]
tex/images/propwindow.png [new file with mode: 0644]
tex/images/vym-logo-new.png [new file with mode: 0644]
tex/images/windows.png [new file with mode: 0644]
tex/images/windows_es.png [new file with mode: 0644]
tex/images/windows_fr.png [new file with mode: 0644]
tex/images/xlink.png [new file with mode: 0644]
tex/images/xlink_es.png [new file with mode: 0644]
tex/images/xlink_fr.png [new file with mode: 0644]
tex/images/zoom-buttons.png [new file with mode: 0644]
tex/vc [new file with mode: 0644]
tex/vym.changelog [new file with mode: 0644]
tex/vym.tex [new file with mode: 0644]
tex/vym_es.tex [new file with mode: 0644]
tex/vym_fr.tex [new file with mode: 0644]
texteditor.cpp [new file with mode: 0644]
texteditor.h [new file with mode: 0644]
version.cpp [new file with mode: 0644]
version.h [new file with mode: 0644]
vym [new file with mode: 0755]
vym.pro [new file with mode: 0644]
vym.pro.user [new file with mode: 0644]
vym.rc [new file with mode: 0644]
vymmodel.cpp [new file with mode: 0644]
vymmodel.h [new file with mode: 0644]
warningdialog.cpp [new file with mode: 0644]
warningdialog.h [new file with mode: 0644]
warningdialog.ui [new file with mode: 0644]
xlinkobj.cpp [new file with mode: 0644]
xlinkobj.h [new file with mode: 0644]
xml-base.cpp [new file with mode: 0644]
xml-base.h [new file with mode: 0644]
xml-freemind.cpp [new file with mode: 0644]
xml-freemind.h [new file with mode: 0644]
xml-vym.cpp [new file with mode: 0644]
xml-vym.h [new file with mode: 0644]
xmlobj.cpp [new file with mode: 0644]
xmlobj.h [new file with mode: 0644]
xsltproc.cpp [new file with mode: 0644]
xsltproc.h [new file with mode: 0644]

diff --git a/INSTALL.txt b/INSTALL.txt
new file mode 100644 (file)
index 0000000..b8a4100
--- /dev/null
@@ -0,0 +1,59 @@
+Installation of vym - view your mind
+====================================
+
+Contents
+--------
+
+A) openSUSE 10.2
+B) openSUSE 10.3 and 11.0
+C) Mac OS X 10.3+
+
+More systems like Debian are likely to be added later. Please
+send feedback about installation on your Operating System to
+vym@InSilmaril.de
+
+For general questions please contact the vym mailinglist:
+
+       vym-forum@lists.sourceforge.net
+
+
+A) openSUSE 10.2
+================
+
+vym needs a newer version of Trolltechs Qt libraries than the one on the
+10.2 installation media. This new version can be installed easily in
+YaST:
+
+       - Select "Installation Source"
+       - Add a HTTP source:
+                       Server: repos.opensuse.org
+                    Directory: /KDE:/Qt/openSUSE_10.2/
+               Authentication: Anonymous
+
+       - Select "Software Management"
+       - Search for "libqt4"
+       - Install all found packages. (They have a version >= 4.3.0-55.1)
+
+B) openSUSE 10.2 and later
+==========================
+
+Get the rpms e.g. from here:
+
+http://download.opensuse.org/repositories/home://insilmaril/
+
+and install the (as root):
+
+yast -i vym-[VERSION].rpm
+
+C) Mac OS X 10.3+
+=================
+
+After opening the disk image vym-1.9.0.dmg you can copy vym.app to
+/Applications. This will need administrator rights.
+
+
+This release of vym includes the Qt libraries. For more information on
+Qt see http://www.trolltech.com.
+               
+
+
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644 (file)
index 0000000..5a9073b
--- /dev/null
@@ -0,0 +1,307 @@
+    VYM - View Your Mind
+    Copyright (C) 2004-2007  Uwe Drechsel  
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License version 2 as published by
+    the Free Software Foundation.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License below for more details.
+
+       In addition, as a special exception, Uwe Drechsel
+       gives permission to link the code of this program with the QT 
+       libraries from trolltech.com (or with modified versions of QT that
+       use the same license as QT), and distribute linked combinations
+       including the two. You must obey the GNU General Public License in
+       all respects for all of the code used other than QT. If you modify
+       this file, you may extend this exception to your version of the
+       file, but you are not obligated to do so. If you do not wish to do
+       so, delete this exception statement from your version.
+
+
+       Uwe Drechsel can be contacted at <vym@insilmaril.de>
+
+-----------------------------------------------------------------------------
+
+            GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                   GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+\f
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                           NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..e52870a
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,1498 @@
+#############################################################################
+# Makefile for building: vym
+# Generated by qmake (2.01a) (Qt 4.5.3) on: Sun Jan 10 20:03:54 2010
+# Project:  vym.pro
+# Template: app
+# Command: /usr/bin/qmake -unix -o Makefile vym.pro
+#############################################################################
+
+####### Compiler, tools and options
+
+CC            = gcc
+CXX           = g++
+DEFINES       = -DVYM_DOCDIR=\"/usr/local/share/doc/packages/vym\" -DQT_QT3SUPPORT_LIB -DQT3_SUPPORT -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED
+CFLAGS        = -pipe -g -O0 -Wall -W -D_REENTRANT $(DEFINES)
+CXXFLAGS      = -pipe -g -g -O0 -Wall -W -D_REENTRANT $(DEFINES)
+INCPATH       = -I/targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/linux-g++-gles2 -I. -I/targets/FREMANTLE_ARMEL/usr/include/qt4/QtCore -I/targets/FREMANTLE_ARMEL/usr/include/qt4/QtNetwork -I/targets/FREMANTLE_ARMEL/usr/include/qt4/QtGui -I/targets/FREMANTLE_ARMEL/usr/include/qt4/QtXml -I/targets/FREMANTLE_ARMEL/usr/include/qt4/Qt3Support -I/targets/FREMANTLE_ARMEL/usr/include/qt4 -I. -I.
+LINK          = g++
+LFLAGS        = 
+LIBS          = $(SUBLIBS)  -L/usr/lib -Wl,-rpath-link=/usr/lib -lQt3Support -lQtXml -lQtGui -lQtNetwork -lQtCore -lpthread
+AR            = ar cqs
+RANLIB        = 
+QMAKE         = /usr/bin/qmake
+TAR           = tar -cf
+COMPRESS      = gzip -9f
+COPY          = cp -f
+SED           = sed
+COPY_FILE     = $(COPY)
+COPY_DIR      = $(COPY) -r
+INSTALL_FILE  = install -m 644 -p
+INSTALL_DIR   = $(COPY_DIR)
+INSTALL_PROGRAM = install -m 755 -p
+DEL_FILE      = rm -f
+SYMLINK       = ln -sf
+DEL_DIR       = rmdir
+MOVE          = mv -f
+CHK_DIR_EXISTS= test -d
+MKDIR         = mkdir -p
+
+####### Output directory
+
+OBJECTS_DIR   = ./
+
+####### Files
+
+SOURCES       = aboutdialog.cpp \
+               animpoint.cpp \
+               attribute.cpp \
+               attributedelegate.cpp \
+               attributedialog.cpp \
+               attributewidget.cpp \
+               branchobj.cpp \
+               branchpropwindow.cpp \
+               editxlinkdialog.cpp \
+               exportoofiledialog.cpp \
+               exports.cpp \
+               exportxhtmldialog.cpp \
+               extrainfodialog.cpp \
+               file.cpp \
+               findwindow.cpp \
+               flagobj.cpp \
+               flagrowobj.cpp \
+               floatimageobj.cpp \
+               floatobj.cpp \
+               frameobj.cpp \
+               geometry.cpp \
+               headingobj.cpp \
+               highlighter.cpp \
+               historywindow.cpp \
+               imageobj.cpp \
+               imports.cpp \
+               linkablemapobj.cpp \
+               main.cpp \
+               mainwindow.cpp \
+               mapcenterobj.cpp \
+               mapeditor.cpp \
+               mapobj.cpp \
+               misc.cpp \
+               noteobj.cpp \
+               options.cpp \
+               ornamentedobj.cpp \
+               parser.cpp \
+               process.cpp \
+               selection.cpp \
+               showtextdialog.cpp \
+               simplescripteditor.cpp \
+               texteditor.cpp \
+               version.cpp \
+               vymmodel.cpp \
+               xlinkobj.cpp \
+               xml-base.cpp \
+               xml-vym.cpp \
+               xml-freemind.cpp \
+               xmlobj.cpp \
+               xsltproc.cpp \
+               settings.cpp \
+               warningdialog.cpp moc_aboutdialog.cpp \
+               moc_attributedelegate.cpp \
+               moc_attributedialog.cpp \
+               moc_attributewidget.cpp \
+               moc_branchpropwindow.cpp \
+               moc_editxlinkdialog.cpp \
+               moc_exportoofiledialog.cpp \
+               moc_exportxhtmldialog.cpp \
+               moc_extrainfodialog.cpp \
+               moc_findwindow.cpp \
+               moc_highlighter.cpp \
+               moc_historywindow.cpp \
+               moc_linkablemapobj.cpp \
+               moc_mainwindow.cpp \
+               moc_mapeditor.cpp \
+               moc_process.cpp \
+               moc_showtextdialog.cpp \
+               moc_simplescripteditor.cpp \
+               moc_texteditor.cpp \
+               moc_vymmodel.cpp \
+               moc_warningdialog.cpp
+OBJECTS       = aboutdialog.o \
+               animpoint.o \
+               attribute.o \
+               attributedelegate.o \
+               attributedialog.o \
+               attributewidget.o \
+               branchobj.o \
+               branchpropwindow.o \
+               editxlinkdialog.o \
+               exportoofiledialog.o \
+               exports.o \
+               exportxhtmldialog.o \
+               extrainfodialog.o \
+               file.o \
+               findwindow.o \
+               flagobj.o \
+               flagrowobj.o \
+               floatimageobj.o \
+               floatobj.o \
+               frameobj.o \
+               geometry.o \
+               headingobj.o \
+               highlighter.o \
+               historywindow.o \
+               imageobj.o \
+               imports.o \
+               linkablemapobj.o \
+               main.o \
+               mainwindow.o \
+               mapcenterobj.o \
+               mapeditor.o \
+               mapobj.o \
+               misc.o \
+               noteobj.o \
+               options.o \
+               ornamentedobj.o \
+               parser.o \
+               process.o \
+               selection.o \
+               showtextdialog.o \
+               simplescripteditor.o \
+               texteditor.o \
+               version.o \
+               vymmodel.o \
+               xlinkobj.o \
+               xml-base.o \
+               xml-vym.o \
+               xml-freemind.o \
+               xmlobj.o \
+               xsltproc.o \
+               settings.o \
+               warningdialog.o \
+               moc_aboutdialog.o \
+               moc_attributedelegate.o \
+               moc_attributedialog.o \
+               moc_attributewidget.o \
+               moc_branchpropwindow.o \
+               moc_editxlinkdialog.o \
+               moc_exportoofiledialog.o \
+               moc_exportxhtmldialog.o \
+               moc_extrainfodialog.o \
+               moc_findwindow.o \
+               moc_highlighter.o \
+               moc_historywindow.o \
+               moc_linkablemapobj.o \
+               moc_mainwindow.o \
+               moc_mapeditor.o \
+               moc_process.o \
+               moc_showtextdialog.o \
+               moc_simplescripteditor.o \
+               moc_texteditor.o \
+               moc_vymmodel.o \
+               moc_warningdialog.o
+DIST          = /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/common/g++.conf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/common/unix.conf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/common/linux.conf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/qconfig.pri \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/qt_functions.prf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/qt_config.prf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/exclusive_builds.prf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/default_pre.prf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/debug.prf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/default_post.prf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/warn_on.prf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/qt.prf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/unix/thread.prf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/moc.prf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/resources.prf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/uic.prf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/yacc.prf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/lex.prf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/include_source_dir.prf \
+               vym.pro
+QMAKE_TARGET  = vym
+DESTDIR       = 
+TARGET        = vym
+
+first: all
+####### Implicit rules
+
+.SUFFIXES: .o .c .cpp .cc .cxx .C
+
+.cpp.o:
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
+
+.cc.o:
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
+
+.cxx.o:
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
+
+.C.o:
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
+
+.c.o:
+       $(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<"
+
+####### Build rules
+
+all: Makefile $(TARGET)
+
+$(TARGET): ui_attributewidget.h ui_branchpropwindow.h ui_exportxhtmldialog.h ui_extrainfodialog.h ui_editxlinkdialog.h ui_historywindow.h ui_simplescripteditor.h ui_showtextdialog.h ui_warningdialog.h $(OBJECTS)  
+       $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
+
+Makefile: vym.pro  /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/linux-g++-gles2/qmake.conf /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/common/g++.conf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/common/unix.conf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/common/linux.conf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/qconfig.pri \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/qt_functions.prf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/qt_config.prf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/exclusive_builds.prf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/default_pre.prf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/debug.prf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/default_post.prf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/warn_on.prf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/qt.prf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/unix/thread.prf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/moc.prf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/resources.prf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/uic.prf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/yacc.prf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/lex.prf \
+               /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/include_source_dir.prf \
+               /usr/lib/libQt3Support.prl \
+               /usr/lib/libQtXml.prl \
+               /usr/lib/libQtGui.prl \
+               /usr/lib/libQtNetwork.prl \
+               /usr/lib/libQtCore.prl
+       $(QMAKE) -unix -o Makefile vym.pro
+/targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/common/g++.conf:
+/targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/common/unix.conf:
+/targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/common/linux.conf:
+/targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/qconfig.pri:
+/targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/qt_functions.prf:
+/targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/qt_config.prf:
+/targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/exclusive_builds.prf:
+/targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/default_pre.prf:
+/targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/debug.prf:
+/targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/default_post.prf:
+/targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/warn_on.prf:
+/targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/qt.prf:
+/targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/unix/thread.prf:
+/targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/moc.prf:
+/targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/resources.prf:
+/targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/uic.prf:
+/targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/yacc.prf:
+/targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/lex.prf:
+/targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/include_source_dir.prf:
+/usr/lib/libQt3Support.prl:
+/usr/lib/libQtXml.prl:
+/usr/lib/libQtGui.prl:
+/usr/lib/libQtNetwork.prl:
+/usr/lib/libQtCore.prl:
+qmake:  FORCE
+       @$(QMAKE) -unix -o Makefile vym.pro
+
+dist: 
+       @$(CHK_DIR_EXISTS) .tmp/vym1.0.0 || $(MKDIR) .tmp/vym1.0.0 
+       $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/vym1.0.0/ && $(COPY_FILE) --parents aboutdialog.h animpoint.h attribute.h attributedelegate.h attributedialog.h attributewidget.h branchobj.h branchpropwindow.h editxlinkdialog.h exportoofiledialog.h exportxhtmldialog.h exports.h extrainfodialog.h file.h findwindow.h flagobj.h flagrowobj.h floatimageobj.h floatobj.h frameobj.h geometry.h headingobj.h highlighter.h historywindow.h imageobj.h imports.h linkablemapobj.h mainwindow.h mapcenterobj.h mapeditor.h mapobj.h misc.h noteobj.h options.h ornamentedobj.h parser.h process.h selection.h showtextdialog.h simplescripteditor.h texteditor.h version.h vymmodel.h xlinkobj.h xml-base.h xml-vym.h xml-freemind.h xmlobj.h xsltproc.h settings.h warningdialog.h .tmp/vym1.0.0/ && $(COPY_FILE) --parents aboutdialog.cpp animpoint.cpp attribute.cpp attributedelegate.cpp attributedialog.cpp attributewidget.cpp branchobj.cpp branchpropwindow.cpp editxlinkdialog.cpp exportoofiledialog.cpp exports.cpp exportxhtmldialog.cpp extrainfodialog.cpp file.cpp findwindow.cpp flagobj.cpp flagrowobj.cpp floatimageobj.cpp floatobj.cpp frameobj.cpp geometry.cpp headingobj.cpp highlighter.cpp historywindow.cpp imageobj.cpp imports.cpp linkablemapobj.cpp main.cpp mainwindow.cpp mapcenterobj.cpp mapeditor.cpp mapobj.cpp misc.cpp noteobj.cpp options.cpp ornamentedobj.cpp parser.cpp process.cpp selection.cpp showtextdialog.cpp simplescripteditor.cpp texteditor.cpp version.cpp vymmodel.cpp xlinkobj.cpp xml-base.cpp xml-vym.cpp xml-freemind.cpp xmlobj.cpp xsltproc.cpp settings.cpp warningdialog.cpp .tmp/vym1.0.0/ && $(COPY_FILE) --parents attributewidget.ui branchpropwindow.ui exportxhtmldialog.ui extrainfodialog.ui editxlinkdialog.ui historywindow.ui simplescripteditor.ui showtextdialog.ui warningdialog.ui .tmp/vym1.0.0/ && $(COPY_FILE) --parents lang/vym_de.ts lang/vym_en.ts lang/vym_es.ts lang/vym_fr.ts lang/vym_it.ts lang/vym_pt_BR.ts lang/vym_ru.ts lang/vym_zh_CN.ts .tmp/vym1.0.0/ && (cd `dirname .tmp/vym1.0.0` && $(TAR) vym1.0.0.tar vym1.0.0 && $(COMPRESS) vym1.0.0.tar) && $(MOVE) `dirname .tmp/vym1.0.0`/vym1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/vym1.0.0
+
+
+clean:compiler_clean 
+       -$(DEL_FILE) $(OBJECTS)
+       -$(DEL_FILE) *~ core *.core
+
+
+####### Sub-libraries
+
+distclean: clean
+       -$(DEL_FILE) $(TARGET) 
+       -$(DEL_FILE) Makefile
+
+
+mocclean: compiler_moc_header_clean compiler_moc_source_clean
+
+mocables: compiler_moc_header_make_all compiler_moc_source_make_all
+
+compiler_moc_header_make_all: moc_aboutdialog.cpp moc_attributedelegate.cpp moc_attributedialog.cpp moc_attributewidget.cpp moc_branchpropwindow.cpp moc_editxlinkdialog.cpp moc_exportoofiledialog.cpp moc_exportxhtmldialog.cpp moc_extrainfodialog.cpp moc_findwindow.cpp moc_highlighter.cpp moc_historywindow.cpp moc_linkablemapobj.cpp moc_mainwindow.cpp moc_mapeditor.cpp moc_process.cpp moc_showtextdialog.cpp moc_simplescripteditor.cpp moc_texteditor.cpp moc_vymmodel.cpp moc_warningdialog.cpp
+compiler_moc_header_clean:
+       -$(DEL_FILE) moc_aboutdialog.cpp moc_attributedelegate.cpp moc_attributedialog.cpp moc_attributewidget.cpp moc_branchpropwindow.cpp moc_editxlinkdialog.cpp moc_exportoofiledialog.cpp moc_exportxhtmldialog.cpp moc_extrainfodialog.cpp moc_findwindow.cpp moc_highlighter.cpp moc_historywindow.cpp moc_linkablemapobj.cpp moc_mainwindow.cpp moc_mapeditor.cpp moc_process.cpp moc_showtextdialog.cpp moc_simplescripteditor.cpp moc_texteditor.cpp moc_vymmodel.cpp moc_warningdialog.cpp
+moc_aboutdialog.cpp: aboutdialog.h
+       /usr/bin/moc $(DEFINES) $(INCPATH) aboutdialog.h -o moc_aboutdialog.cpp
+
+moc_attributedelegate.cpp: attribute.h \
+               xmlobj.h \
+               attributedelegate.h
+       /usr/bin/moc $(DEFINES) $(INCPATH) attributedelegate.h -o moc_attributedelegate.cpp
+
+moc_attributedialog.cpp: attribute.h \
+               xmlobj.h \
+               branchobj.h \
+               floatimageobj.h \
+               floatobj.h \
+               ornamentedobj.h \
+               frameobj.h \
+               mapobj.h \
+               linkablemapobj.h \
+               animpoint.h \
+               noteobj.h \
+               headingobj.h \
+               flagrowobj.h \
+               flagobj.h \
+               imageobj.h \
+               xlinkobj.h \
+               attributedialog.h
+       /usr/bin/moc $(DEFINES) $(INCPATH) attributedialog.h -o moc_attributedialog.cpp
+
+moc_attributewidget.cpp: ui_attributewidget.h \
+               attribute.h \
+               xmlobj.h \
+               attributewidget.h
+       /usr/bin/moc $(DEFINES) $(INCPATH) attributewidget.h -o moc_attributewidget.cpp
+
+moc_branchpropwindow.cpp: ui_branchpropwindow.h \
+               attributedelegate.h \
+               attribute.h \
+               xmlobj.h \
+               branchobj.h \
+               floatimageobj.h \
+               floatobj.h \
+               ornamentedobj.h \
+               frameobj.h \
+               mapobj.h \
+               linkablemapobj.h \
+               animpoint.h \
+               noteobj.h \
+               headingobj.h \
+               flagrowobj.h \
+               flagobj.h \
+               imageobj.h \
+               xlinkobj.h \
+               mapeditor.h \
+               file.h \
+               misc.h \
+               parser.h \
+               selection.h \
+               settings.h \
+               vymmodel.h \
+               mapcenterobj.h \
+               branchpropwindow.h
+       /usr/bin/moc $(DEFINES) $(INCPATH) branchpropwindow.h -o moc_branchpropwindow.cpp
+
+moc_editxlinkdialog.cpp: ui_editxlinkdialog.h \
+               editxlinkdialog.h
+       /usr/bin/moc $(DEFINES) $(INCPATH) editxlinkdialog.h -o moc_editxlinkdialog.cpp
+
+moc_exportoofiledialog.cpp: settings.h \
+               xmlobj.h \
+               exportoofiledialog.h
+       /usr/bin/moc $(DEFINES) $(INCPATH) exportoofiledialog.h -o moc_exportoofiledialog.cpp
+
+moc_exportxhtmldialog.cpp: ui_exportxhtmldialog.h \
+               exportxhtmldialog.h
+       /usr/bin/moc $(DEFINES) $(INCPATH) exportxhtmldialog.h -o moc_exportxhtmldialog.cpp
+
+moc_extrainfodialog.cpp: ui_extrainfodialog.h \
+               extrainfodialog.h
+       /usr/bin/moc $(DEFINES) $(INCPATH) extrainfodialog.h -o moc_extrainfodialog.cpp
+
+moc_findwindow.cpp: findwindow.h
+       /usr/bin/moc $(DEFINES) $(INCPATH) findwindow.h -o moc_findwindow.cpp
+
+moc_highlighter.cpp: highlighter.h
+       /usr/bin/moc $(DEFINES) $(INCPATH) highlighter.h -o moc_highlighter.cpp
+
+moc_historywindow.cpp: settings.h \
+               xmlobj.h \
+               ui_historywindow.h \
+               historywindow.h
+       /usr/bin/moc $(DEFINES) $(INCPATH) historywindow.h -o moc_historywindow.cpp
+
+moc_linkablemapobj.cpp: animpoint.h \
+               noteobj.h \
+               xmlobj.h \
+               headingobj.h \
+               mapobj.h \
+               flagrowobj.h \
+               flagobj.h \
+               imageobj.h \
+               linkablemapobj.h
+       /usr/bin/moc $(DEFINES) $(INCPATH) linkablemapobj.h -o moc_linkablemapobj.cpp
+
+moc_mainwindow.cpp: branchpropwindow.h \
+               ui_branchpropwindow.h \
+               attributedelegate.h \
+               attribute.h \
+               xmlobj.h \
+               branchobj.h \
+               floatimageobj.h \
+               floatobj.h \
+               ornamentedobj.h \
+               frameobj.h \
+               mapobj.h \
+               linkablemapobj.h \
+               animpoint.h \
+               noteobj.h \
+               headingobj.h \
+               flagrowobj.h \
+               flagobj.h \
+               imageobj.h \
+               xlinkobj.h \
+               mapeditor.h \
+               file.h \
+               misc.h \
+               parser.h \
+               selection.h \
+               settings.h \
+               vymmodel.h \
+               mapcenterobj.h \
+               findwindow.h \
+               historywindow.h \
+               ui_historywindow.h \
+               simplescripteditor.h \
+               ui_simplescripteditor.h \
+               highlighter.h \
+               texteditor.h \
+               mainwindow.h
+       /usr/bin/moc $(DEFINES) $(INCPATH) mainwindow.h -o moc_mainwindow.cpp
+
+moc_mapeditor.cpp: attribute.h \
+               xmlobj.h \
+               file.h \
+               misc.h \
+               parser.h \
+               ornamentedobj.h \
+               frameobj.h \
+               mapobj.h \
+               linkablemapobj.h \
+               animpoint.h \
+               noteobj.h \
+               headingobj.h \
+               flagrowobj.h \
+               flagobj.h \
+               imageobj.h \
+               selection.h \
+               settings.h \
+               vymmodel.h \
+               mapcenterobj.h \
+               branchobj.h \
+               floatimageobj.h \
+               floatobj.h \
+               xlinkobj.h \
+               mapeditor.h \
+               mapeditor.h
+       /usr/bin/moc $(DEFINES) $(INCPATH) mapeditor.h -o moc_mapeditor.cpp
+
+moc_process.cpp: process.h
+       /usr/bin/moc $(DEFINES) $(INCPATH) process.h -o moc_process.cpp
+
+moc_showtextdialog.cpp: ui_showtextdialog.h \
+               showtextdialog.h
+       /usr/bin/moc $(DEFINES) $(INCPATH) showtextdialog.h -o moc_showtextdialog.cpp
+
+moc_simplescripteditor.cpp: ui_simplescripteditor.h \
+               highlighter.h \
+               simplescripteditor.h
+       /usr/bin/moc $(DEFINES) $(INCPATH) simplescripteditor.h -o moc_simplescripteditor.cpp
+
+moc_texteditor.cpp: texteditor.h
+       /usr/bin/moc $(DEFINES) $(INCPATH) texteditor.h -o moc_texteditor.cpp
+
+moc_vymmodel.cpp: mapcenterobj.h \
+               branchobj.h \
+               floatimageobj.h \
+               floatobj.h \
+               ornamentedobj.h \
+               attribute.h \
+               xmlobj.h \
+               frameobj.h \
+               mapobj.h \
+               linkablemapobj.h \
+               animpoint.h \
+               noteobj.h \
+               headingobj.h \
+               flagrowobj.h \
+               flagobj.h \
+               imageobj.h \
+               xlinkobj.h \
+               mapeditor.h \
+               file.h \
+               misc.h \
+               parser.h \
+               selection.h \
+               settings.h \
+               vymmodel.h \
+               vymmodel.h
+       /usr/bin/moc $(DEFINES) $(INCPATH) vymmodel.h -o moc_vymmodel.cpp
+
+moc_warningdialog.cpp: ui_warningdialog.h \
+               warningdialog.h
+       /usr/bin/moc $(DEFINES) $(INCPATH) warningdialog.h -o moc_warningdialog.cpp
+
+compiler_rcc_make_all:
+compiler_rcc_clean:
+compiler_image_collection_make_all: qmake_image_collection.cpp
+compiler_image_collection_clean:
+       -$(DEL_FILE) qmake_image_collection.cpp
+compiler_moc_source_make_all:
+compiler_moc_source_clean:
+compiler_uic_make_all: ui_attributewidget.h ui_branchpropwindow.h ui_exportxhtmldialog.h ui_extrainfodialog.h ui_editxlinkdialog.h ui_historywindow.h ui_simplescripteditor.h ui_showtextdialog.h ui_warningdialog.h
+compiler_uic_clean:
+       -$(DEL_FILE) ui_attributewidget.h ui_branchpropwindow.h ui_exportxhtmldialog.h ui_extrainfodialog.h ui_editxlinkdialog.h ui_historywindow.h ui_simplescripteditor.h ui_showtextdialog.h ui_warningdialog.h
+ui_attributewidget.h: attributewidget.ui
+       /usr/bin/uic attributewidget.ui -o ui_attributewidget.h
+
+ui_branchpropwindow.h: branchpropwindow.ui
+       /usr/bin/uic branchpropwindow.ui -o ui_branchpropwindow.h
+
+ui_exportxhtmldialog.h: exportxhtmldialog.ui \
+               xsltproc.h \
+               process.h \
+               showtextdialog.h \
+               ui_showtextdialog.h
+       /usr/bin/uic exportxhtmldialog.ui -o ui_exportxhtmldialog.h
+
+ui_extrainfodialog.h: extrainfodialog.ui
+       /usr/bin/uic extrainfodialog.ui -o ui_extrainfodialog.h
+
+ui_editxlinkdialog.h: editxlinkdialog.ui \
+               xlinkobj.h \
+               mapcenterobj.h \
+               linkablemapobj.h \
+               linkablemapobj.h \
+               animpoint.h \
+               noteobj.h \
+               xmlobj.h \
+               headingobj.h \
+               mapobj.h \
+               flagrowobj.h \
+               flagobj.h \
+               imageobj.h \
+               branchobj.h \
+               floatimageobj.h \
+               floatobj.h \
+               ornamentedobj.h \
+               attribute.h \
+               xmlobj.h \
+               frameobj.h \
+               mapobj.h \
+               linkablemapobj.h \
+               animpoint.h \
+               noteobj.h \
+               headingobj.h \
+               flagrowobj.h \
+               flagobj.h \
+               imageobj.h \
+               xlinkobj.h \
+               animpoint.h \
+               noteobj.h \
+               xmlobj.h \
+               headingobj.h \
+               mapobj.h \
+               flagrowobj.h \
+               flagobj.h \
+               imageobj.h
+       /usr/bin/uic editxlinkdialog.ui -o ui_editxlinkdialog.h
+
+ui_historywindow.h: historywindow.ui
+       /usr/bin/uic historywindow.ui -o ui_historywindow.h
+
+ui_simplescripteditor.h: simplescripteditor.ui
+       /usr/bin/uic simplescripteditor.ui -o ui_simplescripteditor.h
+
+ui_showtextdialog.h: showtextdialog.ui
+       /usr/bin/uic showtextdialog.ui -o ui_showtextdialog.h
+
+ui_warningdialog.h: warningdialog.ui
+       /usr/bin/uic warningdialog.ui -o ui_warningdialog.h
+
+compiler_yacc_decl_make_all:
+compiler_yacc_decl_clean:
+compiler_yacc_impl_make_all:
+compiler_yacc_impl_clean:
+compiler_lex_make_all:
+compiler_lex_clean:
+compiler_clean: compiler_moc_header_clean compiler_uic_clean 
+
+####### Compile
+
+aboutdialog.o: aboutdialog.cpp aboutdialog.h \
+               settings.h \
+               xmlobj.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o aboutdialog.o aboutdialog.cpp
+
+animpoint.o: animpoint.cpp animpoint.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o animpoint.o animpoint.cpp
+
+attribute.o: attribute.cpp attribute.h \
+               xmlobj.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o attribute.o attribute.cpp
+
+attributedelegate.o: attributedelegate.cpp attributedelegate.h \
+               attribute.h \
+               xmlobj.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o attributedelegate.o attributedelegate.cpp
+
+attributedialog.o: attributedialog.cpp attributedialog.h \
+               attribute.h \
+               xmlobj.h \
+               branchobj.h \
+               floatimageobj.h \
+               floatobj.h \
+               ornamentedobj.h \
+               frameobj.h \
+               mapobj.h \
+               linkablemapobj.h \
+               animpoint.h \
+               noteobj.h \
+               headingobj.h \
+               flagrowobj.h \
+               flagobj.h \
+               imageobj.h \
+               xlinkobj.h \
+               attributewidget.h \
+               ui_attributewidget.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o attributedialog.o attributedialog.cpp
+
+attributewidget.o: attributewidget.cpp attributewidget.h \
+               ui_attributewidget.h \
+               attribute.h \
+               xmlobj.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o attributewidget.o attributewidget.cpp
+
+branchobj.o: branchobj.cpp branchobj.h \
+               floatimageobj.h \
+               floatobj.h \
+               ornamentedobj.h \
+               attribute.h \
+               xmlobj.h \
+               frameobj.h \
+               mapobj.h \
+               linkablemapobj.h \
+               animpoint.h \
+               noteobj.h \
+               headingobj.h \
+               flagrowobj.h \
+               flagobj.h \
+               imageobj.h \
+               xlinkobj.h \
+               geometry.h \
+               mapeditor.h \
+               file.h \
+               misc.h \
+               parser.h \
+               selection.h \
+               settings.h \
+               vymmodel.h \
+               mapcenterobj.h \
+               mainwindow.h \
+               branchpropwindow.h \
+               ui_branchpropwindow.h \
+               attributedelegate.h \
+               findwindow.h \
+               historywindow.h \
+               ui_historywindow.h \
+               simplescripteditor.h \
+               ui_simplescripteditor.h \
+               highlighter.h \
+               texteditor.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o branchobj.o branchobj.cpp
+
+branchpropwindow.o: branchpropwindow.cpp branchpropwindow.h \
+               ui_branchpropwindow.h \
+               attributedelegate.h \
+               attribute.h \
+               xmlobj.h \
+               branchobj.h \
+               floatimageobj.h \
+               floatobj.h \
+               ornamentedobj.h \
+               frameobj.h \
+               mapobj.h \
+               linkablemapobj.h \
+               animpoint.h \
+               noteobj.h \
+               headingobj.h \
+               flagrowobj.h \
+               flagobj.h \
+               imageobj.h \
+               xlinkobj.h \
+               mapeditor.h \
+               file.h \
+               misc.h \
+               parser.h \
+               selection.h \
+               settings.h \
+               vymmodel.h \
+               mapcenterobj.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o branchpropwindow.o branchpropwindow.cpp
+
+editxlinkdialog.o: editxlinkdialog.cpp editxlinkdialog.h \
+               ui_editxlinkdialog.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o editxlinkdialog.o editxlinkdialog.cpp
+
+exportoofiledialog.o: exportoofiledialog.cpp exportoofiledialog.h \
+               settings.h \
+               xmlobj.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o exportoofiledialog.o exportoofiledialog.cpp
+
+exports.o: exports.cpp exports.h \
+               mapcenterobj.h \
+               branchobj.h \
+               floatimageobj.h \
+               floatobj.h \
+               ornamentedobj.h \
+               attribute.h \
+               xmlobj.h \
+               frameobj.h \
+               mapobj.h \
+               linkablemapobj.h \
+               animpoint.h \
+               noteobj.h \
+               headingobj.h \
+               flagrowobj.h \
+               flagobj.h \
+               imageobj.h \
+               xlinkobj.h \
+               settings.h \
+               vymmodel.h \
+               mapeditor.h \
+               file.h \
+               misc.h \
+               parser.h \
+               selection.h \
+               mainwindow.h \
+               branchpropwindow.h \
+               ui_branchpropwindow.h \
+               attributedelegate.h \
+               findwindow.h \
+               historywindow.h \
+               ui_historywindow.h \
+               simplescripteditor.h \
+               ui_simplescripteditor.h \
+               highlighter.h \
+               texteditor.h \
+               warningdialog.h \
+               ui_warningdialog.h \
+               xsltproc.h \
+               showtextdialog.h \
+               ui_showtextdialog.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o exports.o exports.cpp
+
+exportxhtmldialog.o: exportxhtmldialog.cpp exportxhtmldialog.h \
+               ui_exportxhtmldialog.h \
+               options.h \
+               settings.h \
+               xmlobj.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o exportxhtmldialog.o exportxhtmldialog.cpp
+
+extrainfodialog.o: extrainfodialog.cpp extrainfodialog.h \
+               ui_extrainfodialog.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o extrainfodialog.o extrainfodialog.cpp
+
+file.o: file.cpp file.h \
+               process.h \
+               mkdtemp.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o file.o file.cpp
+
+findwindow.o: findwindow.cpp findwindow.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o findwindow.o findwindow.cpp
+
+flagobj.o: flagobj.cpp flagobj.h \
+               mapobj.h \
+               xmlobj.h \
+               imageobj.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o flagobj.o flagobj.cpp
+
+flagrowobj.o: flagrowobj.cpp flagrowobj.h \
+               mapobj.h \
+               xmlobj.h \
+               flagobj.h \
+               imageobj.h \
+               geometry.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o flagrowobj.o flagrowobj.cpp
+
+floatimageobj.o: floatimageobj.cpp floatimageobj.h \
+               floatobj.h \
+               ornamentedobj.h \
+               attribute.h \
+               xmlobj.h \
+               frameobj.h \
+               mapobj.h \
+               linkablemapobj.h \
+               animpoint.h \
+               noteobj.h \
+               headingobj.h \
+               flagrowobj.h \
+               flagobj.h \
+               imageobj.h \
+               branchobj.h \
+               xlinkobj.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o floatimageobj.o floatimageobj.cpp
+
+floatobj.o: floatobj.cpp floatobj.h \
+               ornamentedobj.h \
+               attribute.h \
+               xmlobj.h \
+               frameobj.h \
+               mapobj.h \
+               linkablemapobj.h \
+               animpoint.h \
+               noteobj.h \
+               headingobj.h \
+               flagrowobj.h \
+               flagobj.h \
+               imageobj.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o floatobj.o floatobj.cpp
+
+frameobj.o: frameobj.cpp frameobj.h \
+               mapobj.h \
+               xmlobj.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o frameobj.o frameobj.cpp
+
+geometry.o: geometry.cpp geometry.h \
+               misc.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o geometry.o geometry.cpp
+
+headingobj.o: headingobj.cpp headingobj.h \
+               mapobj.h \
+               xmlobj.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o headingobj.o headingobj.cpp
+
+highlighter.o: highlighter.cpp highlighter.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o highlighter.o highlighter.cpp
+
+historywindow.o: historywindow.cpp historywindow.h \
+               settings.h \
+               xmlobj.h \
+               ui_historywindow.h \
+               mainwindow.h \
+               branchpropwindow.h \
+               ui_branchpropwindow.h \
+               attributedelegate.h \
+               attribute.h \
+               branchobj.h \
+               floatimageobj.h \
+               floatobj.h \
+               ornamentedobj.h \
+               frameobj.h \
+               mapobj.h \
+               linkablemapobj.h \
+               animpoint.h \
+               noteobj.h \
+               headingobj.h \
+               flagrowobj.h \
+               flagobj.h \
+               imageobj.h \
+               xlinkobj.h \
+               mapeditor.h \
+               file.h \
+               misc.h \
+               parser.h \
+               selection.h \
+               vymmodel.h \
+               mapcenterobj.h \
+               findwindow.h \
+               simplescripteditor.h \
+               ui_simplescripteditor.h \
+               highlighter.h \
+               texteditor.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o historywindow.o historywindow.cpp
+
+imageobj.o: imageobj.cpp imageobj.h \
+               mapobj.h \
+               xmlobj.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o imageobj.o imageobj.cpp
+
+imports.o: imports.cpp file.h \
+               imports.h \
+               mapcenterobj.h \
+               branchobj.h \
+               floatimageobj.h \
+               floatobj.h \
+               ornamentedobj.h \
+               attribute.h \
+               xmlobj.h \
+               frameobj.h \
+               mapobj.h \
+               linkablemapobj.h \
+               animpoint.h \
+               noteobj.h \
+               headingobj.h \
+               flagrowobj.h \
+               flagobj.h \
+               imageobj.h \
+               xlinkobj.h \
+               settings.h \
+               misc.h \
+               mainwindow.h \
+               branchpropwindow.h \
+               ui_branchpropwindow.h \
+               attributedelegate.h \
+               mapeditor.h \
+               parser.h \
+               selection.h \
+               vymmodel.h \
+               findwindow.h \
+               historywindow.h \
+               ui_historywindow.h \
+               simplescripteditor.h \
+               ui_simplescripteditor.h \
+               highlighter.h \
+               texteditor.h \
+               xsltproc.h \
+               showtextdialog.h \
+               ui_showtextdialog.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o imports.o imports.cpp
+
+linkablemapobj.o: linkablemapobj.cpp linkablemapobj.h \
+               animpoint.h \
+               noteobj.h \
+               xmlobj.h \
+               headingobj.h \
+               mapobj.h \
+               flagrowobj.h \
+               flagobj.h \
+               imageobj.h \
+               branchobj.h \
+               floatimageobj.h \
+               floatobj.h \
+               ornamentedobj.h \
+               attribute.h \
+               frameobj.h \
+               xlinkobj.h \
+               mapeditor.h \
+               file.h \
+               misc.h \
+               parser.h \
+               selection.h \
+               settings.h \
+               vymmodel.h \
+               mapcenterobj.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o linkablemapobj.o linkablemapobj.cpp
+
+main.o: main.cpp flagrowobj.h \
+               mapobj.h \
+               xmlobj.h \
+               flagobj.h \
+               imageobj.h \
+               mainwindow.h \
+               branchpropwindow.h \
+               ui_branchpropwindow.h \
+               attributedelegate.h \
+               attribute.h \
+               branchobj.h \
+               floatimageobj.h \
+               floatobj.h \
+               ornamentedobj.h \
+               frameobj.h \
+               linkablemapobj.h \
+               animpoint.h \
+               noteobj.h \
+               headingobj.h \
+               xlinkobj.h \
+               mapeditor.h \
+               file.h \
+               misc.h \
+               parser.h \
+               selection.h \
+               settings.h \
+               vymmodel.h \
+               mapcenterobj.h \
+               findwindow.h \
+               historywindow.h \
+               ui_historywindow.h \
+               simplescripteditor.h \
+               ui_simplescripteditor.h \
+               highlighter.h \
+               texteditor.h \
+               options.h \
+               version.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp
+
+mainwindow.o: mainwindow.cpp mainwindow.h \
+               branchpropwindow.h \
+               ui_branchpropwindow.h \
+               attributedelegate.h \
+               attribute.h \
+               xmlobj.h \
+               branchobj.h \
+               floatimageobj.h \
+               floatobj.h \
+               ornamentedobj.h \
+               frameobj.h \
+               mapobj.h \
+               linkablemapobj.h \
+               animpoint.h \
+               noteobj.h \
+               headingobj.h \
+               flagrowobj.h \
+               flagobj.h \
+               imageobj.h \
+               xlinkobj.h \
+               mapeditor.h \
+               file.h \
+               misc.h \
+               parser.h \
+               selection.h \
+               settings.h \
+               vymmodel.h \
+               mapcenterobj.h \
+               findwindow.h \
+               historywindow.h \
+               ui_historywindow.h \
+               simplescripteditor.h \
+               ui_simplescripteditor.h \
+               highlighter.h \
+               texteditor.h \
+               aboutdialog.h \
+               exportoofiledialog.h \
+               exports.h \
+               imports.h \
+               options.h \
+               process.h \
+               warningdialog.h \
+               ui_warningdialog.h \
+               attributedialog.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o mainwindow.o mainwindow.cpp
+
+mapcenterobj.o: mapcenterobj.cpp floatimageobj.h \
+               floatobj.h \
+               ornamentedobj.h \
+               attribute.h \
+               xmlobj.h \
+               frameobj.h \
+               mapobj.h \
+               linkablemapobj.h \
+               animpoint.h \
+               noteobj.h \
+               headingobj.h \
+               flagrowobj.h \
+               flagobj.h \
+               imageobj.h \
+               geometry.h \
+               mapcenterobj.h \
+               branchobj.h \
+               xlinkobj.h \
+               mapeditor.h \
+               file.h \
+               misc.h \
+               parser.h \
+               selection.h \
+               settings.h \
+               vymmodel.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o mapcenterobj.o mapcenterobj.cpp
+
+mapeditor.o: mapeditor.cpp mapeditor.h \
+               attribute.h \
+               xmlobj.h \
+               file.h \
+               misc.h \
+               parser.h \
+               ornamentedobj.h \
+               frameobj.h \
+               mapobj.h \
+               linkablemapobj.h \
+               animpoint.h \
+               noteobj.h \
+               headingobj.h \
+               flagrowobj.h \
+               flagobj.h \
+               imageobj.h \
+               selection.h \
+               settings.h \
+               vymmodel.h \
+               mapcenterobj.h \
+               branchobj.h \
+               floatimageobj.h \
+               floatobj.h \
+               xlinkobj.h \
+               editxlinkdialog.h \
+               ui_editxlinkdialog.h \
+               exports.h \
+               exportxhtmldialog.h \
+               ui_exportxhtmldialog.h \
+               extrainfodialog.h \
+               ui_extrainfodialog.h \
+               mainwindow.h \
+               branchpropwindow.h \
+               ui_branchpropwindow.h \
+               attributedelegate.h \
+               findwindow.h \
+               historywindow.h \
+               ui_historywindow.h \
+               simplescripteditor.h \
+               ui_simplescripteditor.h \
+               highlighter.h \
+               texteditor.h \
+               warningdialog.h \
+               ui_warningdialog.h \
+               xml-freemind.h \
+               xml-base.h \
+               xml-vym.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o mapeditor.o mapeditor.cpp
+
+mapobj.o: mapobj.cpp mapobj.h \
+               xmlobj.h \
+               misc.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o mapobj.o mapobj.cpp
+
+misc.o: misc.cpp misc.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o misc.o misc.cpp
+
+noteobj.o: noteobj.cpp noteobj.h \
+               xmlobj.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o noteobj.o noteobj.cpp
+
+options.o: options.cpp options.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o options.o options.cpp
+
+ornamentedobj.o: ornamentedobj.cpp ornamentedobj.h \
+               attribute.h \
+               xmlobj.h \
+               frameobj.h \
+               mapobj.h \
+               linkablemapobj.h \
+               animpoint.h \
+               noteobj.h \
+               headingobj.h \
+               flagrowobj.h \
+               flagobj.h \
+               imageobj.h \
+               texteditor.h \
+               mapeditor.h \
+               file.h \
+               misc.h \
+               parser.h \
+               selection.h \
+               settings.h \
+               vymmodel.h \
+               mapcenterobj.h \
+               branchobj.h \
+               floatimageobj.h \
+               floatobj.h \
+               xlinkobj.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ornamentedobj.o ornamentedobj.cpp
+
+parser.o: parser.cpp parser.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o parser.o parser.cpp
+
+process.o: process.cpp process.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o process.o process.cpp
+
+selection.o: selection.cpp selection.h \
+               mainwindow.h \
+               branchpropwindow.h \
+               ui_branchpropwindow.h \
+               attributedelegate.h \
+               attribute.h \
+               xmlobj.h \
+               branchobj.h \
+               floatimageobj.h \
+               floatobj.h \
+               ornamentedobj.h \
+               frameobj.h \
+               mapobj.h \
+               linkablemapobj.h \
+               animpoint.h \
+               noteobj.h \
+               headingobj.h \
+               flagrowobj.h \
+               flagobj.h \
+               imageobj.h \
+               xlinkobj.h \
+               mapeditor.h \
+               file.h \
+               misc.h \
+               parser.h \
+               settings.h \
+               vymmodel.h \
+               mapcenterobj.h \
+               findwindow.h \
+               historywindow.h \
+               ui_historywindow.h \
+               simplescripteditor.h \
+               ui_simplescripteditor.h \
+               highlighter.h \
+               texteditor.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o selection.o selection.cpp
+
+showtextdialog.o: showtextdialog.cpp showtextdialog.h \
+               ui_showtextdialog.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o showtextdialog.o showtextdialog.cpp
+
+simplescripteditor.o: simplescripteditor.cpp simplescripteditor.h \
+               ui_simplescripteditor.h \
+               highlighter.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o simplescripteditor.o simplescripteditor.cpp
+
+texteditor.o: texteditor.cpp texteditor.h \
+               noteobj.h \
+               xmlobj.h \
+               settings.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o texteditor.o texteditor.cpp
+
+version.o: version.cpp version.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o version.o version.cpp
+
+vymmodel.o: vymmodel.cpp geometry.h \
+               vymmodel.h \
+               mapcenterobj.h \
+               branchobj.h \
+               floatimageobj.h \
+               floatobj.h \
+               ornamentedobj.h \
+               attribute.h \
+               xmlobj.h \
+               frameobj.h \
+               mapobj.h \
+               linkablemapobj.h \
+               animpoint.h \
+               noteobj.h \
+               headingobj.h \
+               flagrowobj.h \
+               flagobj.h \
+               imageobj.h \
+               xlinkobj.h \
+               mapeditor.h \
+               file.h \
+               misc.h \
+               parser.h \
+               selection.h \
+               settings.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o vymmodel.o vymmodel.cpp
+
+xlinkobj.o: xlinkobj.cpp xlinkobj.h \
+               linkablemapobj.h \
+               animpoint.h \
+               noteobj.h \
+               xmlobj.h \
+               headingobj.h \
+               mapobj.h \
+               flagrowobj.h \
+               flagobj.h \
+               imageobj.h \
+               branchobj.h \
+               floatimageobj.h \
+               floatobj.h \
+               ornamentedobj.h \
+               attribute.h \
+               frameobj.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o xlinkobj.o xlinkobj.cpp
+
+xml-base.o: xml-base.cpp xml-base.h \
+               file.h \
+               mapcenterobj.h \
+               branchobj.h \
+               floatimageobj.h \
+               floatobj.h \
+               ornamentedobj.h \
+               attribute.h \
+               xmlobj.h \
+               frameobj.h \
+               mapobj.h \
+               linkablemapobj.h \
+               animpoint.h \
+               noteobj.h \
+               headingobj.h \
+               flagrowobj.h \
+               flagobj.h \
+               imageobj.h \
+               xlinkobj.h \
+               mapeditor.h \
+               misc.h \
+               parser.h \
+               selection.h \
+               settings.h \
+               vymmodel.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o xml-base.o xml-base.cpp
+
+xml-vym.o: xml-vym.cpp xml-vym.h \
+               xml-base.h \
+               file.h \
+               mapcenterobj.h \
+               branchobj.h \
+               floatimageobj.h \
+               floatobj.h \
+               ornamentedobj.h \
+               attribute.h \
+               xmlobj.h \
+               frameobj.h \
+               mapobj.h \
+               linkablemapobj.h \
+               animpoint.h \
+               noteobj.h \
+               headingobj.h \
+               flagrowobj.h \
+               flagobj.h \
+               imageobj.h \
+               xlinkobj.h \
+               mapeditor.h \
+               misc.h \
+               parser.h \
+               selection.h \
+               settings.h \
+               vymmodel.h \
+               version.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o xml-vym.o xml-vym.cpp
+
+xml-freemind.o: xml-freemind.cpp xml-freemind.h \
+               xml-base.h \
+               file.h \
+               mapcenterobj.h \
+               branchobj.h \
+               floatimageobj.h \
+               floatobj.h \
+               ornamentedobj.h \
+               attribute.h \
+               xmlobj.h \
+               frameobj.h \
+               mapobj.h \
+               linkablemapobj.h \
+               animpoint.h \
+               noteobj.h \
+               headingobj.h \
+               flagrowobj.h \
+               flagobj.h \
+               imageobj.h \
+               xlinkobj.h \
+               mapeditor.h \
+               misc.h \
+               parser.h \
+               selection.h \
+               settings.h \
+               vymmodel.h \
+               version.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o xml-freemind.o xml-freemind.cpp
+
+xmlobj.o: xmlobj.cpp xmlobj.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o xmlobj.o xmlobj.cpp
+
+xsltproc.o: xsltproc.cpp xsltproc.h \
+               showtextdialog.h \
+               ui_showtextdialog.h \
+               process.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o xsltproc.o xsltproc.cpp
+
+settings.o: settings.cpp settings.h \
+               xmlobj.h \
+               file.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o settings.o settings.cpp
+
+warningdialog.o: warningdialog.cpp warningdialog.h \
+               ui_warningdialog.h \
+               settings.h \
+               xmlobj.h
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o warningdialog.o warningdialog.cpp
+
+moc_aboutdialog.o: moc_aboutdialog.cpp 
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_aboutdialog.o moc_aboutdialog.cpp
+
+moc_attributedelegate.o: moc_attributedelegate.cpp 
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_attributedelegate.o moc_attributedelegate.cpp
+
+moc_attributedialog.o: moc_attributedialog.cpp 
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_attributedialog.o moc_attributedialog.cpp
+
+moc_attributewidget.o: moc_attributewidget.cpp 
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_attributewidget.o moc_attributewidget.cpp
+
+moc_branchpropwindow.o: moc_branchpropwindow.cpp 
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_branchpropwindow.o moc_branchpropwindow.cpp
+
+moc_editxlinkdialog.o: moc_editxlinkdialog.cpp 
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_editxlinkdialog.o moc_editxlinkdialog.cpp
+
+moc_exportoofiledialog.o: moc_exportoofiledialog.cpp 
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_exportoofiledialog.o moc_exportoofiledialog.cpp
+
+moc_exportxhtmldialog.o: moc_exportxhtmldialog.cpp 
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_exportxhtmldialog.o moc_exportxhtmldialog.cpp
+
+moc_extrainfodialog.o: moc_extrainfodialog.cpp 
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_extrainfodialog.o moc_extrainfodialog.cpp
+
+moc_findwindow.o: moc_findwindow.cpp 
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_findwindow.o moc_findwindow.cpp
+
+moc_highlighter.o: moc_highlighter.cpp 
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_highlighter.o moc_highlighter.cpp
+
+moc_historywindow.o: moc_historywindow.cpp 
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_historywindow.o moc_historywindow.cpp
+
+moc_linkablemapobj.o: moc_linkablemapobj.cpp 
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_linkablemapobj.o moc_linkablemapobj.cpp
+
+moc_mainwindow.o: moc_mainwindow.cpp 
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_mainwindow.o moc_mainwindow.cpp
+
+moc_mapeditor.o: moc_mapeditor.cpp 
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_mapeditor.o moc_mapeditor.cpp
+
+moc_process.o: moc_process.cpp 
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_process.o moc_process.cpp
+
+moc_showtextdialog.o: moc_showtextdialog.cpp 
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_showtextdialog.o moc_showtextdialog.cpp
+
+moc_simplescripteditor.o: moc_simplescripteditor.cpp 
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_simplescripteditor.o moc_simplescripteditor.cpp
+
+moc_texteditor.o: moc_texteditor.cpp 
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_texteditor.o moc_texteditor.cpp
+
+moc_vymmodel.o: moc_vymmodel.cpp 
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_vymmodel.o moc_vymmodel.cpp
+
+moc_warningdialog.o: moc_warningdialog.cpp 
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_warningdialog.o moc_warningdialog.cpp
+
+####### Install
+
+install_target: first FORCE
+       @$(CHK_DIR_EXISTS) $(INSTALL_ROOT)/usr/local/bin/ || $(MKDIR) $(INSTALL_ROOT)/usr/local/bin/ 
+       -$(INSTALL_PROGRAM) "$(QMAKE_TARGET)" "$(INSTALL_ROOT)/usr/local/bin/$(QMAKE_TARGET)"
+
+uninstall_target:  FORCE
+       -$(DEL_FILE) "$(INSTALL_ROOT)/usr/local/bin/$(QMAKE_TARGET)"
+       -$(DEL_DIR) $(INSTALL_ROOT)/usr/local/bin/ 
+
+
+install_support: first FORCE
+       @$(CHK_DIR_EXISTS) $(INSTALL_ROOT)/usr/local/share/vym/ || $(MKDIR) $(INSTALL_ROOT)/usr/local/share/vym/ 
+       -$(INSTALL_DIR) /home/marcelo/workspaceqt/vym-1.12.2/styles $(INSTALL_ROOT)/usr/local/share/vym/
+       -$(INSTALL_DIR) /home/marcelo/workspaceqt/vym-1.12.2/scripts $(INSTALL_ROOT)/usr/local/share/vym/
+       -$(INSTALL_DIR) /home/marcelo/workspaceqt/vym-1.12.2/icons $(INSTALL_ROOT)/usr/local/share/vym/
+       -$(INSTALL_DIR) /home/marcelo/workspaceqt/vym-1.12.2/flags $(INSTALL_ROOT)/usr/local/share/vym/
+       -$(INSTALL_DIR) /home/marcelo/workspaceqt/vym-1.12.2/lang $(INSTALL_ROOT)/usr/local/share/vym/
+       -$(INSTALL_DIR) /home/marcelo/workspaceqt/vym-1.12.2/macros $(INSTALL_ROOT)/usr/local/share/vym/
+       -$(INSTALL_DIR) /home/marcelo/workspaceqt/vym-1.12.2/exports $(INSTALL_ROOT)/usr/local/share/vym/
+       -$(INSTALL_DIR) /home/marcelo/workspaceqt/vym-1.12.2/demos $(INSTALL_ROOT)/usr/local/share/vym/
+
+
+uninstall_support:  FORCE
+       -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/local/share/vym/styles 
+        -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/local/share/vym/scripts 
+        -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/local/share/vym/icons 
+        -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/local/share/vym/flags 
+        -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/local/share/vym/lang 
+        -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/local/share/vym/macros 
+        -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/local/share/vym/exports 
+        -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/local/share/vym/demos
+       -$(DEL_DIR) $(INSTALL_ROOT)/usr/local/share/vym/ 
+
+
+install_doc: first FORCE
+       @$(CHK_DIR_EXISTS) $(INSTALL_ROOT)/usr/local/share/doc/packages/vym/ || $(MKDIR) $(INSTALL_ROOT)/usr/local/share/doc/packages/vym/ 
+       -$(INSTALL_FILE) /home/marcelo/workspaceqt/vym-1.12.2/doc/vym.pdf $(INSTALL_ROOT)/usr/local/share/doc/packages/vym/
+
+
+uninstall_doc:  FORCE
+       -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/local/share/doc/packages/vym/vym.pdf
+       -$(DEL_DIR) $(INSTALL_ROOT)/usr/local/share/doc/packages/vym/ 
+
+
+install:  install_target install_support install_doc  FORCE
+
+uninstall: uninstall_target uninstall_support uninstall_doc   FORCE
+
+FORCE:
+
diff --git a/Makefile.Debug b/Makefile.Debug
new file mode 100644 (file)
index 0000000..70c05bb
--- /dev/null
@@ -0,0 +1,1477 @@
+#############################################################################\r
+# Makefile for building: vym\r
+# Generated by qmake (2.01a) (Qt 4.5.0) on: sáb 24. out 08:26:40 2009\r
+# Project:  vym.pro\r
+# Template: app\r
+#############################################################################\r
+\r
+####### Compiler, tools and options\r
+\r
+CC            = gcc\r
+CXX           = g++\r
+DEFINES       = -DUNICODE -DQT_LARGEFILE_SUPPORT -D_USE_MATH_DEFINES -DVYM_DOCDIR=\"/usr/local/share/doc/packages/vym\" -DQT_DLL -DQT_QT3SUPPORT_LIB -DQT3_SUPPORT -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN\r
+CFLAGS        = -g -Wall $(DEFINES)\r
+CXXFLAGS      = -g -Wall -frtti -fexceptions -mthreads $(DEFINES)\r
+INCPATH       = -I"..\Qt\2009.01\qt\include\QtCore" -I"..\Qt\2009.01\qt\include\QtNetwork" -I"..\Qt\2009.01\qt\include\QtGui" -I"..\Qt\2009.01\qt\include\QtXml" -I"..\Qt\2009.01\qt\include\Qt3Support" -I"..\Qt\2009.01\qt\include" -I"..\Qt\2009.01\qt\include\ActiveQt" -I"debug" -I"." -I"..\Qt\2009.01\qt\mkspecs\win32-g++"\r
+LINK        =        g++\r
+LFLAGS        =        -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -Wl,-subsystem,windows\r
+LIBS        =        -L"c:\Qt\2009.01\qt\lib" -lmingw32 -lqtmaind debug\vym_res.o -lQt3Supportd4 -lQtXmld4 -lQtGuid4 -lQtNetworkd4 -lQtCored4\r
+QMAKE         = c:\Qt\2009.01\qt\bin\qmake.exe\r
+IDC           = c:\Qt\2009.01\qt\bin\idc.exe\r
+IDL           = midl\r
+ZIP           = zip -r -9\r
+DEF_FILE      = \r
+RES_FILE      = debug\vym_res.o\r
+COPY          = copy /y\r
+COPY_FILE     = $(COPY)\r
+COPY_DIR      = xcopy /s /q /y /i\r
+DEL_FILE      = del\r
+DEL_DIR       = rmdir\r
+MOVE          = move\r
+CHK_DIR_EXISTS= if not exist\r
+MKDIR         = mkdir\r
+INSTALL_FILE    = $(COPY_FILE)\r
+INSTALL_PROGRAM = $(COPY_FILE)\r
+INSTALL_DIR     = $(COPY_DIR)\r
+\r
+####### Output directory\r
+\r
+OBJECTS_DIR   = debug\r
+\r
+####### Files\r
+\r
+SOURCES       = aboutdialog.cpp \\r
+               animpoint.cpp \\r
+               attribute.cpp \\r
+               attributedelegate.cpp \\r
+               attributedialog.cpp \\r
+               attributewidget.cpp \\r
+               branchobj.cpp \\r
+               branchpropwindow.cpp \\r
+               editxlinkdialog.cpp \\r
+               exportoofiledialog.cpp \\r
+               exports.cpp \\r
+               exportxhtmldialog.cpp \\r
+               extrainfodialog.cpp \\r
+               file.cpp \\r
+               findwindow.cpp \\r
+               flagobj.cpp \\r
+               flagrowobj.cpp \\r
+               floatimageobj.cpp \\r
+               floatobj.cpp \\r
+               frameobj.cpp \\r
+               geometry.cpp \\r
+               headingobj.cpp \\r
+               highlighter.cpp \\r
+               historywindow.cpp \\r
+               imageobj.cpp \\r
+               imports.cpp \\r
+               linkablemapobj.cpp \\r
+               main.cpp \\r
+               mainwindow.cpp \\r
+               mapcenterobj.cpp \\r
+               mapeditor.cpp \\r
+               mapobj.cpp \\r
+               misc.cpp \\r
+               noteobj.cpp \\r
+               options.cpp \\r
+               ornamentedobj.cpp \\r
+               parser.cpp \\r
+               process.cpp \\r
+               selection.cpp \\r
+               showtextdialog.cpp \\r
+               simplescripteditor.cpp \\r
+               texteditor.cpp \\r
+               version.cpp \\r
+               vymmodel.cpp \\r
+               xlinkobj.cpp \\r
+               xml-base.cpp \\r
+               xml-vym.cpp \\r
+               xml-freemind.cpp \\r
+               xmlobj.cpp \\r
+               xsltproc.cpp \\r
+               settings.cpp \\r
+               warningdialog.cpp \\r
+               mkdtemp.cpp debug\moc_aboutdialog.cpp \\r
+               debug\moc_attributedelegate.cpp \\r
+               debug\moc_attributedialog.cpp \\r
+               debug\moc_attributewidget.cpp \\r
+               debug\moc_branchpropwindow.cpp \\r
+               debug\moc_editxlinkdialog.cpp \\r
+               debug\moc_exportoofiledialog.cpp \\r
+               debug\moc_exportxhtmldialog.cpp \\r
+               debug\moc_extrainfodialog.cpp \\r
+               debug\moc_findwindow.cpp \\r
+               debug\moc_highlighter.cpp \\r
+               debug\moc_historywindow.cpp \\r
+               debug\moc_linkablemapobj.cpp \\r
+               debug\moc_mainwindow.cpp \\r
+               debug\moc_mapeditor.cpp \\r
+               debug\moc_process.cpp \\r
+               debug\moc_showtextdialog.cpp \\r
+               debug\moc_simplescripteditor.cpp \\r
+               debug\moc_texteditor.cpp \\r
+               debug\moc_vymmodel.cpp \\r
+               debug\moc_warningdialog.cpp\r
+OBJECTS       = debug/aboutdialog.o \\r
+               debug/animpoint.o \\r
+               debug/attribute.o \\r
+               debug/attributedelegate.o \\r
+               debug/attributedialog.o \\r
+               debug/attributewidget.o \\r
+               debug/branchobj.o \\r
+               debug/branchpropwindow.o \\r
+               debug/editxlinkdialog.o \\r
+               debug/exportoofiledialog.o \\r
+               debug/exports.o \\r
+               debug/exportxhtmldialog.o \\r
+               debug/extrainfodialog.o \\r
+               debug/file.o \\r
+               debug/findwindow.o \\r
+               debug/flagobj.o \\r
+               debug/flagrowobj.o \\r
+               debug/floatimageobj.o \\r
+               debug/floatobj.o \\r
+               debug/frameobj.o \\r
+               debug/geometry.o \\r
+               debug/headingobj.o \\r
+               debug/highlighter.o \\r
+               debug/historywindow.o \\r
+               debug/imageobj.o \\r
+               debug/imports.o \\r
+               debug/linkablemapobj.o \\r
+               debug/main.o \\r
+               debug/mainwindow.o \\r
+               debug/mapcenterobj.o \\r
+               debug/mapeditor.o \\r
+               debug/mapobj.o \\r
+               debug/misc.o \\r
+               debug/noteobj.o \\r
+               debug/options.o \\r
+               debug/ornamentedobj.o \\r
+               debug/parser.o \\r
+               debug/process.o \\r
+               debug/selection.o \\r
+               debug/showtextdialog.o \\r
+               debug/simplescripteditor.o \\r
+               debug/texteditor.o \\r
+               debug/version.o \\r
+               debug/vymmodel.o \\r
+               debug/xlinkobj.o \\r
+               debug/xml-base.o \\r
+               debug/xml-vym.o \\r
+               debug/xml-freemind.o \\r
+               debug/xmlobj.o \\r
+               debug/xsltproc.o \\r
+               debug/settings.o \\r
+               debug/warningdialog.o \\r
+               debug/mkdtemp.o \\r
+               debug/moc_aboutdialog.o \\r
+               debug/moc_attributedelegate.o \\r
+               debug/moc_attributedialog.o \\r
+               debug/moc_attributewidget.o \\r
+               debug/moc_branchpropwindow.o \\r
+               debug/moc_editxlinkdialog.o \\r
+               debug/moc_exportoofiledialog.o \\r
+               debug/moc_exportxhtmldialog.o \\r
+               debug/moc_extrainfodialog.o \\r
+               debug/moc_findwindow.o \\r
+               debug/moc_highlighter.o \\r
+               debug/moc_historywindow.o \\r
+               debug/moc_linkablemapobj.o \\r
+               debug/moc_mainwindow.o \\r
+               debug/moc_mapeditor.o \\r
+               debug/moc_process.o \\r
+               debug/moc_showtextdialog.o \\r
+               debug/moc_simplescripteditor.o \\r
+               debug/moc_texteditor.o \\r
+               debug/moc_vymmodel.o \\r
+               debug/moc_warningdialog.o\r
+DIST          = \r
+QMAKE_TARGET  = vym\r
+DESTDIR        = debug\ #avoid trailing-slash linebreak\r
+TARGET         = vym.exe\r
+DESTDIR_TARGET = debug\vym.exe\r
+\r
+####### Implicit rules\r
+\r
+.SUFFIXES: .cpp .cc .cxx .c\r
+\r
+.cpp.o:\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<\r
+\r
+.cc.o:\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<\r
+\r
+.cxx.o:\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<\r
+\r
+.c.o:\r
+       $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<\r
+\r
+####### Build rules\r
+\r
+first: all\r
+all: Makefile.Debug  $(DESTDIR_TARGET)\r
+\r
+$(DESTDIR_TARGET): ui_attributewidget.h ui_branchpropwindow.h ui_exportxhtmldialog.h ui_extrainfodialog.h ui_editxlinkdialog.h ui_historywindow.h ui_simplescripteditor.h ui_showtextdialog.h ui_warningdialog.h $(OBJECTS) debug/vym_res.o\r
+       $(LINK) $(LFLAGS) -o $(DESTDIR_TARGET) object_script.vym.Debug  $(LIBS)\r
+\r
+\r
+debug/vym_res.o: vym.rc\r
+       windres -i vym.rc -o debug\vym_res.o --include-dir=.\r
+\r
+qmake:  FORCE\r
+       @$(QMAKE) -spec ..\Qt\2009.01\qt\mkspecs\win32-g++ -win32 -o Makefile.Debug vym.pro\r
+\r
+dist:\r
+       $(ZIP) vym.zip $(SOURCES) $(DIST) vym.pro ..\Qt\2009.01\qt\mkspecs\qconfig.pri ..\Qt\2009.01\qt\mkspecs\features\qt_functions.prf ..\Qt\2009.01\qt\mkspecs\features\qt_config.prf ..\Qt\2009.01\qt\mkspecs\features\exclusive_builds.prf ..\Qt\2009.01\qt\mkspecs\features\default_pre.prf ..\Qt\2009.01\qt\mkspecs\features\win32\default_pre.prf ..\Qt\2009.01\qt\mkspecs\features\debug.prf ..\Qt\2009.01\qt\mkspecs\features\debug_and_release.prf ..\Qt\2009.01\qt\mkspecs\features\default_post.prf ..\Qt\2009.01\qt\mkspecs\features\win32\default_post.prf ..\Qt\2009.01\qt\mkspecs\features\build_pass.prf ..\Qt\2009.01\qt\mkspecs\features\win32\embed_manifest_exe.prf ..\Qt\2009.01\qt\mkspecs\features\warn_on.prf ..\Qt\2009.01\qt\mkspecs\features\qt.prf ..\Qt\2009.01\qt\mkspecs\features\win32\thread.prf ..\Qt\2009.01\qt\mkspecs\features\moc.prf ..\Qt\2009.01\qt\mkspecs\features\win32\rtti.prf ..\Qt\2009.01\qt\mkspecs\features\win32\exceptions.prf ..\Qt\2009.01\qt\mkspecs\features\win32\stl.prf ..\Qt\2009.01\qt\mkspecs\features\shared.prf ..\Qt\2009.01\qt\mkspecs\features\win32\windows.prf ..\Qt\2009.01\qt\mkspecs\features\resources.prf ..\Qt\2009.01\qt\mkspecs\features\uic.prf ..\Qt\2009.01\qt\mkspecs\features\yacc.prf ..\Qt\2009.01\qt\mkspecs\features\lex.prf c:\Qt\2009.01\qt\lib\qtmaind.prl lang\vym_de.ts lang\vym_en.ts lang\vym_es.ts lang\vym_fr.ts lang\vym_it.ts lang\vym_pt_BR.ts lang\vym_ru.ts lang\vym_zh_CN.ts lang\vym_de.ts lang\vym_en.ts lang\vym_es.ts lang\vym_fr.ts lang\vym_it.ts lang\vym_pt_BR.ts lang\vym_ru.ts lang\vym_zh_CN.ts HEADERS RESOURCES IMAGES SOURCES OBJECTIVE_SOURCES FORMS YACCSOURCES YACCSOURCES LEXSOURCES \r
+\r
+clean: compiler_clean \r
+       -$(DEL_FILE) debug\aboutdialog.o debug\animpoint.o debug\attribute.o debug\attributedelegate.o debug\attributedialog.o debug\attributewidget.o debug\branchobj.o debug\branchpropwindow.o debug\editxlinkdialog.o debug\exportoofiledialog.o debug\exports.o debug\exportxhtmldialog.o debug\extrainfodialog.o debug\file.o debug\findwindow.o debug\flagobj.o debug\flagrowobj.o debug\floatimageobj.o debug\floatobj.o debug\frameobj.o debug\geometry.o debug\headingobj.o debug\highlighter.o debug\historywindow.o debug\imageobj.o debug\imports.o debug\linkablemapobj.o debug\main.o debug\mainwindow.o debug\mapcenterobj.o debug\mapeditor.o debug\mapobj.o debug\misc.o debug\noteobj.o debug\options.o debug\ornamentedobj.o debug\parser.o debug\process.o debug\selection.o debug\showtextdialog.o debug\simplescripteditor.o debug\texteditor.o debug\version.o debug\vymmodel.o debug\xlinkobj.o debug\xml-base.o debug\xml-vym.o debug\xml-freemind.o debug\xmlobj.o debug\xsltproc.o debug\settings.o debug\warningdialog.o debug\mkdtemp.o debug\moc_aboutdialog.o debug\moc_attributedelegate.o debug\moc_attributedialog.o debug\moc_attributewidget.o debug\moc_branchpropwindow.o debug\moc_editxlinkdialog.o debug\moc_exportoofiledialog.o debug\moc_exportxhtmldialog.o debug\moc_extrainfodialog.o debug\moc_findwindow.o debug\moc_highlighter.o debug\moc_historywindow.o debug\moc_linkablemapobj.o debug\moc_mainwindow.o debug\moc_mapeditor.o debug\moc_process.o debug\moc_showtextdialog.o debug\moc_simplescripteditor.o debug\moc_texteditor.o debug\moc_vymmodel.o debug\moc_warningdialog.o\r
+       -$(DEL_FILE) debug\vym_res.o\r
+\r
+distclean: clean\r
+       -$(DEL_FILE) $(DESTDIR_TARGET)\r
+       -$(DEL_FILE) Makefile.Debug\r
+\r
+mocclean: compiler_moc_header_clean compiler_moc_source_clean\r
+\r
+mocables: compiler_moc_header_make_all compiler_moc_source_make_all\r
+\r
+compiler_moc_header_make_all: debug/moc_aboutdialog.cpp debug/moc_attributedelegate.cpp debug/moc_attributedialog.cpp debug/moc_attributewidget.cpp debug/moc_branchpropwindow.cpp debug/moc_editxlinkdialog.cpp debug/moc_exportoofiledialog.cpp debug/moc_exportxhtmldialog.cpp debug/moc_extrainfodialog.cpp debug/moc_findwindow.cpp debug/moc_highlighter.cpp debug/moc_historywindow.cpp debug/moc_linkablemapobj.cpp debug/moc_mainwindow.cpp debug/moc_mapeditor.cpp debug/moc_process.cpp debug/moc_showtextdialog.cpp debug/moc_simplescripteditor.cpp debug/moc_texteditor.cpp debug/moc_vymmodel.cpp debug/moc_warningdialog.cpp\r
+compiler_moc_header_clean:\r
+       -$(DEL_FILE) debug\moc_aboutdialog.cpp debug\moc_attributedelegate.cpp debug\moc_attributedialog.cpp debug\moc_attributewidget.cpp debug\moc_branchpropwindow.cpp debug\moc_editxlinkdialog.cpp debug\moc_exportoofiledialog.cpp debug\moc_exportxhtmldialog.cpp debug\moc_extrainfodialog.cpp debug\moc_findwindow.cpp debug\moc_highlighter.cpp debug\moc_historywindow.cpp debug\moc_linkablemapobj.cpp debug\moc_mainwindow.cpp debug\moc_mapeditor.cpp debug\moc_process.cpp debug\moc_showtextdialog.cpp debug\moc_simplescripteditor.cpp debug\moc_texteditor.cpp debug\moc_vymmodel.cpp debug\moc_warningdialog.cpp\r
+debug/moc_aboutdialog.cpp: aboutdialog.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 aboutdialog.h -o debug\moc_aboutdialog.cpp\r
+\r
+debug/moc_attributedelegate.cpp: attribute.h \\r
+               xmlobj.h \\r
+               attributedelegate.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 attributedelegate.h -o debug\moc_attributedelegate.cpp\r
+\r
+debug/moc_attributedialog.cpp: attribute.h \\r
+               xmlobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               attributedialog.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 attributedialog.h -o debug\moc_attributedialog.cpp\r
+\r
+debug/moc_attributewidget.cpp: ui_attributewidget.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               attributewidget.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 attributewidget.h -o debug\moc_attributewidget.cpp\r
+\r
+debug/moc_branchpropwindow.cpp: ui_branchpropwindow.h \\r
+               attributedelegate.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               mapcenterobj.h \\r
+               branchpropwindow.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 branchpropwindow.h -o debug\moc_branchpropwindow.cpp\r
+\r
+debug/moc_editxlinkdialog.cpp: ui_editxlinkdialog.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               xmlobj.h \\r
+               headingobj.h \\r
+               mapobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               mapcenterobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               frameobj.h \\r
+               xlinkobj.h \\r
+               editxlinkdialog.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 editxlinkdialog.h -o debug\moc_editxlinkdialog.cpp\r
+\r
+debug/moc_exportoofiledialog.cpp: settings.h \\r
+               xmlobj.h \\r
+               exportoofiledialog.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 exportoofiledialog.h -o debug\moc_exportoofiledialog.cpp\r
+\r
+debug/moc_exportxhtmldialog.cpp: ui_exportxhtmldialog.h \\r
+               process.h \\r
+               xsltproc.h \\r
+               showtextdialog.h \\r
+               ui_showtextdialog.h \\r
+               exportxhtmldialog.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 exportxhtmldialog.h -o debug\moc_exportxhtmldialog.cpp\r
+\r
+debug/moc_extrainfodialog.cpp: ui_extrainfodialog.h \\r
+               extrainfodialog.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 extrainfodialog.h -o debug\moc_extrainfodialog.cpp\r
+\r
+debug/moc_findwindow.cpp: findwindow.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 findwindow.h -o debug\moc_findwindow.cpp\r
+\r
+debug/moc_highlighter.cpp: highlighter.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 highlighter.h -o debug\moc_highlighter.cpp\r
+\r
+debug/moc_historywindow.cpp: settings.h \\r
+               xmlobj.h \\r
+               ui_historywindow.h \\r
+               historywindow.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 historywindow.h -o debug\moc_historywindow.cpp\r
+\r
+debug/moc_linkablemapobj.cpp: animpoint.h \\r
+               noteobj.h \\r
+               xmlobj.h \\r
+               headingobj.h \\r
+               mapobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               linkablemapobj.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 linkablemapobj.h -o debug\moc_linkablemapobj.cpp\r
+\r
+debug/moc_mainwindow.cpp: branchpropwindow.h \\r
+               ui_branchpropwindow.h \\r
+               attributedelegate.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               mapcenterobj.h \\r
+               findwindow.h \\r
+               historywindow.h \\r
+               ui_historywindow.h \\r
+               simplescripteditor.h \\r
+               ui_simplescripteditor.h \\r
+               highlighter.h \\r
+               texteditor.h \\r
+               mainwindow.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 mainwindow.h -o debug\moc_mainwindow.cpp\r
+\r
+debug/moc_mapeditor.cpp: attribute.h \\r
+               xmlobj.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               ornamentedobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               mapcenterobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               mapeditor.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 mapeditor.h -o debug\moc_mapeditor.cpp\r
+\r
+debug/moc_process.cpp: process.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 process.h -o debug\moc_process.cpp\r
+\r
+debug/moc_showtextdialog.cpp: ui_showtextdialog.h \\r
+               showtextdialog.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 showtextdialog.h -o debug\moc_showtextdialog.cpp\r
+\r
+debug/moc_simplescripteditor.cpp: ui_simplescripteditor.h \\r
+               highlighter.h \\r
+               simplescripteditor.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 simplescripteditor.h -o debug\moc_simplescripteditor.cpp\r
+\r
+debug/moc_texteditor.cpp: texteditor.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 texteditor.h -o debug\moc_texteditor.cpp\r
+\r
+debug/moc_vymmodel.cpp: mapcenterobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               vymmodel.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 vymmodel.h -o debug\moc_vymmodel.cpp\r
+\r
+debug/moc_warningdialog.cpp: ui_warningdialog.h \\r
+               warningdialog.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 warningdialog.h -o debug\moc_warningdialog.cpp\r
+\r
+compiler_rcc_make_all:\r
+compiler_rcc_clean:\r
+compiler_image_collection_make_all: qmake_image_collection.cpp\r
+compiler_image_collection_clean:\r
+       -$(DEL_FILE) qmake_image_collection.cpp\r
+compiler_moc_source_make_all:\r
+compiler_moc_source_clean:\r
+compiler_uic_make_all: ui_attributewidget.h ui_branchpropwindow.h ui_exportxhtmldialog.h ui_extrainfodialog.h ui_editxlinkdialog.h ui_historywindow.h ui_simplescripteditor.h ui_showtextdialog.h ui_warningdialog.h\r
+compiler_uic_clean:\r
+       -$(DEL_FILE) ui_attributewidget.h ui_branchpropwindow.h ui_exportxhtmldialog.h ui_extrainfodialog.h ui_editxlinkdialog.h ui_historywindow.h ui_simplescripteditor.h ui_showtextdialog.h ui_warningdialog.h\r
+ui_attributewidget.h: attributewidget.ui\r
+       c:\Qt\2009.01\qt\bin\uic.exe attributewidget.ui -o ui_attributewidget.h\r
+\r
+ui_branchpropwindow.h: branchpropwindow.ui\r
+       c:\Qt\2009.01\qt\bin\uic.exe branchpropwindow.ui -o ui_branchpropwindow.h\r
+\r
+ui_exportxhtmldialog.h: exportxhtmldialog.ui \\r
+               xsltproc.h \\r
+               process.h \\r
+               showtextdialog.h \\r
+               ui_showtextdialog.h\r
+       c:\Qt\2009.01\qt\bin\uic.exe exportxhtmldialog.ui -o ui_exportxhtmldialog.h\r
+\r
+ui_extrainfodialog.h: extrainfodialog.ui\r
+       c:\Qt\2009.01\qt\bin\uic.exe extrainfodialog.ui -o ui_extrainfodialog.h\r
+\r
+ui_editxlinkdialog.h: editxlinkdialog.ui \\r
+               xlinkobj.h \\r
+               mapcenterobj.h \\r
+               linkablemapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               xmlobj.h \\r
+               headingobj.h \\r
+               mapobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               xmlobj.h \\r
+               headingobj.h \\r
+               mapobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h\r
+       c:\Qt\2009.01\qt\bin\uic.exe editxlinkdialog.ui -o ui_editxlinkdialog.h\r
+\r
+ui_historywindow.h: historywindow.ui\r
+       c:\Qt\2009.01\qt\bin\uic.exe historywindow.ui -o ui_historywindow.h\r
+\r
+ui_simplescripteditor.h: simplescripteditor.ui\r
+       c:\Qt\2009.01\qt\bin\uic.exe simplescripteditor.ui -o ui_simplescripteditor.h\r
+\r
+ui_showtextdialog.h: showtextdialog.ui\r
+       c:\Qt\2009.01\qt\bin\uic.exe showtextdialog.ui -o ui_showtextdialog.h\r
+\r
+ui_warningdialog.h: warningdialog.ui\r
+       c:\Qt\2009.01\qt\bin\uic.exe warningdialog.ui -o ui_warningdialog.h\r
+\r
+compiler_yacc_decl_make_all:\r
+compiler_yacc_decl_clean:\r
+compiler_yacc_impl_make_all:\r
+compiler_yacc_impl_clean:\r
+compiler_lex_make_all:\r
+compiler_lex_clean:\r
+compiler_clean: compiler_moc_header_clean compiler_uic_clean \r
+\r
+\r
+\r
+####### Compile\r
+\r
+debug/aboutdialog.o: aboutdialog.cpp aboutdialog.h \\r
+               settings.h \\r
+               xmlobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\aboutdialog.o aboutdialog.cpp\r
+\r
+debug/animpoint.o: animpoint.cpp animpoint.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\animpoint.o animpoint.cpp\r
+\r
+debug/attribute.o: attribute.cpp attribute.h \\r
+               xmlobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\attribute.o attribute.cpp\r
+\r
+debug/attributedelegate.o: attributedelegate.cpp attributedelegate.h \\r
+               attribute.h \\r
+               xmlobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\attributedelegate.o attributedelegate.cpp\r
+\r
+debug/attributedialog.o: attributedialog.cpp attributedialog.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               attributewidget.h \\r
+               ui_attributewidget.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\attributedialog.o attributedialog.cpp\r
+\r
+debug/attributewidget.o: attributewidget.cpp attributewidget.h \\r
+               ui_attributewidget.h \\r
+               attribute.h \\r
+               xmlobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\attributewidget.o attributewidget.cpp\r
+\r
+debug/branchobj.o: branchobj.cpp branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               geometry.h \\r
+               mapeditor.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               mapcenterobj.h \\r
+               mainwindow.h \\r
+               branchpropwindow.h \\r
+               ui_branchpropwindow.h \\r
+               attributedelegate.h \\r
+               findwindow.h \\r
+               historywindow.h \\r
+               ui_historywindow.h \\r
+               simplescripteditor.h \\r
+               ui_simplescripteditor.h \\r
+               highlighter.h \\r
+               texteditor.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\branchobj.o branchobj.cpp\r
+\r
+debug/branchpropwindow.o: branchpropwindow.cpp branchpropwindow.h \\r
+               ui_branchpropwindow.h \\r
+               attributedelegate.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               mapcenterobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\branchpropwindow.o branchpropwindow.cpp\r
+\r
+debug/editxlinkdialog.o: editxlinkdialog.cpp editxlinkdialog.h \\r
+               ui_editxlinkdialog.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               xmlobj.h \\r
+               headingobj.h \\r
+               mapobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               mapcenterobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               frameobj.h \\r
+               xlinkobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\editxlinkdialog.o editxlinkdialog.cpp\r
+\r
+debug/exportoofiledialog.o: exportoofiledialog.cpp exportoofiledialog.h \\r
+               settings.h \\r
+               xmlobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\exportoofiledialog.o exportoofiledialog.cpp\r
+\r
+debug/exports.o: exports.cpp exports.h \\r
+               mapcenterobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               mapeditor.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               mainwindow.h \\r
+               branchpropwindow.h \\r
+               ui_branchpropwindow.h \\r
+               attributedelegate.h \\r
+               findwindow.h \\r
+               historywindow.h \\r
+               ui_historywindow.h \\r
+               simplescripteditor.h \\r
+               ui_simplescripteditor.h \\r
+               highlighter.h \\r
+               texteditor.h \\r
+               warningdialog.h \\r
+               ui_warningdialog.h \\r
+               xsltproc.h \\r
+               showtextdialog.h \\r
+               ui_showtextdialog.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\exports.o exports.cpp\r
+\r
+debug/exportxhtmldialog.o: exportxhtmldialog.cpp exportxhtmldialog.h \\r
+               ui_exportxhtmldialog.h \\r
+               process.h \\r
+               xsltproc.h \\r
+               showtextdialog.h \\r
+               ui_showtextdialog.h \\r
+               options.h \\r
+               settings.h \\r
+               xmlobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\exportxhtmldialog.o exportxhtmldialog.cpp\r
+\r
+debug/extrainfodialog.o: extrainfodialog.cpp extrainfodialog.h \\r
+               ui_extrainfodialog.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\extrainfodialog.o extrainfodialog.cpp\r
+\r
+debug/file.o: file.cpp file.h \\r
+               process.h \\r
+               mkdtemp.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\file.o file.cpp\r
+\r
+debug/findwindow.o: findwindow.cpp findwindow.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\findwindow.o findwindow.cpp\r
+\r
+debug/flagobj.o: flagobj.cpp flagobj.h \\r
+               mapobj.h \\r
+               xmlobj.h \\r
+               imageobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\flagobj.o flagobj.cpp\r
+\r
+debug/flagrowobj.o: flagrowobj.cpp flagrowobj.h \\r
+               mapobj.h \\r
+               xmlobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               geometry.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\flagrowobj.o flagrowobj.cpp\r
+\r
+debug/floatimageobj.o: floatimageobj.cpp floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               branchobj.h \\r
+               xlinkobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\floatimageobj.o floatimageobj.cpp\r
+\r
+debug/floatobj.o: floatobj.cpp floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\floatobj.o floatobj.cpp\r
+\r
+debug/frameobj.o: frameobj.cpp frameobj.h \\r
+               mapobj.h \\r
+               xmlobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\frameobj.o frameobj.cpp\r
+\r
+debug/geometry.o: geometry.cpp geometry.h \\r
+               misc.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\geometry.o geometry.cpp\r
+\r
+debug/headingobj.o: headingobj.cpp headingobj.h \\r
+               mapobj.h \\r
+               xmlobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\headingobj.o headingobj.cpp\r
+\r
+debug/highlighter.o: highlighter.cpp highlighter.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\highlighter.o highlighter.cpp\r
+\r
+debug/historywindow.o: historywindow.cpp historywindow.h \\r
+               settings.h \\r
+               xmlobj.h \\r
+               ui_historywindow.h \\r
+               mainwindow.h \\r
+               branchpropwindow.h \\r
+               ui_branchpropwindow.h \\r
+               attributedelegate.h \\r
+               attribute.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               vymmodel.h \\r
+               mapcenterobj.h \\r
+               findwindow.h \\r
+               simplescripteditor.h \\r
+               ui_simplescripteditor.h \\r
+               highlighter.h \\r
+               texteditor.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\historywindow.o historywindow.cpp\r
+\r
+debug/imageobj.o: imageobj.cpp imageobj.h \\r
+               mapobj.h \\r
+               xmlobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\imageobj.o imageobj.cpp\r
+\r
+debug/imports.o: imports.cpp file.h \\r
+               imports.h \\r
+               mapcenterobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               settings.h \\r
+               misc.h \\r
+               mainwindow.h \\r
+               branchpropwindow.h \\r
+               ui_branchpropwindow.h \\r
+               attributedelegate.h \\r
+               mapeditor.h \\r
+               parser.h \\r
+               selection.h \\r
+               vymmodel.h \\r
+               findwindow.h \\r
+               historywindow.h \\r
+               ui_historywindow.h \\r
+               simplescripteditor.h \\r
+               ui_simplescripteditor.h \\r
+               highlighter.h \\r
+               texteditor.h \\r
+               xsltproc.h \\r
+               showtextdialog.h \\r
+               ui_showtextdialog.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\imports.o imports.cpp\r
+\r
+debug/linkablemapobj.o: linkablemapobj.cpp linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               xmlobj.h \\r
+               headingobj.h \\r
+               mapobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               frameobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               mapcenterobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\linkablemapobj.o linkablemapobj.cpp\r
+\r
+debug/main.o: main.cpp flagrowobj.h \\r
+               mapobj.h \\r
+               xmlobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               mainwindow.h \\r
+               branchpropwindow.h \\r
+               ui_branchpropwindow.h \\r
+               attributedelegate.h \\r
+               attribute.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               frameobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               mapcenterobj.h \\r
+               findwindow.h \\r
+               historywindow.h \\r
+               ui_historywindow.h \\r
+               simplescripteditor.h \\r
+               ui_simplescripteditor.h \\r
+               highlighter.h \\r
+               texteditor.h \\r
+               options.h \\r
+               version.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\main.o main.cpp\r
+\r
+debug/mainwindow.o: mainwindow.cpp mainwindow.h \\r
+               branchpropwindow.h \\r
+               ui_branchpropwindow.h \\r
+               attributedelegate.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               mapcenterobj.h \\r
+               findwindow.h \\r
+               historywindow.h \\r
+               ui_historywindow.h \\r
+               simplescripteditor.h \\r
+               ui_simplescripteditor.h \\r
+               highlighter.h \\r
+               texteditor.h \\r
+               aboutdialog.h \\r
+               exportoofiledialog.h \\r
+               exports.h \\r
+               imports.h \\r
+               options.h \\r
+               process.h \\r
+               warningdialog.h \\r
+               ui_warningdialog.h \\r
+               attributedialog.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\mainwindow.o mainwindow.cpp\r
+\r
+debug/mapcenterobj.o: mapcenterobj.cpp floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               geometry.h \\r
+               mapcenterobj.h \\r
+               branchobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\mapcenterobj.o mapcenterobj.cpp\r
+\r
+debug/mapeditor.o: mapeditor.cpp mapeditor.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               ornamentedobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               mapcenterobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               xlinkobj.h \\r
+               editxlinkdialog.h \\r
+               ui_editxlinkdialog.h \\r
+               exports.h \\r
+               exportxhtmldialog.h \\r
+               ui_exportxhtmldialog.h \\r
+               process.h \\r
+               xsltproc.h \\r
+               showtextdialog.h \\r
+               ui_showtextdialog.h \\r
+               extrainfodialog.h \\r
+               ui_extrainfodialog.h \\r
+               mainwindow.h \\r
+               branchpropwindow.h \\r
+               ui_branchpropwindow.h \\r
+               attributedelegate.h \\r
+               findwindow.h \\r
+               historywindow.h \\r
+               ui_historywindow.h \\r
+               simplescripteditor.h \\r
+               ui_simplescripteditor.h \\r
+               highlighter.h \\r
+               texteditor.h \\r
+               warningdialog.h \\r
+               ui_warningdialog.h \\r
+               xml-freemind.h \\r
+               xml-base.h \\r
+               xml-vym.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\mapeditor.o mapeditor.cpp\r
+\r
+debug/mapobj.o: mapobj.cpp mapobj.h \\r
+               xmlobj.h \\r
+               misc.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\mapobj.o mapobj.cpp\r
+\r
+debug/misc.o: misc.cpp misc.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\misc.o misc.cpp\r
+\r
+debug/noteobj.o: noteobj.cpp noteobj.h \\r
+               xmlobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\noteobj.o noteobj.cpp\r
+\r
+debug/options.o: options.cpp options.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\options.o options.cpp\r
+\r
+debug/ornamentedobj.o: ornamentedobj.cpp ornamentedobj.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               texteditor.h \\r
+               mapeditor.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               mapcenterobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               xlinkobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\ornamentedobj.o ornamentedobj.cpp\r
+\r
+debug/parser.o: parser.cpp parser.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\parser.o parser.cpp\r
+\r
+debug/process.o: process.cpp process.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\process.o process.cpp\r
+\r
+debug/selection.o: selection.cpp selection.h \\r
+               mainwindow.h \\r
+               branchpropwindow.h \\r
+               ui_branchpropwindow.h \\r
+               attributedelegate.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               mapcenterobj.h \\r
+               findwindow.h \\r
+               historywindow.h \\r
+               ui_historywindow.h \\r
+               simplescripteditor.h \\r
+               ui_simplescripteditor.h \\r
+               highlighter.h \\r
+               texteditor.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\selection.o selection.cpp\r
+\r
+debug/showtextdialog.o: showtextdialog.cpp showtextdialog.h \\r
+               ui_showtextdialog.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\showtextdialog.o showtextdialog.cpp\r
+\r
+debug/simplescripteditor.o: simplescripteditor.cpp simplescripteditor.h \\r
+               ui_simplescripteditor.h \\r
+               highlighter.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\simplescripteditor.o simplescripteditor.cpp\r
+\r
+debug/texteditor.o: texteditor.cpp texteditor.h \\r
+               noteobj.h \\r
+               xmlobj.h \\r
+               settings.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\texteditor.o texteditor.cpp\r
+\r
+debug/version.o: version.cpp version.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\version.o version.cpp\r
+\r
+debug/vymmodel.o: vymmodel.cpp geometry.h \\r
+               vymmodel.h \\r
+               mapcenterobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               settings.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\vymmodel.o vymmodel.cpp\r
+\r
+debug/xlinkobj.o: xlinkobj.cpp xlinkobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               xmlobj.h \\r
+               headingobj.h \\r
+               mapobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               frameobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\xlinkobj.o xlinkobj.cpp\r
+\r
+debug/xml-base.o: xml-base.cpp xml-base.h \\r
+               file.h \\r
+               mapcenterobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\xml-base.o xml-base.cpp\r
+\r
+debug/xml-vym.o: xml-vym.cpp xml-vym.h \\r
+               xml-base.h \\r
+               file.h \\r
+               mapcenterobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               version.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\xml-vym.o xml-vym.cpp\r
+\r
+debug/xml-freemind.o: xml-freemind.cpp xml-freemind.h \\r
+               xml-base.h \\r
+               file.h \\r
+               mapcenterobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               version.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\xml-freemind.o xml-freemind.cpp\r
+\r
+debug/xmlobj.o: xmlobj.cpp xmlobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\xmlobj.o xmlobj.cpp\r
+\r
+debug/xsltproc.o: xsltproc.cpp xsltproc.h \\r
+               showtextdialog.h \\r
+               ui_showtextdialog.h \\r
+               process.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\xsltproc.o xsltproc.cpp\r
+\r
+debug/settings.o: settings.cpp settings.h \\r
+               xmlobj.h \\r
+               file.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\settings.o settings.cpp\r
+\r
+debug/warningdialog.o: warningdialog.cpp warningdialog.h \\r
+               ui_warningdialog.h \\r
+               settings.h \\r
+               xmlobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\warningdialog.o warningdialog.cpp\r
+\r
+debug/mkdtemp.o: mkdtemp.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\mkdtemp.o mkdtemp.cpp\r
+\r
+debug/moc_aboutdialog.o: debug/moc_aboutdialog.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\moc_aboutdialog.o debug\moc_aboutdialog.cpp\r
+\r
+debug/moc_attributedelegate.o: debug/moc_attributedelegate.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\moc_attributedelegate.o debug\moc_attributedelegate.cpp\r
+\r
+debug/moc_attributedialog.o: debug/moc_attributedialog.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\moc_attributedialog.o debug\moc_attributedialog.cpp\r
+\r
+debug/moc_attributewidget.o: debug/moc_attributewidget.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\moc_attributewidget.o debug\moc_attributewidget.cpp\r
+\r
+debug/moc_branchpropwindow.o: debug/moc_branchpropwindow.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\moc_branchpropwindow.o debug\moc_branchpropwindow.cpp\r
+\r
+debug/moc_editxlinkdialog.o: debug/moc_editxlinkdialog.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\moc_editxlinkdialog.o debug\moc_editxlinkdialog.cpp\r
+\r
+debug/moc_exportoofiledialog.o: debug/moc_exportoofiledialog.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\moc_exportoofiledialog.o debug\moc_exportoofiledialog.cpp\r
+\r
+debug/moc_exportxhtmldialog.o: debug/moc_exportxhtmldialog.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\moc_exportxhtmldialog.o debug\moc_exportxhtmldialog.cpp\r
+\r
+debug/moc_extrainfodialog.o: debug/moc_extrainfodialog.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\moc_extrainfodialog.o debug\moc_extrainfodialog.cpp\r
+\r
+debug/moc_findwindow.o: debug/moc_findwindow.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\moc_findwindow.o debug\moc_findwindow.cpp\r
+\r
+debug/moc_highlighter.o: debug/moc_highlighter.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\moc_highlighter.o debug\moc_highlighter.cpp\r
+\r
+debug/moc_historywindow.o: debug/moc_historywindow.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\moc_historywindow.o debug\moc_historywindow.cpp\r
+\r
+debug/moc_linkablemapobj.o: debug/moc_linkablemapobj.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\moc_linkablemapobj.o debug\moc_linkablemapobj.cpp\r
+\r
+debug/moc_mainwindow.o: debug/moc_mainwindow.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\moc_mainwindow.o debug\moc_mainwindow.cpp\r
+\r
+debug/moc_mapeditor.o: debug/moc_mapeditor.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\moc_mapeditor.o debug\moc_mapeditor.cpp\r
+\r
+debug/moc_process.o: debug/moc_process.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\moc_process.o debug\moc_process.cpp\r
+\r
+debug/moc_showtextdialog.o: debug/moc_showtextdialog.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\moc_showtextdialog.o debug\moc_showtextdialog.cpp\r
+\r
+debug/moc_simplescripteditor.o: debug/moc_simplescripteditor.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\moc_simplescripteditor.o debug\moc_simplescripteditor.cpp\r
+\r
+debug/moc_texteditor.o: debug/moc_texteditor.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\moc_texteditor.o debug\moc_texteditor.cpp\r
+\r
+debug/moc_vymmodel.o: debug/moc_vymmodel.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\moc_vymmodel.o debug\moc_vymmodel.cpp\r
+\r
+debug/moc_warningdialog.o: debug/moc_warningdialog.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\moc_warningdialog.o debug\moc_warningdialog.cpp\r
+\r
+####### Install\r
+\r
+install_target: first FORCE\r
+       @$(CHK_DIR_EXISTS) $(INSTALL_ROOT)\usr\local\bin $(MKDIR) $(INSTALL_ROOT)\usr\local\bin \r
+       -$(INSTALL_FILE) "$(DESTDIR_TARGET)" "$(INSTALL_ROOT)\usr\local\bin\$(TARGET)"\r
+\r
+uninstall_target:  FORCE\r
+       -$(DEL_FILE) "$(INSTALL_ROOT)\usr\local\bin\$(TARGET)"\r
+       -$(DEL_DIR) $(INSTALL_ROOT)\usr\local\bin \r
+\r
+\r
+install_support: first FORCE\r
+       @$(CHK_DIR_EXISTS) $(INSTALL_ROOT)\usr\local\share\vym $(MKDIR) $(INSTALL_ROOT)\usr\local\share\vym \r
+       -$(INSTALL_DIR) c:\vym-1.12.2\styles $(INSTALL_ROOT)\usr\local\share\vym\styles\r
+       -$(INSTALL_DIR) c:\vym-1.12.2\scripts $(INSTALL_ROOT)\usr\local\share\vym\scripts\r
+       -$(INSTALL_DIR) c:\vym-1.12.2\icons $(INSTALL_ROOT)\usr\local\share\vym\icons\r
+       -$(INSTALL_DIR) c:\vym-1.12.2\flags $(INSTALL_ROOT)\usr\local\share\vym\flags\r
+       -$(INSTALL_DIR) c:\vym-1.12.2\lang $(INSTALL_ROOT)\usr\local\share\vym\lang\r
+       -$(INSTALL_DIR) c:\vym-1.12.2\macros $(INSTALL_ROOT)\usr\local\share\vym\macros\r
+       -$(INSTALL_DIR) c:\vym-1.12.2\exports $(INSTALL_ROOT)\usr\local\share\vym\exports\r
+       -$(INSTALL_DIR) c:\vym-1.12.2\demos $(INSTALL_ROOT)\usr\local\share\vym\demos\r
+\r
+\r
+uninstall_support:  FORCE\r
+       -$(DEL_FILE) $(INSTALL_ROOT)\usr\local\share\vym\styles \r
+        -$(DEL_FILE) $(INSTALL_ROOT)\usr\local\share\vym\scripts \r
+        -$(DEL_FILE) $(INSTALL_ROOT)\usr\local\share\vym\icons \r
+        -$(DEL_FILE) $(INSTALL_ROOT)\usr\local\share\vym\flags \r
+        -$(DEL_FILE) $(INSTALL_ROOT)\usr\local\share\vym\lang \r
+        -$(DEL_FILE) $(INSTALL_ROOT)\usr\local\share\vym\macros \r
+        -$(DEL_FILE) $(INSTALL_ROOT)\usr\local\share\vym\exports \r
+        -$(DEL_FILE) $(INSTALL_ROOT)\usr\local\share\vym\demos\r
+       -$(DEL_DIR) $(INSTALL_ROOT)\usr\local\share\vym \r
+\r
+\r
+install_doc: first FORCE\r
+       @$(CHK_DIR_EXISTS) $(INSTALL_ROOT)\usr\local\share\doc\packages\vym $(MKDIR) $(INSTALL_ROOT)\usr\local\share\doc\packages\vym \r
+       -$(INSTALL_FILE) c:\vym-1.12.2\doc\vym.pdf $(INSTALL_ROOT)\usr\local\share\doc\packages\vym\r
+\r
+\r
+uninstall_doc:  FORCE\r
+       -$(DEL_FILE) $(INSTALL_ROOT)\usr\local\share\doc\packages\vym\vym.pdf\r
+       -$(DEL_DIR) $(INSTALL_ROOT)\usr\local\share\doc\packages\vym \r
+\r
+\r
+install:  install_target install_support install_doc  FORCE\r
+\r
+uninstall: uninstall_target uninstall_support uninstall_doc   FORCE\r
+\r
+FORCE:\r
+\r
diff --git a/Makefile.Release b/Makefile.Release
new file mode 100644 (file)
index 0000000..4dc7ca0
--- /dev/null
@@ -0,0 +1,1477 @@
+#############################################################################\r
+# Makefile for building: vym\r
+# Generated by qmake (2.01a) (Qt 4.5.0) on: sáb 24. out 08:26:41 2009\r
+# Project:  vym.pro\r
+# Template: app\r
+#############################################################################\r
+\r
+####### Compiler, tools and options\r
+\r
+CC            = gcc\r
+CXX           = g++\r
+DEFINES       = -DUNICODE -DQT_LARGEFILE_SUPPORT -D_USE_MATH_DEFINES -DVYM_DOCDIR=\"/usr/local/share/doc/packages/vym\" -DQT_DLL -DQT_NO_DEBUG -DQT_QT3SUPPORT_LIB -DQT3_SUPPORT -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN\r
+CFLAGS        = -O2 -Wall $(DEFINES)\r
+CXXFLAGS      = -O2 -Wall -frtti -fexceptions -mthreads $(DEFINES)\r
+INCPATH       = -I"..\Qt\2009.01\qt\include\QtCore" -I"..\Qt\2009.01\qt\include\QtNetwork" -I"..\Qt\2009.01\qt\include\QtGui" -I"..\Qt\2009.01\qt\include\QtXml" -I"..\Qt\2009.01\qt\include\Qt3Support" -I"..\Qt\2009.01\qt\include" -I"..\Qt\2009.01\qt\include\ActiveQt" -I"release" -I"." -I"..\Qt\2009.01\qt\mkspecs\win32-g++"\r
+LINK        =        g++\r
+LFLAGS        =        -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -mthreads -Wl -Wl,-subsystem,windows\r
+LIBS        =        -L"c:\Qt\2009.01\qt\lib" -lmingw32 -lqtmain release\vym_res.o -lQt3Support4 -lQtXml4 -lQtGui4 -lQtNetwork4 -lQtCore4\r
+QMAKE         = c:\Qt\2009.01\qt\bin\qmake.exe\r
+IDC           = c:\Qt\2009.01\qt\bin\idc.exe\r
+IDL           = midl\r
+ZIP           = zip -r -9\r
+DEF_FILE      = \r
+RES_FILE      = release\vym_res.o\r
+COPY          = copy /y\r
+COPY_FILE     = $(COPY)\r
+COPY_DIR      = xcopy /s /q /y /i\r
+DEL_FILE      = del\r
+DEL_DIR       = rmdir\r
+MOVE          = move\r
+CHK_DIR_EXISTS= if not exist\r
+MKDIR         = mkdir\r
+INSTALL_FILE    = $(COPY_FILE)\r
+INSTALL_PROGRAM = $(COPY_FILE)\r
+INSTALL_DIR     = $(COPY_DIR)\r
+\r
+####### Output directory\r
+\r
+OBJECTS_DIR   = release\r
+\r
+####### Files\r
+\r
+SOURCES       = aboutdialog.cpp \\r
+               animpoint.cpp \\r
+               attribute.cpp \\r
+               attributedelegate.cpp \\r
+               attributedialog.cpp \\r
+               attributewidget.cpp \\r
+               branchobj.cpp \\r
+               branchpropwindow.cpp \\r
+               editxlinkdialog.cpp \\r
+               exportoofiledialog.cpp \\r
+               exports.cpp \\r
+               exportxhtmldialog.cpp \\r
+               extrainfodialog.cpp \\r
+               file.cpp \\r
+               findwindow.cpp \\r
+               flagobj.cpp \\r
+               flagrowobj.cpp \\r
+               floatimageobj.cpp \\r
+               floatobj.cpp \\r
+               frameobj.cpp \\r
+               geometry.cpp \\r
+               headingobj.cpp \\r
+               highlighter.cpp \\r
+               historywindow.cpp \\r
+               imageobj.cpp \\r
+               imports.cpp \\r
+               linkablemapobj.cpp \\r
+               main.cpp \\r
+               mainwindow.cpp \\r
+               mapcenterobj.cpp \\r
+               mapeditor.cpp \\r
+               mapobj.cpp \\r
+               misc.cpp \\r
+               noteobj.cpp \\r
+               options.cpp \\r
+               ornamentedobj.cpp \\r
+               parser.cpp \\r
+               process.cpp \\r
+               selection.cpp \\r
+               showtextdialog.cpp \\r
+               simplescripteditor.cpp \\r
+               texteditor.cpp \\r
+               version.cpp \\r
+               vymmodel.cpp \\r
+               xlinkobj.cpp \\r
+               xml-base.cpp \\r
+               xml-vym.cpp \\r
+               xml-freemind.cpp \\r
+               xmlobj.cpp \\r
+               xsltproc.cpp \\r
+               settings.cpp \\r
+               warningdialog.cpp \\r
+               mkdtemp.cpp release\moc_aboutdialog.cpp \\r
+               release\moc_attributedelegate.cpp \\r
+               release\moc_attributedialog.cpp \\r
+               release\moc_attributewidget.cpp \\r
+               release\moc_branchpropwindow.cpp \\r
+               release\moc_editxlinkdialog.cpp \\r
+               release\moc_exportoofiledialog.cpp \\r
+               release\moc_exportxhtmldialog.cpp \\r
+               release\moc_extrainfodialog.cpp \\r
+               release\moc_findwindow.cpp \\r
+               release\moc_highlighter.cpp \\r
+               release\moc_historywindow.cpp \\r
+               release\moc_linkablemapobj.cpp \\r
+               release\moc_mainwindow.cpp \\r
+               release\moc_mapeditor.cpp \\r
+               release\moc_process.cpp \\r
+               release\moc_showtextdialog.cpp \\r
+               release\moc_simplescripteditor.cpp \\r
+               release\moc_texteditor.cpp \\r
+               release\moc_vymmodel.cpp \\r
+               release\moc_warningdialog.cpp\r
+OBJECTS       = release/aboutdialog.o \\r
+               release/animpoint.o \\r
+               release/attribute.o \\r
+               release/attributedelegate.o \\r
+               release/attributedialog.o \\r
+               release/attributewidget.o \\r
+               release/branchobj.o \\r
+               release/branchpropwindow.o \\r
+               release/editxlinkdialog.o \\r
+               release/exportoofiledialog.o \\r
+               release/exports.o \\r
+               release/exportxhtmldialog.o \\r
+               release/extrainfodialog.o \\r
+               release/file.o \\r
+               release/findwindow.o \\r
+               release/flagobj.o \\r
+               release/flagrowobj.o \\r
+               release/floatimageobj.o \\r
+               release/floatobj.o \\r
+               release/frameobj.o \\r
+               release/geometry.o \\r
+               release/headingobj.o \\r
+               release/highlighter.o \\r
+               release/historywindow.o \\r
+               release/imageobj.o \\r
+               release/imports.o \\r
+               release/linkablemapobj.o \\r
+               release/main.o \\r
+               release/mainwindow.o \\r
+               release/mapcenterobj.o \\r
+               release/mapeditor.o \\r
+               release/mapobj.o \\r
+               release/misc.o \\r
+               release/noteobj.o \\r
+               release/options.o \\r
+               release/ornamentedobj.o \\r
+               release/parser.o \\r
+               release/process.o \\r
+               release/selection.o \\r
+               release/showtextdialog.o \\r
+               release/simplescripteditor.o \\r
+               release/texteditor.o \\r
+               release/version.o \\r
+               release/vymmodel.o \\r
+               release/xlinkobj.o \\r
+               release/xml-base.o \\r
+               release/xml-vym.o \\r
+               release/xml-freemind.o \\r
+               release/xmlobj.o \\r
+               release/xsltproc.o \\r
+               release/settings.o \\r
+               release/warningdialog.o \\r
+               release/mkdtemp.o \\r
+               release/moc_aboutdialog.o \\r
+               release/moc_attributedelegate.o \\r
+               release/moc_attributedialog.o \\r
+               release/moc_attributewidget.o \\r
+               release/moc_branchpropwindow.o \\r
+               release/moc_editxlinkdialog.o \\r
+               release/moc_exportoofiledialog.o \\r
+               release/moc_exportxhtmldialog.o \\r
+               release/moc_extrainfodialog.o \\r
+               release/moc_findwindow.o \\r
+               release/moc_highlighter.o \\r
+               release/moc_historywindow.o \\r
+               release/moc_linkablemapobj.o \\r
+               release/moc_mainwindow.o \\r
+               release/moc_mapeditor.o \\r
+               release/moc_process.o \\r
+               release/moc_showtextdialog.o \\r
+               release/moc_simplescripteditor.o \\r
+               release/moc_texteditor.o \\r
+               release/moc_vymmodel.o \\r
+               release/moc_warningdialog.o\r
+DIST          = \r
+QMAKE_TARGET  = vym\r
+DESTDIR        = release\ #avoid trailing-slash linebreak\r
+TARGET         = vym.exe\r
+DESTDIR_TARGET = release\vym.exe\r
+\r
+####### Implicit rules\r
+\r
+.SUFFIXES: .cpp .cc .cxx .c\r
+\r
+.cpp.o:\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<\r
+\r
+.cc.o:\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<\r
+\r
+.cxx.o:\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<\r
+\r
+.c.o:\r
+       $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<\r
+\r
+####### Build rules\r
+\r
+first: all\r
+all: Makefile.Release  $(DESTDIR_TARGET)\r
+\r
+$(DESTDIR_TARGET): ui_attributewidget.h ui_branchpropwindow.h ui_exportxhtmldialog.h ui_extrainfodialog.h ui_editxlinkdialog.h ui_historywindow.h ui_simplescripteditor.h ui_showtextdialog.h ui_warningdialog.h $(OBJECTS) release/vym_res.o\r
+       $(LINK) $(LFLAGS) -o $(DESTDIR_TARGET) object_script.vym.Release  $(LIBS)\r
+\r
+\r
+release/vym_res.o: vym.rc\r
+       windres -i vym.rc -o release\vym_res.o --include-dir=.\r
+\r
+qmake:  FORCE\r
+       @$(QMAKE) -spec ..\Qt\2009.01\qt\mkspecs\win32-g++ -win32 -o Makefile.Release vym.pro\r
+\r
+dist:\r
+       $(ZIP) vym.zip $(SOURCES) $(DIST) vym.pro ..\Qt\2009.01\qt\mkspecs\qconfig.pri ..\Qt\2009.01\qt\mkspecs\features\qt_functions.prf ..\Qt\2009.01\qt\mkspecs\features\qt_config.prf ..\Qt\2009.01\qt\mkspecs\features\exclusive_builds.prf ..\Qt\2009.01\qt\mkspecs\features\default_pre.prf ..\Qt\2009.01\qt\mkspecs\features\win32\default_pre.prf ..\Qt\2009.01\qt\mkspecs\features\release.prf ..\Qt\2009.01\qt\mkspecs\features\debug_and_release.prf ..\Qt\2009.01\qt\mkspecs\features\default_post.prf ..\Qt\2009.01\qt\mkspecs\features\win32\default_post.prf ..\Qt\2009.01\qt\mkspecs\features\build_pass.prf ..\Qt\2009.01\qt\mkspecs\features\win32\embed_manifest_exe.prf ..\Qt\2009.01\qt\mkspecs\features\warn_on.prf ..\Qt\2009.01\qt\mkspecs\features\qt.prf ..\Qt\2009.01\qt\mkspecs\features\win32\thread.prf ..\Qt\2009.01\qt\mkspecs\features\moc.prf ..\Qt\2009.01\qt\mkspecs\features\win32\rtti.prf ..\Qt\2009.01\qt\mkspecs\features\win32\exceptions.prf ..\Qt\2009.01\qt\mkspecs\features\win32\stl.prf ..\Qt\2009.01\qt\mkspecs\features\shared.prf ..\Qt\2009.01\qt\mkspecs\features\win32\windows.prf ..\Qt\2009.01\qt\mkspecs\features\resources.prf ..\Qt\2009.01\qt\mkspecs\features\uic.prf ..\Qt\2009.01\qt\mkspecs\features\yacc.prf ..\Qt\2009.01\qt\mkspecs\features\lex.prf c:\Qt\2009.01\qt\lib\qtmain.prl lang\vym_de.ts lang\vym_en.ts lang\vym_es.ts lang\vym_fr.ts lang\vym_it.ts lang\vym_pt_BR.ts lang\vym_ru.ts lang\vym_zh_CN.ts lang\vym_de.ts lang\vym_en.ts lang\vym_es.ts lang\vym_fr.ts lang\vym_it.ts lang\vym_pt_BR.ts lang\vym_ru.ts lang\vym_zh_CN.ts HEADERS RESOURCES IMAGES SOURCES OBJECTIVE_SOURCES FORMS YACCSOURCES YACCSOURCES LEXSOURCES \r
+\r
+clean: compiler_clean \r
+       -$(DEL_FILE) release\aboutdialog.o release\animpoint.o release\attribute.o release\attributedelegate.o release\attributedialog.o release\attributewidget.o release\branchobj.o release\branchpropwindow.o release\editxlinkdialog.o release\exportoofiledialog.o release\exports.o release\exportxhtmldialog.o release\extrainfodialog.o release\file.o release\findwindow.o release\flagobj.o release\flagrowobj.o release\floatimageobj.o release\floatobj.o release\frameobj.o release\geometry.o release\headingobj.o release\highlighter.o release\historywindow.o release\imageobj.o release\imports.o release\linkablemapobj.o release\main.o release\mainwindow.o release\mapcenterobj.o release\mapeditor.o release\mapobj.o release\misc.o release\noteobj.o release\options.o release\ornamentedobj.o release\parser.o release\process.o release\selection.o release\showtextdialog.o release\simplescripteditor.o release\texteditor.o release\version.o release\vymmodel.o release\xlinkobj.o release\xml-base.o release\xml-vym.o release\xml-freemind.o release\xmlobj.o release\xsltproc.o release\settings.o release\warningdialog.o release\mkdtemp.o release\moc_aboutdialog.o release\moc_attributedelegate.o release\moc_attributedialog.o release\moc_attributewidget.o release\moc_branchpropwindow.o release\moc_editxlinkdialog.o release\moc_exportoofiledialog.o release\moc_exportxhtmldialog.o release\moc_extrainfodialog.o release\moc_findwindow.o release\moc_highlighter.o release\moc_historywindow.o release\moc_linkablemapobj.o release\moc_mainwindow.o release\moc_mapeditor.o release\moc_process.o release\moc_showtextdialog.o release\moc_simplescripteditor.o release\moc_texteditor.o release\moc_vymmodel.o release\moc_warningdialog.o\r
+       -$(DEL_FILE) release\vym_res.o\r
+\r
+distclean: clean\r
+       -$(DEL_FILE) $(DESTDIR_TARGET)\r
+       -$(DEL_FILE) Makefile.Release\r
+\r
+mocclean: compiler_moc_header_clean compiler_moc_source_clean\r
+\r
+mocables: compiler_moc_header_make_all compiler_moc_source_make_all\r
+\r
+compiler_moc_header_make_all: release/moc_aboutdialog.cpp release/moc_attributedelegate.cpp release/moc_attributedialog.cpp release/moc_attributewidget.cpp release/moc_branchpropwindow.cpp release/moc_editxlinkdialog.cpp release/moc_exportoofiledialog.cpp release/moc_exportxhtmldialog.cpp release/moc_extrainfodialog.cpp release/moc_findwindow.cpp release/moc_highlighter.cpp release/moc_historywindow.cpp release/moc_linkablemapobj.cpp release/moc_mainwindow.cpp release/moc_mapeditor.cpp release/moc_process.cpp release/moc_showtextdialog.cpp release/moc_simplescripteditor.cpp release/moc_texteditor.cpp release/moc_vymmodel.cpp release/moc_warningdialog.cpp\r
+compiler_moc_header_clean:\r
+       -$(DEL_FILE) release\moc_aboutdialog.cpp release\moc_attributedelegate.cpp release\moc_attributedialog.cpp release\moc_attributewidget.cpp release\moc_branchpropwindow.cpp release\moc_editxlinkdialog.cpp release\moc_exportoofiledialog.cpp release\moc_exportxhtmldialog.cpp release\moc_extrainfodialog.cpp release\moc_findwindow.cpp release\moc_highlighter.cpp release\moc_historywindow.cpp release\moc_linkablemapobj.cpp release\moc_mainwindow.cpp release\moc_mapeditor.cpp release\moc_process.cpp release\moc_showtextdialog.cpp release\moc_simplescripteditor.cpp release\moc_texteditor.cpp release\moc_vymmodel.cpp release\moc_warningdialog.cpp\r
+release/moc_aboutdialog.cpp: aboutdialog.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 aboutdialog.h -o release\moc_aboutdialog.cpp\r
+\r
+release/moc_attributedelegate.cpp: attribute.h \\r
+               xmlobj.h \\r
+               attributedelegate.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 attributedelegate.h -o release\moc_attributedelegate.cpp\r
+\r
+release/moc_attributedialog.cpp: attribute.h \\r
+               xmlobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               attributedialog.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 attributedialog.h -o release\moc_attributedialog.cpp\r
+\r
+release/moc_attributewidget.cpp: ui_attributewidget.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               attributewidget.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 attributewidget.h -o release\moc_attributewidget.cpp\r
+\r
+release/moc_branchpropwindow.cpp: ui_branchpropwindow.h \\r
+               attributedelegate.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               mapcenterobj.h \\r
+               branchpropwindow.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 branchpropwindow.h -o release\moc_branchpropwindow.cpp\r
+\r
+release/moc_editxlinkdialog.cpp: ui_editxlinkdialog.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               xmlobj.h \\r
+               headingobj.h \\r
+               mapobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               mapcenterobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               frameobj.h \\r
+               xlinkobj.h \\r
+               editxlinkdialog.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 editxlinkdialog.h -o release\moc_editxlinkdialog.cpp\r
+\r
+release/moc_exportoofiledialog.cpp: settings.h \\r
+               xmlobj.h \\r
+               exportoofiledialog.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 exportoofiledialog.h -o release\moc_exportoofiledialog.cpp\r
+\r
+release/moc_exportxhtmldialog.cpp: ui_exportxhtmldialog.h \\r
+               process.h \\r
+               xsltproc.h \\r
+               showtextdialog.h \\r
+               ui_showtextdialog.h \\r
+               exportxhtmldialog.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 exportxhtmldialog.h -o release\moc_exportxhtmldialog.cpp\r
+\r
+release/moc_extrainfodialog.cpp: ui_extrainfodialog.h \\r
+               extrainfodialog.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 extrainfodialog.h -o release\moc_extrainfodialog.cpp\r
+\r
+release/moc_findwindow.cpp: findwindow.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 findwindow.h -o release\moc_findwindow.cpp\r
+\r
+release/moc_highlighter.cpp: highlighter.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 highlighter.h -o release\moc_highlighter.cpp\r
+\r
+release/moc_historywindow.cpp: settings.h \\r
+               xmlobj.h \\r
+               ui_historywindow.h \\r
+               historywindow.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 historywindow.h -o release\moc_historywindow.cpp\r
+\r
+release/moc_linkablemapobj.cpp: animpoint.h \\r
+               noteobj.h \\r
+               xmlobj.h \\r
+               headingobj.h \\r
+               mapobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               linkablemapobj.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 linkablemapobj.h -o release\moc_linkablemapobj.cpp\r
+\r
+release/moc_mainwindow.cpp: branchpropwindow.h \\r
+               ui_branchpropwindow.h \\r
+               attributedelegate.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               mapcenterobj.h \\r
+               findwindow.h \\r
+               historywindow.h \\r
+               ui_historywindow.h \\r
+               simplescripteditor.h \\r
+               ui_simplescripteditor.h \\r
+               highlighter.h \\r
+               texteditor.h \\r
+               mainwindow.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 mainwindow.h -o release\moc_mainwindow.cpp\r
+\r
+release/moc_mapeditor.cpp: attribute.h \\r
+               xmlobj.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               ornamentedobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               mapcenterobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               mapeditor.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 mapeditor.h -o release\moc_mapeditor.cpp\r
+\r
+release/moc_process.cpp: process.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 process.h -o release\moc_process.cpp\r
+\r
+release/moc_showtextdialog.cpp: ui_showtextdialog.h \\r
+               showtextdialog.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 showtextdialog.h -o release\moc_showtextdialog.cpp\r
+\r
+release/moc_simplescripteditor.cpp: ui_simplescripteditor.h \\r
+               highlighter.h \\r
+               simplescripteditor.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 simplescripteditor.h -o release\moc_simplescripteditor.cpp\r
+\r
+release/moc_texteditor.cpp: texteditor.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 texteditor.h -o release\moc_texteditor.cpp\r
+\r
+release/moc_vymmodel.cpp: mapcenterobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               vymmodel.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 vymmodel.h -o release\moc_vymmodel.cpp\r
+\r
+release/moc_warningdialog.cpp: ui_warningdialog.h \\r
+               warningdialog.h\r
+       c:/Qt/2009.01/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 warningdialog.h -o release\moc_warningdialog.cpp\r
+\r
+compiler_rcc_make_all:\r
+compiler_rcc_clean:\r
+compiler_image_collection_make_all: qmake_image_collection.cpp\r
+compiler_image_collection_clean:\r
+       -$(DEL_FILE) qmake_image_collection.cpp\r
+compiler_moc_source_make_all:\r
+compiler_moc_source_clean:\r
+compiler_uic_make_all: ui_attributewidget.h ui_branchpropwindow.h ui_exportxhtmldialog.h ui_extrainfodialog.h ui_editxlinkdialog.h ui_historywindow.h ui_simplescripteditor.h ui_showtextdialog.h ui_warningdialog.h\r
+compiler_uic_clean:\r
+       -$(DEL_FILE) ui_attributewidget.h ui_branchpropwindow.h ui_exportxhtmldialog.h ui_extrainfodialog.h ui_editxlinkdialog.h ui_historywindow.h ui_simplescripteditor.h ui_showtextdialog.h ui_warningdialog.h\r
+ui_attributewidget.h: attributewidget.ui\r
+       c:\Qt\2009.01\qt\bin\uic.exe attributewidget.ui -o ui_attributewidget.h\r
+\r
+ui_branchpropwindow.h: branchpropwindow.ui\r
+       c:\Qt\2009.01\qt\bin\uic.exe branchpropwindow.ui -o ui_branchpropwindow.h\r
+\r
+ui_exportxhtmldialog.h: exportxhtmldialog.ui \\r
+               xsltproc.h \\r
+               process.h \\r
+               showtextdialog.h \\r
+               ui_showtextdialog.h\r
+       c:\Qt\2009.01\qt\bin\uic.exe exportxhtmldialog.ui -o ui_exportxhtmldialog.h\r
+\r
+ui_extrainfodialog.h: extrainfodialog.ui\r
+       c:\Qt\2009.01\qt\bin\uic.exe extrainfodialog.ui -o ui_extrainfodialog.h\r
+\r
+ui_editxlinkdialog.h: editxlinkdialog.ui \\r
+               xlinkobj.h \\r
+               mapcenterobj.h \\r
+               linkablemapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               xmlobj.h \\r
+               headingobj.h \\r
+               mapobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               xmlobj.h \\r
+               headingobj.h \\r
+               mapobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h\r
+       c:\Qt\2009.01\qt\bin\uic.exe editxlinkdialog.ui -o ui_editxlinkdialog.h\r
+\r
+ui_historywindow.h: historywindow.ui\r
+       c:\Qt\2009.01\qt\bin\uic.exe historywindow.ui -o ui_historywindow.h\r
+\r
+ui_simplescripteditor.h: simplescripteditor.ui\r
+       c:\Qt\2009.01\qt\bin\uic.exe simplescripteditor.ui -o ui_simplescripteditor.h\r
+\r
+ui_showtextdialog.h: showtextdialog.ui\r
+       c:\Qt\2009.01\qt\bin\uic.exe showtextdialog.ui -o ui_showtextdialog.h\r
+\r
+ui_warningdialog.h: warningdialog.ui\r
+       c:\Qt\2009.01\qt\bin\uic.exe warningdialog.ui -o ui_warningdialog.h\r
+\r
+compiler_yacc_decl_make_all:\r
+compiler_yacc_decl_clean:\r
+compiler_yacc_impl_make_all:\r
+compiler_yacc_impl_clean:\r
+compiler_lex_make_all:\r
+compiler_lex_clean:\r
+compiler_clean: compiler_moc_header_clean compiler_uic_clean \r
+\r
+\r
+\r
+####### Compile\r
+\r
+release/aboutdialog.o: aboutdialog.cpp aboutdialog.h \\r
+               settings.h \\r
+               xmlobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\aboutdialog.o aboutdialog.cpp\r
+\r
+release/animpoint.o: animpoint.cpp animpoint.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\animpoint.o animpoint.cpp\r
+\r
+release/attribute.o: attribute.cpp attribute.h \\r
+               xmlobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\attribute.o attribute.cpp\r
+\r
+release/attributedelegate.o: attributedelegate.cpp attributedelegate.h \\r
+               attribute.h \\r
+               xmlobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\attributedelegate.o attributedelegate.cpp\r
+\r
+release/attributedialog.o: attributedialog.cpp attributedialog.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               attributewidget.h \\r
+               ui_attributewidget.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\attributedialog.o attributedialog.cpp\r
+\r
+release/attributewidget.o: attributewidget.cpp attributewidget.h \\r
+               ui_attributewidget.h \\r
+               attribute.h \\r
+               xmlobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\attributewidget.o attributewidget.cpp\r
+\r
+release/branchobj.o: branchobj.cpp branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               geometry.h \\r
+               mapeditor.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               mapcenterobj.h \\r
+               mainwindow.h \\r
+               branchpropwindow.h \\r
+               ui_branchpropwindow.h \\r
+               attributedelegate.h \\r
+               findwindow.h \\r
+               historywindow.h \\r
+               ui_historywindow.h \\r
+               simplescripteditor.h \\r
+               ui_simplescripteditor.h \\r
+               highlighter.h \\r
+               texteditor.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\branchobj.o branchobj.cpp\r
+\r
+release/branchpropwindow.o: branchpropwindow.cpp branchpropwindow.h \\r
+               ui_branchpropwindow.h \\r
+               attributedelegate.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               mapcenterobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\branchpropwindow.o branchpropwindow.cpp\r
+\r
+release/editxlinkdialog.o: editxlinkdialog.cpp editxlinkdialog.h \\r
+               ui_editxlinkdialog.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               xmlobj.h \\r
+               headingobj.h \\r
+               mapobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               mapcenterobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               frameobj.h \\r
+               xlinkobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\editxlinkdialog.o editxlinkdialog.cpp\r
+\r
+release/exportoofiledialog.o: exportoofiledialog.cpp exportoofiledialog.h \\r
+               settings.h \\r
+               xmlobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\exportoofiledialog.o exportoofiledialog.cpp\r
+\r
+release/exports.o: exports.cpp exports.h \\r
+               mapcenterobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               mapeditor.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               mainwindow.h \\r
+               branchpropwindow.h \\r
+               ui_branchpropwindow.h \\r
+               attributedelegate.h \\r
+               findwindow.h \\r
+               historywindow.h \\r
+               ui_historywindow.h \\r
+               simplescripteditor.h \\r
+               ui_simplescripteditor.h \\r
+               highlighter.h \\r
+               texteditor.h \\r
+               warningdialog.h \\r
+               ui_warningdialog.h \\r
+               xsltproc.h \\r
+               showtextdialog.h \\r
+               ui_showtextdialog.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\exports.o exports.cpp\r
+\r
+release/exportxhtmldialog.o: exportxhtmldialog.cpp exportxhtmldialog.h \\r
+               ui_exportxhtmldialog.h \\r
+               process.h \\r
+               xsltproc.h \\r
+               showtextdialog.h \\r
+               ui_showtextdialog.h \\r
+               options.h \\r
+               settings.h \\r
+               xmlobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\exportxhtmldialog.o exportxhtmldialog.cpp\r
+\r
+release/extrainfodialog.o: extrainfodialog.cpp extrainfodialog.h \\r
+               ui_extrainfodialog.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\extrainfodialog.o extrainfodialog.cpp\r
+\r
+release/file.o: file.cpp file.h \\r
+               process.h \\r
+               mkdtemp.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\file.o file.cpp\r
+\r
+release/findwindow.o: findwindow.cpp findwindow.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\findwindow.o findwindow.cpp\r
+\r
+release/flagobj.o: flagobj.cpp flagobj.h \\r
+               mapobj.h \\r
+               xmlobj.h \\r
+               imageobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\flagobj.o flagobj.cpp\r
+\r
+release/flagrowobj.o: flagrowobj.cpp flagrowobj.h \\r
+               mapobj.h \\r
+               xmlobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               geometry.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\flagrowobj.o flagrowobj.cpp\r
+\r
+release/floatimageobj.o: floatimageobj.cpp floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               branchobj.h \\r
+               xlinkobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\floatimageobj.o floatimageobj.cpp\r
+\r
+release/floatobj.o: floatobj.cpp floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\floatobj.o floatobj.cpp\r
+\r
+release/frameobj.o: frameobj.cpp frameobj.h \\r
+               mapobj.h \\r
+               xmlobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\frameobj.o frameobj.cpp\r
+\r
+release/geometry.o: geometry.cpp geometry.h \\r
+               misc.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\geometry.o geometry.cpp\r
+\r
+release/headingobj.o: headingobj.cpp headingobj.h \\r
+               mapobj.h \\r
+               xmlobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\headingobj.o headingobj.cpp\r
+\r
+release/highlighter.o: highlighter.cpp highlighter.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\highlighter.o highlighter.cpp\r
+\r
+release/historywindow.o: historywindow.cpp historywindow.h \\r
+               settings.h \\r
+               xmlobj.h \\r
+               ui_historywindow.h \\r
+               mainwindow.h \\r
+               branchpropwindow.h \\r
+               ui_branchpropwindow.h \\r
+               attributedelegate.h \\r
+               attribute.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               vymmodel.h \\r
+               mapcenterobj.h \\r
+               findwindow.h \\r
+               simplescripteditor.h \\r
+               ui_simplescripteditor.h \\r
+               highlighter.h \\r
+               texteditor.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\historywindow.o historywindow.cpp\r
+\r
+release/imageobj.o: imageobj.cpp imageobj.h \\r
+               mapobj.h \\r
+               xmlobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\imageobj.o imageobj.cpp\r
+\r
+release/imports.o: imports.cpp file.h \\r
+               imports.h \\r
+               mapcenterobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               settings.h \\r
+               misc.h \\r
+               mainwindow.h \\r
+               branchpropwindow.h \\r
+               ui_branchpropwindow.h \\r
+               attributedelegate.h \\r
+               mapeditor.h \\r
+               parser.h \\r
+               selection.h \\r
+               vymmodel.h \\r
+               findwindow.h \\r
+               historywindow.h \\r
+               ui_historywindow.h \\r
+               simplescripteditor.h \\r
+               ui_simplescripteditor.h \\r
+               highlighter.h \\r
+               texteditor.h \\r
+               xsltproc.h \\r
+               showtextdialog.h \\r
+               ui_showtextdialog.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\imports.o imports.cpp\r
+\r
+release/linkablemapobj.o: linkablemapobj.cpp linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               xmlobj.h \\r
+               headingobj.h \\r
+               mapobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               frameobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               mapcenterobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\linkablemapobj.o linkablemapobj.cpp\r
+\r
+release/main.o: main.cpp flagrowobj.h \\r
+               mapobj.h \\r
+               xmlobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               mainwindow.h \\r
+               branchpropwindow.h \\r
+               ui_branchpropwindow.h \\r
+               attributedelegate.h \\r
+               attribute.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               frameobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               mapcenterobj.h \\r
+               findwindow.h \\r
+               historywindow.h \\r
+               ui_historywindow.h \\r
+               simplescripteditor.h \\r
+               ui_simplescripteditor.h \\r
+               highlighter.h \\r
+               texteditor.h \\r
+               options.h \\r
+               version.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\main.o main.cpp\r
+\r
+release/mainwindow.o: mainwindow.cpp mainwindow.h \\r
+               branchpropwindow.h \\r
+               ui_branchpropwindow.h \\r
+               attributedelegate.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               mapcenterobj.h \\r
+               findwindow.h \\r
+               historywindow.h \\r
+               ui_historywindow.h \\r
+               simplescripteditor.h \\r
+               ui_simplescripteditor.h \\r
+               highlighter.h \\r
+               texteditor.h \\r
+               aboutdialog.h \\r
+               exportoofiledialog.h \\r
+               exports.h \\r
+               imports.h \\r
+               options.h \\r
+               process.h \\r
+               warningdialog.h \\r
+               ui_warningdialog.h \\r
+               attributedialog.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\mainwindow.o mainwindow.cpp\r
+\r
+release/mapcenterobj.o: mapcenterobj.cpp floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               geometry.h \\r
+               mapcenterobj.h \\r
+               branchobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\mapcenterobj.o mapcenterobj.cpp\r
+\r
+release/mapeditor.o: mapeditor.cpp mapeditor.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               ornamentedobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               mapcenterobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               xlinkobj.h \\r
+               editxlinkdialog.h \\r
+               ui_editxlinkdialog.h \\r
+               exports.h \\r
+               exportxhtmldialog.h \\r
+               ui_exportxhtmldialog.h \\r
+               process.h \\r
+               xsltproc.h \\r
+               showtextdialog.h \\r
+               ui_showtextdialog.h \\r
+               extrainfodialog.h \\r
+               ui_extrainfodialog.h \\r
+               mainwindow.h \\r
+               branchpropwindow.h \\r
+               ui_branchpropwindow.h \\r
+               attributedelegate.h \\r
+               findwindow.h \\r
+               historywindow.h \\r
+               ui_historywindow.h \\r
+               simplescripteditor.h \\r
+               ui_simplescripteditor.h \\r
+               highlighter.h \\r
+               texteditor.h \\r
+               warningdialog.h \\r
+               ui_warningdialog.h \\r
+               xml-freemind.h \\r
+               xml-base.h \\r
+               xml-vym.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\mapeditor.o mapeditor.cpp\r
+\r
+release/mapobj.o: mapobj.cpp mapobj.h \\r
+               xmlobj.h \\r
+               misc.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\mapobj.o mapobj.cpp\r
+\r
+release/misc.o: misc.cpp misc.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\misc.o misc.cpp\r
+\r
+release/noteobj.o: noteobj.cpp noteobj.h \\r
+               xmlobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\noteobj.o noteobj.cpp\r
+\r
+release/options.o: options.cpp options.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\options.o options.cpp\r
+\r
+release/ornamentedobj.o: ornamentedobj.cpp ornamentedobj.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               texteditor.h \\r
+               mapeditor.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               mapcenterobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               xlinkobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\ornamentedobj.o ornamentedobj.cpp\r
+\r
+release/parser.o: parser.cpp parser.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\parser.o parser.cpp\r
+\r
+release/process.o: process.cpp process.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\process.o process.cpp\r
+\r
+release/selection.o: selection.cpp selection.h \\r
+               mainwindow.h \\r
+               branchpropwindow.h \\r
+               ui_branchpropwindow.h \\r
+               attributedelegate.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               mapcenterobj.h \\r
+               findwindow.h \\r
+               historywindow.h \\r
+               ui_historywindow.h \\r
+               simplescripteditor.h \\r
+               ui_simplescripteditor.h \\r
+               highlighter.h \\r
+               texteditor.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\selection.o selection.cpp\r
+\r
+release/showtextdialog.o: showtextdialog.cpp showtextdialog.h \\r
+               ui_showtextdialog.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\showtextdialog.o showtextdialog.cpp\r
+\r
+release/simplescripteditor.o: simplescripteditor.cpp simplescripteditor.h \\r
+               ui_simplescripteditor.h \\r
+               highlighter.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\simplescripteditor.o simplescripteditor.cpp\r
+\r
+release/texteditor.o: texteditor.cpp texteditor.h \\r
+               noteobj.h \\r
+               xmlobj.h \\r
+               settings.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\texteditor.o texteditor.cpp\r
+\r
+release/version.o: version.cpp version.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\version.o version.cpp\r
+\r
+release/vymmodel.o: vymmodel.cpp geometry.h \\r
+               vymmodel.h \\r
+               mapcenterobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               file.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               settings.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\vymmodel.o vymmodel.cpp\r
+\r
+release/xlinkobj.o: xlinkobj.cpp xlinkobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               xmlobj.h \\r
+               headingobj.h \\r
+               mapobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               frameobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\xlinkobj.o xlinkobj.cpp\r
+\r
+release/xml-base.o: xml-base.cpp xml-base.h \\r
+               file.h \\r
+               mapcenterobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\xml-base.o xml-base.cpp\r
+\r
+release/xml-vym.o: xml-vym.cpp xml-vym.h \\r
+               xml-base.h \\r
+               file.h \\r
+               mapcenterobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               version.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\xml-vym.o xml-vym.cpp\r
+\r
+release/xml-freemind.o: xml-freemind.cpp xml-freemind.h \\r
+               xml-base.h \\r
+               file.h \\r
+               mapcenterobj.h \\r
+               branchobj.h \\r
+               floatimageobj.h \\r
+               floatobj.h \\r
+               ornamentedobj.h \\r
+               attribute.h \\r
+               xmlobj.h \\r
+               frameobj.h \\r
+               mapobj.h \\r
+               linkablemapobj.h \\r
+               animpoint.h \\r
+               noteobj.h \\r
+               headingobj.h \\r
+               flagrowobj.h \\r
+               flagobj.h \\r
+               imageobj.h \\r
+               xlinkobj.h \\r
+               mapeditor.h \\r
+               misc.h \\r
+               parser.h \\r
+               selection.h \\r
+               settings.h \\r
+               vymmodel.h \\r
+               version.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\xml-freemind.o xml-freemind.cpp\r
+\r
+release/xmlobj.o: xmlobj.cpp xmlobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\xmlobj.o xmlobj.cpp\r
+\r
+release/xsltproc.o: xsltproc.cpp xsltproc.h \\r
+               showtextdialog.h \\r
+               ui_showtextdialog.h \\r
+               process.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\xsltproc.o xsltproc.cpp\r
+\r
+release/settings.o: settings.cpp settings.h \\r
+               xmlobj.h \\r
+               file.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\settings.o settings.cpp\r
+\r
+release/warningdialog.o: warningdialog.cpp warningdialog.h \\r
+               ui_warningdialog.h \\r
+               settings.h \\r
+               xmlobj.h\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\warningdialog.o warningdialog.cpp\r
+\r
+release/mkdtemp.o: mkdtemp.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\mkdtemp.o mkdtemp.cpp\r
+\r
+release/moc_aboutdialog.o: release/moc_aboutdialog.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\moc_aboutdialog.o release\moc_aboutdialog.cpp\r
+\r
+release/moc_attributedelegate.o: release/moc_attributedelegate.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\moc_attributedelegate.o release\moc_attributedelegate.cpp\r
+\r
+release/moc_attributedialog.o: release/moc_attributedialog.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\moc_attributedialog.o release\moc_attributedialog.cpp\r
+\r
+release/moc_attributewidget.o: release/moc_attributewidget.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\moc_attributewidget.o release\moc_attributewidget.cpp\r
+\r
+release/moc_branchpropwindow.o: release/moc_branchpropwindow.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\moc_branchpropwindow.o release\moc_branchpropwindow.cpp\r
+\r
+release/moc_editxlinkdialog.o: release/moc_editxlinkdialog.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\moc_editxlinkdialog.o release\moc_editxlinkdialog.cpp\r
+\r
+release/moc_exportoofiledialog.o: release/moc_exportoofiledialog.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\moc_exportoofiledialog.o release\moc_exportoofiledialog.cpp\r
+\r
+release/moc_exportxhtmldialog.o: release/moc_exportxhtmldialog.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\moc_exportxhtmldialog.o release\moc_exportxhtmldialog.cpp\r
+\r
+release/moc_extrainfodialog.o: release/moc_extrainfodialog.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\moc_extrainfodialog.o release\moc_extrainfodialog.cpp\r
+\r
+release/moc_findwindow.o: release/moc_findwindow.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\moc_findwindow.o release\moc_findwindow.cpp\r
+\r
+release/moc_highlighter.o: release/moc_highlighter.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\moc_highlighter.o release\moc_highlighter.cpp\r
+\r
+release/moc_historywindow.o: release/moc_historywindow.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\moc_historywindow.o release\moc_historywindow.cpp\r
+\r
+release/moc_linkablemapobj.o: release/moc_linkablemapobj.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\moc_linkablemapobj.o release\moc_linkablemapobj.cpp\r
+\r
+release/moc_mainwindow.o: release/moc_mainwindow.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\moc_mainwindow.o release\moc_mainwindow.cpp\r
+\r
+release/moc_mapeditor.o: release/moc_mapeditor.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\moc_mapeditor.o release\moc_mapeditor.cpp\r
+\r
+release/moc_process.o: release/moc_process.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\moc_process.o release\moc_process.cpp\r
+\r
+release/moc_showtextdialog.o: release/moc_showtextdialog.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\moc_showtextdialog.o release\moc_showtextdialog.cpp\r
+\r
+release/moc_simplescripteditor.o: release/moc_simplescripteditor.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\moc_simplescripteditor.o release\moc_simplescripteditor.cpp\r
+\r
+release/moc_texteditor.o: release/moc_texteditor.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\moc_texteditor.o release\moc_texteditor.cpp\r
+\r
+release/moc_vymmodel.o: release/moc_vymmodel.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\moc_vymmodel.o release\moc_vymmodel.cpp\r
+\r
+release/moc_warningdialog.o: release/moc_warningdialog.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\moc_warningdialog.o release\moc_warningdialog.cpp\r
+\r
+####### Install\r
+\r
+install_target: first FORCE\r
+       @$(CHK_DIR_EXISTS) $(INSTALL_ROOT)\usr\local\bin $(MKDIR) $(INSTALL_ROOT)\usr\local\bin \r
+       -$(INSTALL_FILE) "$(DESTDIR_TARGET)" "$(INSTALL_ROOT)\usr\local\bin\$(TARGET)"\r
+\r
+uninstall_target:  FORCE\r
+       -$(DEL_FILE) "$(INSTALL_ROOT)\usr\local\bin\$(TARGET)"\r
+       -$(DEL_DIR) $(INSTALL_ROOT)\usr\local\bin \r
+\r
+\r
+install_support: first FORCE\r
+       @$(CHK_DIR_EXISTS) $(INSTALL_ROOT)\usr\local\share\vym $(MKDIR) $(INSTALL_ROOT)\usr\local\share\vym \r
+       -$(INSTALL_DIR) c:\vym-1.12.2\styles $(INSTALL_ROOT)\usr\local\share\vym\styles\r
+       -$(INSTALL_DIR) c:\vym-1.12.2\scripts $(INSTALL_ROOT)\usr\local\share\vym\scripts\r
+       -$(INSTALL_DIR) c:\vym-1.12.2\icons $(INSTALL_ROOT)\usr\local\share\vym\icons\r
+       -$(INSTALL_DIR) c:\vym-1.12.2\flags $(INSTALL_ROOT)\usr\local\share\vym\flags\r
+       -$(INSTALL_DIR) c:\vym-1.12.2\lang $(INSTALL_ROOT)\usr\local\share\vym\lang\r
+       -$(INSTALL_DIR) c:\vym-1.12.2\macros $(INSTALL_ROOT)\usr\local\share\vym\macros\r
+       -$(INSTALL_DIR) c:\vym-1.12.2\exports $(INSTALL_ROOT)\usr\local\share\vym\exports\r
+       -$(INSTALL_DIR) c:\vym-1.12.2\demos $(INSTALL_ROOT)\usr\local\share\vym\demos\r
+\r
+\r
+uninstall_support:  FORCE\r
+       -$(DEL_FILE) $(INSTALL_ROOT)\usr\local\share\vym\styles \r
+        -$(DEL_FILE) $(INSTALL_ROOT)\usr\local\share\vym\scripts \r
+        -$(DEL_FILE) $(INSTALL_ROOT)\usr\local\share\vym\icons \r
+        -$(DEL_FILE) $(INSTALL_ROOT)\usr\local\share\vym\flags \r
+        -$(DEL_FILE) $(INSTALL_ROOT)\usr\local\share\vym\lang \r
+        -$(DEL_FILE) $(INSTALL_ROOT)\usr\local\share\vym\macros \r
+        -$(DEL_FILE) $(INSTALL_ROOT)\usr\local\share\vym\exports \r
+        -$(DEL_FILE) $(INSTALL_ROOT)\usr\local\share\vym\demos\r
+       -$(DEL_DIR) $(INSTALL_ROOT)\usr\local\share\vym \r
+\r
+\r
+install_doc: first FORCE\r
+       @$(CHK_DIR_EXISTS) $(INSTALL_ROOT)\usr\local\share\doc\packages\vym $(MKDIR) $(INSTALL_ROOT)\usr\local\share\doc\packages\vym \r
+       -$(INSTALL_FILE) c:\vym-1.12.2\doc\vym.pdf $(INSTALL_ROOT)\usr\local\share\doc\packages\vym\r
+\r
+\r
+uninstall_doc:  FORCE\r
+       -$(DEL_FILE) $(INSTALL_ROOT)\usr\local\share\doc\packages\vym\vym.pdf\r
+       -$(DEL_DIR) $(INSTALL_ROOT)\usr\local\share\doc\packages\vym \r
+\r
+\r
+install:  install_target install_support install_doc  FORCE\r
+\r
+uninstall: uninstall_target uninstall_support uninstall_doc   FORCE\r
+\r
+FORCE:\r
+\r
diff --git a/README.txt b/README.txt
new file mode 100644 (file)
index 0000000..357c6d3
--- /dev/null
@@ -0,0 +1,159 @@
+VYM - View Your Mind - 1.10.0  (c) 2007 by Uwe Drechsel
+======================================================
+
+
+
+Documentation
+-------------
+
+The complete documentation of vym is available as PDF document in
+english and spanish (1.8.1). It can be accessed directly from vym if a PDF
+viewer is installed. It also can be downloaded from the vym site at
+Sourceforge:
+
+https://sourceforge.net/projects/vym/
+
+
+Versioning scheme
+-----------------
+
+Beginning with this version of vym (1.10.0) the versioning is similar to
+that of the Linux Kernel:
+
+Odd versions (like 1.9, 1.11, ...) are developer versions, the stable
+"public" ones will have 1.10 or 1.12.
+
+
+Questions and feedback
+----------------------
+
+Please direct questions to the mailinglist first: 
+
+       vym-forum@lists.sourceforge.net
+
+
+
+Changelog since 1.8.1
+---------------------
+
+- Feature: Restructured internal handling of XML based maps
+- Feature: Switched from QSimpleTextItem to QTextItem for Freemind
+  support
+- Feature: Import of Freemind maps
+- Feature: Extended fileformat with object IDs to ease export from
+           tomboy to vym
+- Feature: Completed german translation
+- Feature: Center on selection with "."
+- Feature: Most important exports can be scripted now
+- Feature: Creating new map with selection as MapCenter
+- Feature: Simple export to CSV spreadsheet
+- Feature: Copy from past steps in history to current one
+- Feature: Editing of frame attributes in branch property window
+- Feature: autosave
+- Feature: number of undo/redo levels can be changed in settings 
+- Feature: branch property window settings are saved
+- Feature: Added basic macros and documentation
+- Feature: Color of selection can be changed now
+- Feature: Pen and brush for frames can be set
+- Feature: Simple Editor for scripts
+- Feature: Added syntax highlighting for editor
+- Feature: Unscroll all now only affects selected subtree 
+- Feature: Modifier Modes now change cursor when CTRL is pressed 
+- Feature: vym opens spanish documentation, if locale is es*
+- Feature: New Frame format
+- Feature: Properties dialog for branches instead of context menu entries
+- Feature: Only one history window for all editors. State is saved.
+- Feature: Canvas ported to QT 4.2 GraphicsView
+- Feature: Options to use AntiaAliasing and smooth pixmap
+           transformations
+- Feature: Thick links use polygons now, less objects in scene  
+- Feature: More undo commands (and fixes there)
+- Feature: Note Editor completly based on QT4 now.
+- Feature: Opening of all URLs in a subtree
+- Feature: Opening of all vymLinks in a subtree
+- Feature: Changed format of configuration file a bit (new file anyway
+           with introduction of QT4)
+- Feature: Toolbar Layout is saved now
+- Feature: Moved floats in XML Export, e.g. XHTML  shows floatimages at
+
+- Bugfix: Added missing standard flag (one of the smileys got lost)
+- Bugfix: Wrong parsing of relative positions after load of
+          previously zoomed map
+- Bugfix: Smother parabel links (Alexander Rettig)
+- Bugfix: Workaround for wrong XML generated by QT with in QRichText
+          list items
+- Bugfix: No output from <span> tags in ASCII export any longer
+- Bugfix: Don't ask for directory in XML-based exports like
+          KDE-bookmarks
+- Bugfix: auto-select/auto-edit new branches
+- Bugfix: Visibility of BranchProperty window is saved now 
+- Bugfix: Undo/Redo dropping images into map
+- Bugfix: Undo/Redo of copy/paste steps
+- Bugfix: NoteEditor now appears on first click (not 2nd)
+- Bugfix: Disable autosave while there are redos available
+- Bugfix: After changing link color, that color is applied to all links
+          now
+- Bugfix: Pasting of FIOs
+- Bugfix: No selection of branches while editing heading
+- Bugfix: geometry of selection box gets updated while setting scroll or
+          hide flag
+- Bugfix: Possible segfault when redoing deleteChilds()                  
+- Bugfix: autosave timeout now read from settings file
+- Bugfix: Settings for historywindow correclty read now
+- Bugfix: Closing property window toggle corresponding button
+- Bugfix: Unscroll all childs has saveState now
+- Bugfix: Invisible selection after switching mapeditor
+- Bugfix: For frames the links always were drawn at bottom of heading 
+- Bugfix: BranchPropertyWindow updates when selection is changed
+- Bugfix: Crash when trying to temporary link to floatimage 
+- Bugfix: Drawing error when temporary linking subtrees
+- Bugfix: Import of KDE Bookmarks
+- Bugfix: Export to KDE Bookmarks
+- Bugfix: Export to XHTML
+- Bugfix: Drag and Drop of URLs now only creates one branch
+- Bugfix: Remember last directory before  ASCII/LaTeX export
+- Bugfix: Editing in NoteEditor now updates actions (save) again
+- Bugfix: Deleting last branch automatically unscrolls parent now
+- Bugfix: Scroll/Unscroll has undo/redo now
+- Bugfix: xml-parsing code simplified
+- Bugfix: Fixed pretty annoying repositioning of view after editing a
+          heading. (don't call show() before positioning in heading...)
+- Bugfix: Wrong Cursors after pressing CTRL and inserting/relinking
+- Bugfix: Save PNG images with quality 100 to workaround image problems
+- Bugfix: Remember last directory before XML export
+- Bugfix: move branch up/down calls scene()->update() now => much faster
+- Bugfix: Relinking of floatimages undo/redo
+- Bugfix: printing scales correctly again
+- Bugfix: Drag & Drop (basically) works again
+- Bugfix: Crash caused by BranchObj::getLastSelected
+- Bugfix: Signal handling by changes in TextEditor: Much faster now
+- Bugfix: printing is working again
+- Bugfix: move up/down to next subtree is working again
+- Bugfix: Flags are working again
+- Bugfix: Floatimages have correct select box again
+- Bugfix: Image format is saved with floatimage
+- Bugfix: New recent file handling, fixes crash on Mac OS X 
+- Bugfix: Position of floatimages is saved again 
+- Bugfix: Position of floatimages survives adjustCanvasSize()
+- Bugfix: Adding branch to scrolled branch unscroll the former 
+- Bugfix: More undo commands (removed saveStateComplete)
+- Bugfix: No more hopping around of floats, when canvas is resized 
+          (by using relative positions for mainbranches. This might 
+                 confuse parsing 1.8.56 documents with vym <= 1.8.1
+- Bugfix: Mac - XSL stylesheets are found 
+- Bugfix: Mac - fonts are scaling
+- Bugfix: Mac - hand cursor is shown correctly
+- Bugfix: Undo/Redo moving floatimages
+- Bugfix: Shortcuts for scrolling branches/removing branch
+- Bugfix: update-bookmarks script is not only executed, but
+          also found now...
+- Bugfix: More undo/redo (move of floatimages, relinking of branches) 
+- Bugfix: More undo/redo commands
+- Bugfix: Actions updated after moving a branch now
+- Bugfix: vym refuses to start if vymTmpDir can't be created
+- Bugfix: Editing headings now works both on Mac and Linux
+  beginning of export now
+- Bugfix: Floatimages internally are saved as png, preserving the alpha 
+          channel
+- Bugfix: Fixed broken check for non-existent OO-export configuration 
+
diff --git a/aboutdialog.cpp b/aboutdialog.cpp
new file mode 100644 (file)
index 0000000..39b5243
--- /dev/null
@@ -0,0 +1,234 @@
+#include <QProcess>
+#include <QVBoxLayout>
+#include <QFrame>
+
+#include "aboutdialog.h"
+#include "settings.h"
+
+
+extern Settings settings;
+extern QString iconPath;
+extern QString vymVersion;
+extern QString vymBuildDate;
+extern QString vymCodeName;
+
+AboutDialog::AboutDialog( QWidget *parent, const char *name)
+    : QDialog( parent, name)
+{
+    mainLayout=new QVBoxLayout( this, 10);
+
+    tabs=new QTabWidget (this);
+    credits=new AboutTextBrowser (parent,"credits");
+
+    credits->setHtml(
+       "<center><img src=\""+iconPath+"vym-128x128.png\"></center>"
+       "<h3><center>VYM - View Your Mind </h3>"
+       "<p align=\"center\"> A tool to put the things you have got in your mind into a map.</p>"
+       "<p align=\"center\"> (c) by Uwe Drechsel (<a href=\"mailto:vym@InSilmaril.de\">vym@InSilmaril.de</a>)</p>"
+       "<p align=\"center\"> Version " +vymVersion+" - " +vymBuildDate+"</p>"
+       "<p align=\"center\"> " +vymCodeName+"</p>"
+       "<ul>"
+       "<li> Contact</li>"
+               "<ul>"
+                       "<li> vym homepage:<br> <a href=\"http://www.InSilmaril.de/vym\">"
+                       "http://www.InSilmaril.de/vym</a></li>"
+                       "<li> Project homepage on Sourceforge:<br> <a href=\"http://sourceforge.net/projects/vym/\">"
+                       "http://sourceforge.net/projects/vym/</a></li>"
+                       "<li> Mailinglists are also on Sourceforge:"
+                               "<ul>"
+                                       "<li>Please ask general questions about vym  on "
+                               "<a href=\"mailto:vym-forum@lists.sourceforge.net\">vym-forum</a></li>"
+                               "<li>Subscribe/Unsubscribe and archives can be found  "
+                               "<a href=\"https://sourceforge.net/mail/?group_id=127802\">here</a></li>"
+                               "</ul>"
+               "</ul>"         
+       "<li> Credits " 
+       "<ul>"
+       "<li>Documentation"
+       "  <ul>"
+       "    <li>Peter Adams: documentation proofreading and polishing</li>"
+       "  </ul>"
+       "</li>"
+       "<li>Translation"
+       "  <ul>"
+       "    <li>Spanish: <a href=\"http://ieee.udistrital.edu.co/aclibre\">"
+       "                 ACLibre (Academia y Conocimiento Libre)</a> </li>"
+       "    <li>French: Philippe Caillaud and Claude </li>"
+       "    <li>Italian: Seyed Puria Nafisi Azizi </li>"
+       "    <li>Brasilian: Amadeu Júnior</li>"
+       "    <li>Russion: Anton Olenev</li>"
+       "    <li>Simplified Chinese: Moligaloo</li>"
+       "  </ul>"
+       "</li>"
+       "<li> Patches"
+       "  <ul>"
+       "    <li>Konstantin Goudkov: sort branches</li>"
+       "    <li>Jakob Hilmer: image drag and drop in 1.8.1, &quot;About vym&quot; window patch </li>"
+       "    <li>Xavier Oswald, Christoph Thielecke and Steffen Joeris: Debian packaging</li>"
+       "    <li>Andrew Ng, Juha Ruotsalainen and Thomas Kriener: Windows</li>"
+       "    <li>Matt from <a href=\"http://www.satbp.com\">www.satbp.com</a>: "
+       "        <a href=\"http://www.taskjuggler.org\">Taskjuggler</a> export</li>"
+       "    <li>Thomas Schraitle for the stylesheet"  
+       "        used for XHTML-export and help with XML processing in general</li>"
+       "  </ul>"
+       "</li>"
+       "<li> General"
+       "  <ul>"
+       "    <li>Olaf Hering for support with my Powerbook</li>"
+       "    <li>All the guys at Trolltech for their Qt toolkit</li>"
+       "    <li>All the guys at SuSE for their Linux and support,"
+       "        e.g. to get Linux running on PowerPC and also Macbooks</li>"
+       "  </ul>"
+       "</li>"
+       "</ul>"
+       "</li>");
+    credits->setFrameStyle( QFrame::Panel | QFrame::Plain );
+    tabs->addTab (credits,"Credits");
+
+    license=new AboutTextBrowser (parent,"license");
+    license->setText (
+       "<center>"
+       "<h3>VYM - View Your Mind</h3>"
+    "<p>Copyright (C) 2004-2007  Uwe Drechsel</p>"  
+       "</center>"
+
+    "<p>This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation.</p>"
+
+    "<p>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License below for more details.</p>"
+
+       "<p>In addition, as a special exception, Uwe Drechsel gives permission to link the code of this program with the QT libraries from trolltech.com (or with modified versions of QT that use the same license as QT), and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than QT. If you modify this file, you may extend this exception to your version of the file, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.</p> "
+
+       "<p>Uwe Drechsel can be contacted at <a href=\"mailto:vym@insilmaril.de\">vym@insilmaril.de</a></p>"
+
+       "<hr>"
+
+ "<p align=\"center\">GNU GENERAL PUBLIC LICENSE<br>"
+"Version 2, June 1991</p>"
+
+"<p align=\"center\">Copyright (C) 1989, 1991 Free Software Foundation, Inc.  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA</p>"
+        
+"<p align=\"center\"> Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.</p>"
+
+"<p align=\"center\">Preamble</p>"
+
+"<p>The licenses for most software are designed to take away your freedom to share and change it.  By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.  This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it.  (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.)  You can apply it to your programs, too.</p>"
+
+"<p>When we speak of free software, we are referring to freedom, not price.  Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.</p>"
+
+"<p>  To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights.  These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.</p>"
+
+"<p>  For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have.  You must make sure that they, too, receive or can get the source code.  And you must show them these terms so they know their rights.</p>"
+
+"<p>  We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.</p>"
+
+"<p>  Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software.  If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.</p>"
+
+"<p>  Finally, any free program is threatened constantly by software patents.  We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary.  To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.</p>"
+
+"<p>  The precise terms and conditions for copying, distribution and modification follow.</p>"
+
+"<p align=\"center\">              GNU GENERAL PUBLIC LICENSE</p>"
+"<p align=\"center\">   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</p>"
+
+"<p>  0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License.  The \"Program\", below, refers to any such program or work, and a \"work based on the Program\" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language.  (Hereinafter, translation is included without limitation in the term \"modification\".)  Each licensee is addressed as \"you\".</p>"
+
+"<p>Activities other than copying, distribution and modification are not covered by this License; they are outside its scope.  The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program).  Whether that is true depends on what the Program does.</p>"
+
+"<p>  1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.</p>"
+
+"<p>You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.</p>"
+
+"<p>  2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:"
+"<ol type=\"a\">"
+       "<li> You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.</li>"
+
+    "<li> You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.</li>"
+
+    "<li> If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License.  (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)</li>"
+"</ol>"
+"</p>"
+
+"<p>These requirements apply to the modified work as a whole.  If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works.  But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.</p>"
+
+"<p>Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.</p>"
+
+"<p>In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.</p>"
+
+"<p>  3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:" "<ol type=\"a\">"
+
+"    <li> Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,</li>"
+
+"    <li> Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,</li>"
+
+"    <li> Accompany it with the information you received as to the offer to distribute corresponding source code.  (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)</li>"
+"</ol></p>"
+
+"<p>The source code for a work means the preferred form of the work for making modifications to it.  For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable.  However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.</p>"
+
+"<p>If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.</p>"
+
+"<p>  4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License.  Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License.  However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.</p>"
+
+"<p>  5. You are not required to accept this License, since you have not signed it.  However, nothing else grants you permission to modify or distribute the Program or its derivative works.  These actions are prohibited by law if you do not accept this License.  Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.</p>"
+
+"<p>  6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions.  You may not impose any further restrictions on the recipients' exercise of the rights granted herein.  You are not responsible for enforcing compliance by third parties to this License.</p>"
+
+"<p>  7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License.  If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all.  For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.</p>"
+
+"<p>If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.</p>"
+
+"<p>It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices.  Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.</p>"
+
+"<p>This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.</p>"
+
+"<p>  8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded.  In such case, this License incorporates the limitation as if written in the body of this License.</p>"
+
+"<p>  9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time.  Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.</p>"
+
+"<p>Each version is given a distinguishing version number.  If the Program specifies a version number of this License which applies to it and \"any later version\", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation.  If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.</p>"
+
+"<p>  10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission.  For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this.  Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.</p>"
+
+"<p align=\"center\">NO WARRANTY</p>"
+
+"<p>  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.</p>"
+
+"<p>  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>"
+
+"<p align=\"center\">END OF TERMS AND CONDITIONS</p>"
+       
+       );
+    credits->setFrameStyle( QFrame::Panel | QFrame::Plain );
+    tabs->addTab (license,"License");
+
+    mainLayout->addWidget (tabs);
+    tabs->showPage (credits);
+
+    okbutton =new QPushButton (this,"okbutton");
+    okbutton->setText (tr("Ok","Ok Button"));
+    okbutton->setMaximumSize (QSize (50,30));
+    okbutton->setAutoDefault (true);
+    mainLayout->addWidget( okbutton); 
+
+    connect( okbutton, SIGNAL( clicked() ), this, SLOT( accept() ) );
+}
+
+AboutTextBrowser::AboutTextBrowser(QWidget *parent, const char *name)
+    : QTextBrowser(parent, name)
+{
+    
+}
+
+void AboutTextBrowser::setSource(const QUrl &url )
+{
+       QProcess *proc= new QProcess ();
+       proc->start( settings.value("/mainwindow/readerURL").toString(),QStringList ()<<url.toString());
+       //if (!proc->waitForStarted() &&mainWindow->settingsURL() ) setSource(url);
+       if (!proc->waitForStarted() )
+               QMessageBox::warning(0, 
+               tr("Warning","About window"),
+               tr("Couldn't find a viewer to open %1.\n","About window").arg(url)+
+               tr("Please use Settings->")+tr("Set application to open an URL"));
+
+}
diff --git a/aboutdialog.h b/aboutdialog.h
new file mode 100644 (file)
index 0000000..d1fa89e
--- /dev/null
@@ -0,0 +1,72 @@
+#ifndef ABOUTDIALOG_H
+#define ABOUTDIALOG_H
+
+#include <QTabWidget>
+#include <QTextBrowser>
+#include <QLayout>
+#include <QDialog>
+#include <QPushButton>
+#include <QString>
+#include <QMessageBox>
+
+class AboutTextBrowser;
+
+/*! \mainpage View Your Mind - Development documentation
+  \section intro_sec Introduction
+VYM  (View Your Mind) is a tool to generate and manipulate maps which
+show your thoughts. Such maps can help you to improve your creativity
+and effectivity. You can use them for time management, to organize
+tasks, to get an overview over complex contexts, to sort your ideas
+etc. Some people even think it is fun to work with such maps...
+
+  
+  \section install_sec Installation
+
+  Please look at the INSTALL.TXT file 
+  \section doc_sec Documentation
+
+  The complete documentation is available as a PDF file. Please look
+  into the doc subdirectory.
+
+*/
+
+
+
+/*! \brief Dialog showing authors, version and license
+*/
+
+
+class AboutDialog :public QDialog
+{
+       Q_OBJECT
+
+public:
+       AboutDialog(QWidget* parent = 0, const char* name = 0);
+
+private:
+       QTabWidget *tabs;
+       AboutTextBrowser *credits;
+       AboutTextBrowser *license;
+
+       QLayout *mainLayout;
+       QLayout *topLayout;
+       QLayout *bottomLayout;
+       QPushButton *okbutton;
+       
+};
+
+/*! \brief Overloaded QTextBrowser which is used in AboutDialog
+*/
+class AboutTextBrowser : public QTextBrowser
+{
+  Q_OBJECT;
+ public:
+  AboutTextBrowser(QWidget *parent, const char *name = 0);
+ public slots:
+       virtual void setSource(const QUrl &url);
+};
+
+#endif
diff --git a/animpoint.cpp b/animpoint.cpp
new file mode 100644 (file)
index 0000000..a30df95
--- /dev/null
@@ -0,0 +1,131 @@
+#include "animpoint.h"
+
+#include <math.h>
+
+AnimPoint::AnimPoint()
+{
+       init();
+}
+
+void AnimPoint::operator= ( const AnimPoint & other )
+{
+       copy (other);
+}
+
+void AnimPoint::operator= ( const QPointF & other )
+{
+       init();
+       setX (other.x() );
+       setY (other.x() );
+}
+
+bool AnimPoint::operator== ( const QPointF& other )
+{
+       QPointF p( x(),y());
+       return p == other;
+}
+
+bool AnimPoint::operator== ( AnimPoint  other )
+{
+    if (rx() != other.rx() ) return false;
+    if (ry() != other.ry() ) return false;
+       if (startPos != other.startPos) return false;
+       if (destPos  != other.destPos) return false;
+    if (animated != other.animated ) return false;
+
+       return true;
+}
+
+void AnimPoint::init ()
+{
+       animated=false;
+       n=0;
+       startPos=QPointF(0,0);
+       destPos=QPointF(0,0);
+       vector=QPointF(0,0);
+       animTicks=10;
+}
+
+void AnimPoint::copy (AnimPoint other)
+{
+       setX (other.x() );
+       setY (other.x() );
+       startPos=other.startPos;
+       destPos=other.destPos;
+       vector=other.vector;
+       animated=other.animated;
+       n=other.n;
+       animTicks=other.animTicks;
+}
+
+void AnimPoint::setStart(const QPointF &p)
+{
+       startPos=p;
+       initVector();
+}
+
+QPointF AnimPoint::getStart()
+{
+       return startPos;
+}
+
+
+void AnimPoint::setDest(const QPointF &p)
+{
+       destPos=p;
+       initVector();
+}
+
+QPointF AnimPoint::getDest()
+{
+       return destPos;
+}
+
+void AnimPoint::setTicks (const uint &t)
+{
+       animTicks=t;
+}
+
+uint AnimPoint::getTicks()
+{
+       return animTicks;
+}
+
+void AnimPoint::setAnimated(bool b)
+{
+       animated=b;
+       if (b) n=0;
+}
+
+bool AnimPoint::isAnimated()
+{
+       return animated;
+}
+
+bool AnimPoint::animate()
+{
+       if (!animated) return animated;
+       n++;
+       if (n>animTicks)
+       {
+               vector=QPointF(0,0);
+               animated=false;
+               return animated;
+       }
+
+       // Some math slow down the movement
+       qreal f=1-n/animTicks;
+       qreal ff=1-f*f*f;
+       setX (startPos.x() + vector.x()*ff );
+       setY (startPos.y() + vector.y()*ff );
+
+       return animated;
+}
+
+void AnimPoint::initVector()
+{
+       vector.setX (destPos.x()-startPos.x() );
+       vector.setY (destPos.y()-startPos.y() );
+}
+
+
diff --git a/animpoint.h b/animpoint.h
new file mode 100644 (file)
index 0000000..2e29673
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef ANIMPOINT_H
+#define ANIMPOINT_H
+
+#include <QPointF>
+
+class AnimPoint: public QPointF
+{
+public:
+    AnimPoint();
+       void operator= ( const AnimPoint & );
+       void operator= ( const QPointF & );
+       bool operator== ( const QPointF & );
+       bool operator== ( AnimPoint  );
+       void init();
+       void copy(AnimPoint other);
+       void setStart (const QPointF &);
+       QPointF getStart();
+       void setDest (const QPointF &);
+       QPointF getDest();
+       void setTicks (const uint &t);
+       uint getTicks();
+       void setAnimated(bool);
+       bool isAnimated ();
+       bool animate();
+
+private:
+       void initVector();
+
+       QPointF startPos;
+       QPointF destPos;
+       QPointF vector;
+       qreal n;
+       qreal animTicks;
+    bool animated;
+
+};
+
+#endif
diff --git a/attribute.cpp b/attribute.cpp
new file mode 100644 (file)
index 0000000..296d164
--- /dev/null
@@ -0,0 +1,295 @@
+#include <iostream>
+
+#include "attribute.h"
+
+using namespace std;
+
+extern bool debug;
+
+Attribute::Attribute()
+{
+       table=NULL;
+       definition=NULL;
+}
+
+void Attribute::setKey (const QString &k, const AttributeType &t)
+{
+       if (!table)
+       {
+               qWarning (QString("Attribute::setKey (%1)  No table defined!\n").arg(k).ascii());
+               return; 
+       }
+       
+       if (!definition)
+       {
+               definition=table->getDef(k);
+               if (!definition)
+               {
+                       table->addKey (k,t);
+                       return; 
+               }
+       }       
+       qWarning (QString("Attribute::setKey (%1)  attribute already defined!\n").arg(k).ascii());
+}
+
+QString Attribute::getKey ()
+{
+       if (!table)
+       {
+               qWarning ("Attribute::getKey ()  No table defined!");
+               return QString();       
+       }
+       if (!definition)
+       {
+               qWarning ("Attribute::getKey ()  No attribute defined!");
+               return QString ();      
+       }       
+       return definition->getKey();
+}
+
+void Attribute::setValue(const QString &v)
+{
+       if (!table)
+       {
+               qWarning (QString ("Attribute::setValue (%1)  No table defined!").arg(v));
+               return; 
+       }
+       if (!definition)
+       {
+               qWarning (QString ("Attribute::setValue (%1)  No attribute defined!").arg(v));
+               return; 
+       }       
+       definition->setValue (v);
+}
+
+QVariant Attribute::getValue()
+{
+       if (!table)
+       {
+               qWarning ("Attribute::getValue  No table defined!");
+               return QString();       
+       }
+       if (!definition)
+       {
+               qWarning ("Attribute::getValue  No attribute defined!");
+               return QString();       
+       }       
+       QVariant v= definition->getValue();
+       return v;
+}
+
+void Attribute::setType (const AttributeType &t)
+{
+       if (!table)
+       {
+               qWarning ("Attribute::setType  No table defined!");
+               return;
+       }
+       if (!definition)
+       {
+               qWarning ("Attribute::setType  No attribute defined!");
+               return; 
+       }       
+       definition->setType (t);
+}
+
+AttributeType Attribute::getType()
+{
+       if (!table)
+       {
+               qWarning ("Attribute::getType  No table defined!");
+               return Undefined;       
+       }
+       if (!definition)
+       {
+               qWarning ("Attribute::getType  No attribute defined!");
+               return Undefined;       
+       }       
+       return definition->getType();
+}
+
+QString Attribute::getTypeString()
+{
+       if (!table)
+       {
+               qWarning ("Attribute::getTypeString  No table defined!");
+               return "Undefined";     
+       }
+       if (!definition)
+       {
+               qWarning ("Attribute::getTypeString  No attribute defined!");
+               return "Undefined";     
+       }       
+       return definition->getTypeString();
+}
+
+void Attribute::setTable (AttributeTable *at)
+{
+       if (at)
+               table=at;
+        else
+               qWarning ("Attribute::setTable  table==NULL");
+       
+}
+
+AttributeTable* Attribute::getTable()
+{
+       return table;
+}
+
+QString Attribute::getDataXML()
+{
+       QString a=beginElement ("attribute");
+       a+=attribut ("key",getKey());
+       a+=attribut ("value",getValue().toString() );
+       a+=attribut ("type",getTypeString () );
+       return a;
+}
+
+
+///////////////////////////////////////////////////////////////
+AttributeDef::AttributeDef()
+{
+}
+
+AttributeDef::~AttributeDef()
+{
+}
+
+void AttributeDef::setType (const AttributeType &t)
+{
+       type=t;
+}
+
+AttributeType AttributeDef::getType ()
+{
+       return type;
+}
+
+QString AttributeDef::getTypeString ()
+{
+       if (type==StringList)
+               return "StringList";
+       else if (type==FreeString)
+               return "FreeString";
+       else if (type==UniqueString)
+               return "UniqueString";
+       return "Undefined";
+}
+
+void AttributeDef::setKey (const QString &k)
+{
+       key=k;
+}
+
+void AttributeDef::setValue (const QString &v)
+{
+}
+
+void AttributeDef::setValue (const QVariant &v)
+{
+       if (type==Undefined)
+               qWarning ("AttributeDef::setValue  No type defined!");
+       else if (type==StringList)
+               value=v;
+       else if (type==UniqueString)
+               value=v;
+       else
+               qWarning ("AttributeDef::setValue Unknown type???");
+               
+}
+
+QVariant AttributeDef::getValue ()
+{
+       return QVariant ();
+}
+
+QString AttributeDef::getKey ()
+{
+       return key;
+}
+
+///////////////////////////////////////////////////////////////
+AttributeTable::AttributeTable()
+{
+       typeList
+               << "Undefined"
+               << "IntList"
+               << "FreeInt"
+               << "StringList"
+               << "FreeString"
+               << "UniqueString";
+}
+
+AttributeTable::~AttributeTable()
+{
+       clear();
+}
+
+void AttributeTable::clear ()
+{
+       attdefs.clear();
+}
+
+AttributeDef* AttributeTable::addKey (const QString &k, const AttributeType &t)
+{
+       for (int i=0; i<attdefs.count();++i)
+       {
+               if (attdefs.at(i)->getKey()==k )
+               {
+                       qWarning (QString ("AttributeTable::addKey (%1) already in table\n").arg(k).ascii());
+                       return NULL;
+               }
+       }
+       AttributeDef *ad=new AttributeDef;
+       ad->setKey (k);
+       ad->setType (t);
+       attdefs.append (ad);
+       return ad;
+}
+
+void AttributeTable::removeKey (const QString &k)
+{
+       for (int i=0; i<attdefs.count();++i)
+       {
+               if (attdefs.at(i)->getKey()==k )
+               {
+                       
+                       delete (attdefs.at(i));
+                       attdefs.removeAt (i);
+                       return ;
+               }
+       }
+       qWarning (QString ("AttributeTable::removeKey (%1) key not in table\n").arg(k).ascii());
+}
+
+AttributeDef* AttributeTable::getDef(const QString &key)
+{
+       for (int i=0; i<attdefs.count();++i)
+               if (attdefs.at(i)->getKey()==key ) return attdefs.at(i);
+       qWarning (QString ("AttributeTable::getDef (%1) key not in table\n").arg(key).ascii());
+       return NULL;    
+}
+
+int AttributeTable::countKeys()
+{
+       return attdefs.count();
+}
+
+QStringList AttributeTable::getKeys ()
+{
+       QStringList kl;
+       for (int i=0; i<attdefs.count();i++)
+               kl.append (attdefs.at(i)->getKey());
+       return kl;
+}
+
+QStringList AttributeTable::getTypes ()
+{
+       return typeList;
+}
+
+QString AttributeTable::getDataXML()
+{
+       return valueElement ("attributeList","key","value");
+}
diff --git a/attribute.h b/attribute.h
new file mode 100644 (file)
index 0000000..5667e88
--- /dev/null
@@ -0,0 +1,93 @@
+#ifndef ATTRIBUTE_H
+#define ATTRIBUTE_H
+
+#include <QStringList>
+#include <QVariant>
+
+#include "xmlobj.h"
+
+class AttributeTable;
+class AttributeDef;
+
+enum AttributeType {
+       Undefined,      //!< Undefined type
+       IntList,        //!< Free integer
+       FreeInt,        //!< Free integer
+       StringList, //!< List of strings, one can be attribute value
+       FreeString,     //!< Any string can be attribute value, not unique
+       UniqueString//!< UniqueString, e.g. for IDs
+};
+
+/*! \brief A key and a value 
+    The data itself is stored in Attribute Definitions (AttributeDef). 
+       A list of these tables AttributeTable is maintained for every MapEditor.
+*/
+class Attribute:public XMLObj {
+public:
+       Attribute();
+       void setKey (const QString &k, const AttributeType &t);
+       QString getKey ();
+       void setValue (const QString &v);
+       QVariant getValue ();
+       void setType (const AttributeType &t);
+       AttributeType getType ();
+       QString getTypeString ();
+       void setTable (AttributeTable *at);
+       AttributeTable* getTable();
+       QString getDataXML();
+protected:
+       AttributeTable *table;
+       AttributeDef *definition;
+       QString freeString;             //!< String value for type FreeString
+};
+
+
+/*! \brief 
+       Attribute definition, defines possible values and type of attribute.
+*/
+class AttributeDef {
+public:
+       AttributeDef();
+       ~AttributeDef();
+       void setType (const AttributeType &t);
+       AttributeType getType();
+       QString getTypeString ();
+       void setKey (const QString &k);
+       QString getKey ();
+       void setValue (const QString &v);
+       void setValue (const QVariant &v);
+       QVariant getValue ();
+private:
+       QString key;
+       AttributeType type;
+
+       QVariant value;                         //!< value (except FreeString, FreeInt ...
+};
+
+/*! \brief A table containing a list of keys and each of these keys has
+   a list of default values. The keys and the values for each key are
+   unique.
+*/
+
+class AttributeTable:public XMLObj{
+public:
+       AttributeTable();
+       ~AttributeTable();
+       void clear();
+       AttributeDef* addKey (const QString &k, const AttributeType &t);        //!< Adds a key to the table
+       void removeKey (const QString &k);      //!< Removes key and its default values
+       AttributeDef* getDef(const QString &k); //!< Get defintion of attribute
+       int countKeys();                                        //!< Return number of keys
+       QStringList getKeys ();
+       QStringList getTypes();
+       QString getDataXML();
+
+protected:
+       QList <AttributeDef*> attdefs;
+       QStringList typeList;
+};
+
+
+
+#endif
+
diff --git a/attributedelegate.cpp b/attributedelegate.cpp
new file mode 100644 (file)
index 0000000..3d6a728
--- /dev/null
@@ -0,0 +1,138 @@
+#include <QtGui>
+
+#include "attributedelegate.h"
+#include <iostream>
+
+using namespace::std;
+
+AttributeDelegate::AttributeDelegate(QObject *parent)
+    : QItemDelegate(parent)
+{
+}
+
+QWidget *AttributeDelegate::createEditor(QWidget *parent,
+    const QStyleOptionViewItem &/* option */,
+    const QModelIndex & index ) const
+{
+       int col=index.column();
+       int row=index.row();
+       
+       if (col==0 && row==index.model()->rowCount() -1 )
+       {
+               //We are editing a new attribute, starting with attribute name
+               QComboBox *editor = new QComboBox(parent);
+               editor->insertItems (0,attributeTable->getKeys());
+               return editor;
+       }
+       if (col==1 && row==index.model()->rowCount() -1 )
+       {
+               cout << "Edit value now..."<<endl;
+               //We are editing a new attribute, starting with attribute name
+               QComboBox *editor = new QComboBox(parent);
+               editor->insertItems (0,attributeTable->getKeys());
+               return editor;
+
+       }
+
+       // Is there already an atttribute defined or 
+       // do we need to create a new one?
+
+       QVariant var=index.model()->data(index.model()->index(row,2,QModelIndex()));
+       QString typeName=var.toString();
+       cout << "AttrDel::createEditor type="<<qPrintable (typeName)<<endl;
+
+       if (typeName=="IntList")
+       {
+               QSpinBox *editor = new QSpinBox(parent);
+               editor->setMinimum(0);
+               editor->setMaximum(5);
+               return editor;
+       } else if (typeName=="FreeInt")
+       {
+               QSpinBox *editor = new QSpinBox(parent);
+               editor->setMinimum(0);
+               editor->setMaximum(100);
+               return editor;
+       } else if (typeName=="FreeString")
+       {
+               QComboBox *editor = new QComboBox(parent);
+               return editor;
+       } else if (typeName=="StringList")
+       {
+               QComboBox *editor = new QComboBox(parent);
+               return editor;
+       } 
+
+    return NULL;
+}
+
+void AttributeDelegate::setEditorData(QWidget *editor,
+                                    const QModelIndex &index) const
+{
+       QVariant value= index.model()->data(index, Qt::DisplayRole);
+       switch (value.type())
+       {
+               case QVariant::Int:
+               {
+                       int value = index.model()->data(index, Qt::DisplayRole).toInt();
+                       QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
+                       spinBox->setValue(value);
+                       break;
+               }       
+               /*
+               {
+                       QString value = index.model()->data(index, Qt::DisplayRole).toString();
+                       QLineEdit *le= static_cast<QLineEdit*>(editor);
+                       le->setText(value);
+                       break;
+               }
+               */
+               case QVariant::String:
+               {
+                       QComboBox *cb= static_cast<QComboBox*>(editor);
+                       QStringList sl;
+                       sl<< index.model()->data(index, Qt::DisplayRole).toString();
+                       cb->insertStringList (sl);
+                       break;
+               }
+               default: 
+                       break;
+       }               
+}
+
+void AttributeDelegate::setModelData(QWidget *editor, QAbstractItemModel *model,
+                                   const QModelIndex &index) const
+{
+       QVariant value= index.model()->data(index, Qt::DisplayRole);
+       switch (value.type())
+       {
+               case QVariant::Int:
+               {
+                       QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
+                       spinBox->interpretText();
+                       model->setData(index, spinBox->value(), Qt::EditRole);
+                       break;
+               }       
+               case QVariant::String:
+               {
+                       QComboBox *cb = static_cast<QComboBox*>(editor);
+                       model->setData(index, cb->currentText(), Qt::EditRole);
+                       break;
+               }
+               default:
+                       break;
+       }               
+
+}
+
+void AttributeDelegate::updateEditorGeometry(QWidget *editor,
+    const QStyleOptionViewItem &option, const QModelIndex &/* index */) const
+{
+    editor->setGeometry(option.rect);
+}
+
+void AttributeDelegate::setAttributeTable (AttributeTable *table)
+{
+       attributeTable=table;
+}
+
diff --git a/attributedelegate.h b/attributedelegate.h
new file mode 100644 (file)
index 0000000..d11c444
--- /dev/null
@@ -0,0 +1,37 @@
+
+#ifndef ATTRIBUTEDELEGATE_H
+#define ATTRIBUTEDELEGATE_H
+
+#include <QItemDelegate>
+#include <QModelIndex>
+#include <QObject>
+#include <QSize>
+#include <QSpinBox>
+#include <QLineEdit>
+
+#include "attribute.h"
+
+class AttributeDelegate : public QItemDelegate
+{
+    Q_OBJECT
+
+enum EditorType {Undefined,SpinBox,LineEdit,ComboBox};
+
+public:
+    AttributeDelegate(QObject *parent = 0);
+
+    QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,
+                          const QModelIndex &index) const;
+
+    void setEditorData(QWidget *editor, const QModelIndex &index) const ;
+    void setModelData(QWidget *editor, QAbstractItemModel *model,
+                      const QModelIndex &index) const ;
+
+       void updateEditorGeometry(QWidget *editor,
+       const QStyleOptionViewItem &option, const QModelIndex &index) const;
+       void setAttributeTable(AttributeTable *table);
+private:
+       AttributeTable *attributeTable;
+};
+
+#endif
diff --git a/attributedialog.cpp b/attributedialog.cpp
new file mode 100644 (file)
index 0000000..10341c4
--- /dev/null
@@ -0,0 +1,118 @@
+#include "attributedialog.h"
+
+#include "attributewidget.h"
+
+#include <QtGui/QApplication>
+#include <QtGui/QButtonGroup>
+
+AttributeDialog::AttributeDialog (QWidget *parent):QDialog (parent)
+{
+    if (this->objectName().isEmpty())
+        this->setObjectName(QString::fromUtf8("AttributeDialog"));
+    QSize size(468, 75);
+    size = size.expandedTo(this->minimumSizeHint());
+    this->resize(size);
+    QSizePolicy sizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred);
+    sizePolicy.setHorizontalStretch(0);
+    sizePolicy.setVerticalStretch(0);
+    sizePolicy.setHeightForWidth(this->sizePolicy().hasHeightForWidth());
+    this->setSizePolicy(sizePolicy);
+
+    vboxLayout = new QVBoxLayout(this);
+    vboxLayout->setObjectName(QString::fromUtf8("vboxLayout"));
+
+    tableLayout = new QVBoxLayout();
+    tableLayout->setObjectName(QString::fromUtf8("tableLayout"));
+
+    hboxLayout = new QHBoxLayout();
+    hboxLayout->setObjectName(QString::fromUtf8("hboxLayout"));
+    addButton = new QPushButton(this);
+    addButton->setObjectName(QString::fromUtf8("addButton"));
+
+    hboxLayout->addWidget(addButton);
+
+    spacerItem = new QSpacerItem(111, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
+
+    hboxLayout->addItem(spacerItem);
+
+    closeButton = new QPushButton(this);
+    closeButton->setObjectName(QString::fromUtf8("closeButton"));
+
+    hboxLayout->addWidget(closeButton);
+
+    vboxLayout->addLayout(tableLayout);
+    vboxLayout->addLayout(hboxLayout);
+
+
+       
+    setWindowTitle(QApplication::translate("AttributeDialog", "Attributes", 0, QApplication::UnicodeUTF8));
+    addButton->setText(QApplication::translate("AttributeDialog", "Add key", 0, QApplication::UnicodeUTF8));
+    closeButton->setText(QApplication::translate("AttributeDialog", "Close", 0, QApplication::UnicodeUTF8));
+
+       connect (addButton, SIGNAL (clicked()), this, SLOT (addKey()));
+       connect (closeButton, SIGNAL (clicked()), this, SLOT (accept()));
+
+       table=NULL;
+}
+
+void AttributeDialog::setTable (AttributeTable *t)
+{
+       table=t;
+}
+
+void AttributeDialog::setBranch (BranchObj *bo)
+{
+       branch=bo;
+}
+
+void AttributeDialog::setMode (const AttributeDialogMode &m)
+{
+       mode=m;
+
+       QString title;
+       if (mode==Definition)
+               title= QApplication::translate("Attribute Dialog","AttributeDialog - Edit definitions", 0, QApplication::UnicodeUTF8);
+       else    
+               title= QApplication::translate("Attribute Dialog","AttributeDialog - Edit %1", 0, QApplication::UnicodeUTF8).arg("objname");
+    setWindowTitle(title);
+}
+
+void AttributeDialog::updateTable()
+{
+       if (table)
+       {
+               // Update list of keys and values
+               QStringList keyList=table->getKeys();
+               AttributeWidget *aw;
+               for (int i=0; i<keyList.count();i++)
+               {
+                       aw=new AttributeWidget (this);
+                       aw->setKey (keyList.at(i) );
+                       // FIXME aw->setValues (table->getValues (keyList.at(i) ));
+                       aw->show();
+                       tableLayout->addWidget (aw);
+               }
+
+               // Update attributes in dialog from data in selected branch
+
+               // TODO
+       }
+
+}
+void AttributeDialog::addKey()
+{
+       AttributeWidget *aw1=new AttributeWidget (this);
+       aw1->show();
+       tableLayout->addWidget (aw1);
+
+}
+
+void AttributeDialog::closeEvent( QCloseEvent* ce )
+{
+    ce->accept();      // can be reopened with show()
+       hide();
+       emit (windowClosed() );
+    return;
+}
+
+
diff --git a/attributedialog.h b/attributedialog.h
new file mode 100644 (file)
index 0000000..e00273e
--- /dev/null
@@ -0,0 +1,49 @@
+#ifndef ATTRIBUTEDIALOG_H
+#define ATTRIBUTEDIALOG_H
+
+#include "attribute.h"
+#include "branchobj.h"
+
+#include <QDialog>
+#include <QCloseEvent>
+#include <QtGui/QHBoxLayout>
+#include <QtGui/QPushButton>
+#include <QtGui/QSpacerItem>
+#include <QtGui/QVBoxLayout>
+
+
+/*! \brief Set the dialog mode  */
+enum AttributeDialogMode {
+       Definition,     //!< Edit attribute definitions (AttributeDef)
+       Object          //!< Edit attributes of OrnamentedObj
+};
+
+class AttributeDialog:public QDialog
+{
+       Q_OBJECT 
+public:
+       AttributeDialog (QWidget *parent=0 );
+       void setTable (AttributeTable *table=0);
+       void setBranch (BranchObj *bo);
+       void setMode (const AttributeDialogMode &m);
+       void updateTable();
+signals:
+       void windowClosed();
+private slots:
+       void addKey();
+protected:
+       void closeEvent(QCloseEvent*);
+private:
+       QVBoxLayout *vboxLayout;
+       QVBoxLayout *tableLayout;
+    QHBoxLayout *hboxLayout;
+    QPushButton *addButton;
+    QSpacerItem *spacerItem;
+    QPushButton *closeButton;
+
+       AttributeDialogMode mode;
+       AttributeTable *table;
+       BranchObj *branch;
+};
+
+#endif
diff --git a/attributedialog.ui b/attributedialog.ui
new file mode 100644 (file)
index 0000000..fc16698
--- /dev/null
@@ -0,0 +1,60 @@
+<ui version="4.0" >
+ <class>AttributeDialog</class>
+ <widget class="QDialog" name="AttributeDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>468</width>
+    <height>75</height>
+   </rect>
+  </property>
+  <property name="sizePolicy" >
+   <sizepolicy vsizetype="Preferred" hsizetype="Minimum" >
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle" >
+   <string>Attributes</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <item>
+    <widget class="QLineEdit" name="dummyLineEdit" />
+   </item>
+   <item>
+    <layout class="QHBoxLayout" >
+     <item>
+      <widget class="QPushButton" name="addButton" >
+       <property name="text" >
+        <string>Add key</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>111</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="closeButton" >
+       <property name="text" >
+        <string>Close</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/attributewidget.cpp b/attributewidget.cpp
new file mode 100644 (file)
index 0000000..fcb2ad4
--- /dev/null
@@ -0,0 +1,39 @@
+#include "attributewidget.h"
+
+AttributeWidget::AttributeWidget (QWidget *parent):QWidget (parent)
+{
+       ui.setupUi (this);
+       //ui.keyComboBox->setEditable (true);
+       ui.valueComboBox->setEditable (true);
+}
+
+void AttributeWidget::setTable(AttributeTable *at)
+{
+       table=at;
+}
+
+void AttributeWidget::setKey (const QString &k)
+{
+       key=k;
+       ui.keyComboBox->insertItem (ui.keyComboBox->count(), key);
+}
+
+void AttributeWidget::setValues(const QStringList &vl)
+{
+       ui.valueComboBox->clear();
+       ui.valueComboBox->insertStringList(vl);
+}
+
+/*
+void AttributeWidget::setValue (const QString &v)
+{
+}
+*/
+
+void AttributeWidget::keyTextChanged(const QString &t)
+{
+}
+
+void AttributeWidget::valueTextChanged(const QString &t)
+{
+}
diff --git a/attributewidget.h b/attributewidget.h
new file mode 100644 (file)
index 0000000..baa48c5
--- /dev/null
@@ -0,0 +1,28 @@
+#ifndef ATTRIBUTEWIDGET_H
+#define ATTRIBUTEWIDGET_H
+
+#include "ui_attributewidget.h"
+
+#include "attribute.h"
+
+#include <QWidget>
+
+class AttributeWidget: public QWidget
+{
+       Q_OBJECT
+public:
+       AttributeWidget (QWidget *parent=0);
+       void setTable (AttributeTable *at=0);
+       void setKey (const QString &k);
+       void setValues (const QStringList &vl);
+
+public slots:
+       virtual void keyTextChanged(const QString &t);
+       virtual void valueTextChanged(const QString &t);
+
+private:
+       Ui::AttributeWidget ui;
+       AttributeTable *table;
+       QString key;
+};
+#endif
diff --git a/attributewidget.ui b/attributewidget.ui
new file mode 100644 (file)
index 0000000..67fc60b
--- /dev/null
@@ -0,0 +1,50 @@
+<ui version="4.0" >
+ <class>AttributeWidget</class>
+ <widget class="QWidget" name="AttributeWidget" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>115</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Form</string>
+  </property>
+  <layout class="QHBoxLayout" >
+   <property name="spacing" >
+    <number>0</number>
+   </property>
+   <item>
+    <widget class="QPushButton" name="pushButton" >
+     <property name="text" >
+      <string/>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QComboBox" name="keyComboBox" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QComboBox" name="valueComboBox" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/branchobj.cpp b/branchobj.cpp
new file mode 100644 (file)
index 0000000..a502d7f
--- /dev/null
@@ -0,0 +1,1629 @@
+#include "branchobj.h"
+
+// #include "texteditor.h"
+#include "geometry.h"
+#include "mapeditor.h"
+#include "mainwindow.h"
+#include "misc.h"
+
+class TextEditor;
+
+extern TextEditor *textEditor;
+extern Main *mainWindow;
+extern FlagRowObj *standardFlagsDefault;
+
+
+/////////////////////////////////////////////////////////////////
+// BranchObj
+/////////////////////////////////////////////////////////////////
+
+BranchObj* BranchObj::itLast=NULL;
+BranchObj* BranchObj::itFirst=NULL;
+
+
+BranchObj::BranchObj () :OrnamentedObj()
+{
+//    cout << "Const BranchObj ()\n";
+    setParObj (this);  
+    init();
+    depth=-1;
+}
+
+BranchObj::BranchObj (QGraphicsScene* s):OrnamentedObj (s)
+{
+//    cout << "Const BranchObj (s)  called from MapCenterObj (s)\n";
+       parObj=NULL;
+    scene=s;
+}
+
+BranchObj::BranchObj (QGraphicsScene* s, LinkableMapObj* p):OrnamentedObj (s)
+{
+//    cout << "Const BranchObj (s,p)\n";
+    scene=s;
+    setParObj (p);     
+    depth=p->getDepth()+1;
+       if (depth==1)
+               // Calc angle to mapCenter if I am a mainbranch
+               // needed for reordering the mainbranches clockwise 
+               // around mapcenter 
+               angle=getAngle (QPointF (x() - parObj->getChildPos().x() , 
+                                                               (y() - parObj->getChildPos().y() ) ) );
+    init();
+}
+
+BranchObj::~BranchObj ()
+{
+       // If I'm animated, I need to un-animate myself first
+       if (anim.isAnimated() )
+       {
+               anim.setAnimated (false);
+               mapEditor->getModel()->stopAnimation (this);
+       }
+
+
+       //cout << "Destr BranchObj of "<<this<<endl;
+       // Check, if this branch was the last child to be deleted
+       // If so, unset the scrolled flags
+
+       BranchObj *po=(BranchObj*)parObj;
+       BranchObj *bo;
+       if (po)
+       {
+               bo=((BranchObj*)parObj)->getLastBranch();
+               if (bo) po->unScroll();
+       }
+       clear();
+}
+
+bool BranchObj::operator< ( const BranchObj & other )
+{
+    return  angle < other.angle;
+}
+
+bool BranchObj::operator== ( const BranchObj & other )
+{
+    return angle == other.angle;
+}
+
+void BranchObj::init () 
+{
+       if (parObj)
+       {
+               absPos=getRandPos();
+               absPos+=parObj->getChildPos();
+       }
+
+    lastSelectedBranch=0;
+
+    setChildObj(this);
+
+       scrolled=false;
+       tmpUnscrolled=false;
+
+       includeImagesVer=false;
+       includeImagesHor=false;
+}
+
+void BranchObj::copy (BranchObj* other)
+{
+    OrnamentedObj::copy(other);
+
+       branch.clear();
+       for (int i=0; i<other->branch.size(); ++i)
+               // Make deep copy of b
+               // Because addBranch again calls copy for the childs,
+               // Those will get a deep copy, too
+               addBranch(other->branch.at(i) );        
+
+       for (int i=0; i<other->floatimage.size(); ++i)
+               addFloatImage  (other->floatimage.at(i));
+       scrolled=other->scrolled;
+       tmpUnscrolled=other->tmpUnscrolled;
+       setVisibility (other->visible);
+
+       angle=other->angle;
+
+    positionBBox();
+}
+
+void BranchObj::clear() 
+{
+       setVisibility (true);
+
+       while (!floatimage.isEmpty())
+               delete floatimage.takeFirst();
+
+       while (!xlink.isEmpty())
+               delete xlink.takeFirst();
+
+       while (!branch.isEmpty())
+               delete branch.takeFirst();
+}
+
+bool isAbove (BranchObj* a, BranchObj *b)
+{
+       if (a->angle < b->angle)
+               return true;
+       else    
+               return false;
+}
+
+int BranchObj::getNum()
+{
+       if (parObj)
+               return ((BranchObj*)parObj)->getNum (this);
+       else
+               return 0;
+}
+
+int BranchObj::getNum(BranchObj *bo)
+{
+       return branch.indexOf (bo);
+}
+
+int BranchObj::getFloatImageNum(FloatImageObj *fio)
+{
+       return floatimage.indexOf(fio);
+}
+
+int BranchObj::countBranches()
+{
+       return branch.count();
+}
+
+int BranchObj::countFloatImages()
+{
+       return floatimage.count();
+}
+
+int BranchObj::countXLinks()
+{
+       return xlink.count();
+}
+
+void BranchObj::setParObjTmp(LinkableMapObj* lmo, QPointF m, int off)
+{
+       // Temporary link to lmo
+       // m is position of mouse pointer 
+       // offset 0: default 1: below lmo   -1 above lmo  (if possible)
+
+
+       BranchObj* o=(BranchObj*)(lmo);
+       if (!parObjTmpBuf) 
+               parObjTmpBuf=parObj;
+
+       // ignore mapcenter and mainbranch
+       if (lmo->getDepth()<2) off=0;
+       if (off==0)
+               link2ParPos=false;
+       else
+               link2ParPos=true;
+       parObj=o;
+
+       depth=parObj->getDepth()+1;
+
+       // setLinkStyle calls updateLink, only set it once
+       if (style!=getDefLinkStyle() ) setLinkStyle (getDefLinkStyle());
+
+       // Move temporary to new position at destination
+       // Usually the positioning would be done by reposition(),
+       // but then also the destination branch would "Jump" around...
+       // Better just do it approximately
+       if (depth==1)
+       {       // new parent is the mapcenter itself
+
+               QPointF p= normalise ( QPointF (m.x() - o->getChildPos().x(),
+                                                                         m.y() - o->getChildPos().y() ));
+               if (p.x()<0) p.setX( p.x()-bbox.width() );
+               move2RelPos (p);
+       } else
+       {       
+               qreal y;
+               if (off==0)
+               {
+                       // new parent is just a branch, link to it
+                       QRectF t=o->getBBoxSizeWithChilds();
+                       if (o->getLastBranch())
+                               y=t.y() + t.height() ;
+                       else
+                               y=t.y();
+
+               } else
+               {
+                       if (off<0)
+                               // we want to link above lmo
+                               y=o->y() - height() + 5;
+                       else    
+                               // we want to link below lmo
+                               // Bottom of sel should be 5 pixels above
+                               // the bottom of the branch _below_ the target:
+                               // Don't try to find that branch, guess 12 pixels
+                               y=o->getChildPos().y()  -height() + 12; 
+               }       
+               if (o->getOrientation()==LinkableMapObj::LeftOfCenter)
+                       move ( o->getChildPos().x() - linkwidth, y );
+               else    
+                       move (o->getChildPos().x() + linkwidth, y );
+       }       
+
+       // updateLink is called implicitly in move
+       requestReposition();    
+}
+
+void BranchObj::unsetParObjTmp()
+{
+       if (parObjTmpBuf) 
+       {
+               link2ParPos=false;
+               parObj=parObjTmpBuf;
+               parObjTmpBuf=NULL;
+               depth=parObj->getDepth()+1;
+               setLinkStyle (getDefLinkStyle() );
+               updateLink();
+       }               
+}
+
+void BranchObj::unScroll()
+{
+       if (tmpUnscrolled) resetTmpUnscroll();
+       if (scrolled) toggleScroll();
+}
+
+void BranchObj::toggleScroll()
+{
+       if (scrolled)
+       {
+               scrolled=false;
+               systemFlags->deactivate("scrolledright");
+               for (int i=0; i<branch.size(); ++i)
+                       branch.at(i)->setVisibility(true);
+       } else
+       {
+               scrolled=true;
+               systemFlags->activate("scrolledright");
+               for (int i=0; i<branch.size(); ++i)
+                       branch.at(i)->setVisibility(false);
+       }
+       calcBBoxSize();
+       positionBBox(); 
+       move (absPos.x(), absPos.y() );
+       forceReposition();
+}
+
+bool BranchObj::isScrolled()
+{
+       return scrolled;
+}
+
+bool BranchObj::hasScrolledParent(BranchObj *start)
+{
+       // Calls parents recursivly to
+       // find out, if we are scrolled at all.
+       // But ignore myself, just look at parents.
+
+       if (this !=start && scrolled) return true;
+
+       BranchObj* bo=(BranchObj*)(parObj);
+       if (bo) 
+               return bo->hasScrolledParent(start);
+       else
+               return false;
+}
+
+void BranchObj::tmpUnscroll()
+{
+       // Unscroll parent (recursivly)
+       BranchObj* bo=(BranchObj*)(parObj);
+       if (bo) bo->tmpUnscroll();
+               
+       // Unscroll myself
+       if (scrolled)
+       {
+               tmpUnscrolled=true;
+               systemFlags->activate("tmpUnscrolledright");
+               toggleScroll();
+       }       
+}
+
+void BranchObj::resetTmpUnscroll()
+{
+       // Unscroll parent (recursivly)
+       BranchObj* bo=(BranchObj*)(parObj);
+       if (bo)
+               bo->resetTmpUnscroll();
+               
+       // Unscroll myself
+       if (tmpUnscrolled)
+       {
+               tmpUnscrolled=false;
+               systemFlags->deactivate("tmpUnscrolledright");
+               toggleScroll();
+       }       
+}
+
+void BranchObj::setVisibility(bool v, int toDepth)
+{
+    if (depth <= toDepth)
+    {
+               frame->setVisibility(v);
+               heading->setVisibility(v);
+               systemFlags->setVisibility(v);
+               standardFlags->setVisibility(v);
+               LinkableMapObj::setVisibility (v);
+               
+               // Only change childs, if I am not scrolled
+               if (!scrolled && (depth < toDepth))
+               {
+                       // Now go recursivly through all childs
+                       int i;
+                       for (i=0; i<branch.size(); ++i)
+                               branch.at(i)->setVisibility (v,toDepth);        
+                       for (i=0; i<floatimage.size(); ++i)
+                               floatimage.at(i)->setVisibility (v);
+                       for (i=0; i<xlink.size(); ++i)  
+                               xlink.at(i)->setVisibility ();  
+               }
+    } // depth <= toDepth      
+       requestReposition();
+}      
+
+void BranchObj::setVisibility(bool v)
+{
+    setVisibility (v,MAX_DEPTH);
+}
+
+
+void BranchObj::setLinkColor ()
+{
+       // Overloaded from LinkableMapObj
+       // BranchObj can use color of heading
+
+       if (mapEditor)
+       {
+               if (mapEditor->getMapLinkColorHint()==HeadingColor)
+                       LinkableMapObj::setLinkColor (heading->getColor() );
+               else    
+                       LinkableMapObj::setLinkColor ();
+       }               
+}
+
+void BranchObj::setColorSubtree(QColor col)
+{
+       setColor (col);
+       for (int i=0; i<branch.size(); ++i)
+               branch.at(i)->setColorSubtree(col);
+}
+
+BranchObj* BranchObj::first()
+{
+       itLast=NULL;    
+       itFirst=this;
+       return this; 
+}
+       
+BranchObj* BranchObj::next()
+{
+       BranchObj *bo;
+       BranchObj *lmo;
+       BranchObj *po=(BranchObj*)parObj;
+
+       if (branch.isEmpty())
+               bo=NULL;
+       else
+               bo=branch.first();
+
+       if (!itLast)
+       {
+               // no itLast, we are just beginning
+               if (bo) 
+               {
+                       // we have childs, return first one
+                       itLast=this;
+                       return bo;
+               }       
+               else
+               {
+                       // No childs, so there is no next
+                       itLast=this;
+                       return NULL;
+               }       
+       }
+
+       // We have an itLast
+       if (itLast==po)
+       {       // We come from parent
+               if (bo)
+               {
+                       // there are childs, go there
+                       itLast=this;
+                       return bo;
+               }       
+               else
+               {       // no childs, try to go up again
+                       if (po)
+                       {
+                               // go back to parent and try to find next there
+                               itLast=this;
+                               lmo=po->next();
+                               itLast=this;
+                               return lmo;
+
+                       }       
+                       else
+                       {
+                               // can't go up, I am mapCenter, no next
+                               itLast=NULL;
+                               return NULL;
+                       }       
+               }
+       }
+
+       // We don't come from parent, but from brother or childs
+
+       // Try to find last child, where we came from, in my own childs
+       bool searching=true;
+       int i=0;
+       while (i<branch.size())
+       {
+               // Try to find itLast in my own childs
+               if (itLast==branch.at(i))
+               {
+                       // ok, we come from my own childs
+                       if (i<branch.size()-1)
+                               bo=branch.at(i+1);
+                        else
+                               bo=NULL;
+                       searching=false;
+                       i=branch.size();
+               }       
+               ++i;    
+       }
+       if (!searching)
+       {       // found itLast in my childs
+               if (bo)
+               {
+                       // found a brother of lastLMO 
+                       itLast=this;
+                       return bo;
+               }       
+               else
+               {
+                       if (po)
+                       {
+                               if (this==itFirst) return NULL; // Stop at starting point
+                               // go up
+                               itLast=this;
+                               lmo=po->next();
+                               itLast=this;
+                               return lmo;
+                       }
+                       else
+                       {
+                               // can't go up, I am mapCenter
+                               itLast=NULL;
+                               return NULL;
+                       }       
+               }
+       }
+
+       // couldn't find last child, it must be a nephew of mine
+       if (branch.size()>0)
+       {
+               // proceed with my first child
+               itLast=this;    
+               return branch.first();
+       }       
+       else
+       {
+               // or go back to my parents
+               if (po)
+               {
+                       // go up
+                       itLast=this;
+                       lmo=po->next();
+                       itLast=this;
+                       return lmo;
+               }       
+               else
+               {
+                       // can't go up, I am mapCenter
+                       itLast=NULL;
+                       return NULL;
+               }       
+       }       
+}
+
+BranchObj* BranchObj::getLastIterator()
+{
+       return itLast;
+}
+
+void BranchObj::setLastIterator(BranchObj* it)
+{
+       itLast=it;
+}
+
+void BranchObj::positionContents()
+{
+    for (int i=0; i<floatimage.size(); ++i )
+               floatimage.at(i)->reposition();
+       OrnamentedObj::positionContents();
+}
+
+void BranchObj::move (double x, double y)
+{
+       OrnamentedObj::move (x,y);
+    for (int i=0; i<floatimage.size(); ++i )
+               floatimage.at(i)->reposition();
+    positionBBox();
+}
+
+void BranchObj::move (QPointF p)
+{
+       move (p.x(), p.y());
+}
+
+void BranchObj::moveBy (double x, double y)
+{
+       OrnamentedObj::moveBy (x,y);
+       for (int i=0; i<branch.size(); ++i)
+               branch.at(i)->moveBy (x,y);
+    positionBBox();
+}
+       
+void BranchObj::moveBy (QPointF p)
+{
+       moveBy (p.x(), p.y());
+}
+
+
+void BranchObj::positionBBox()
+{
+       QPointF ap=getAbsPos();
+       bbox.moveTopLeft (ap);
+       positionContents();
+
+       // set the frame
+       frame->setRect(QRectF(bbox.x(),bbox.y(),bbox.width(),bbox.height() ) );
+
+       // Update links to other branches
+       for (int i=0; i<xlink.size(); ++i)
+               xlink.at(i)->updateXLink();
+}
+
+void BranchObj::calcBBoxSize()
+{
+    QSizeF heading_r=heading->getSize();
+    qreal heading_w=(qreal) heading_r.width() ;
+    qreal heading_h=(qreal) heading_r.height() ;
+    QSizeF sysflags_r=systemFlags->getSize();
+       qreal sysflags_h=sysflags_r.height();
+       qreal sysflags_w=sysflags_r.width();
+    QSizeF stanflags_r=standardFlags->getSize();
+       qreal stanflags_h=stanflags_r.height();
+       qreal stanflags_w=stanflags_r.width();
+    qreal w;
+    qreal h;
+
+       // set width to sum of all widths
+       w=heading_w + sysflags_w + stanflags_w;
+       // set height to maximum needed height
+       h=max (sysflags_h,stanflags_h);
+       h=max (h,heading_h);
+
+       // Save the dimension of flags and heading
+       ornamentsBBox.setSize ( QSizeF(w,h));
+
+       // clickBox includes Flags and Heading
+    clickBox.setSize (ornamentsBBox.size() );
+
+       // Floatimages 
+       QPointF rp;
+
+       topPad=botPad=leftPad=rightPad=0;
+       if (includeImagesVer || includeImagesHor)
+       {
+               if (countFloatImages()>0)
+               {
+                       for (int i=0; i<floatimage.size(); ++i )
+                       {
+                               rp=floatimage.at(i)->getRelPos();
+                               if (includeImagesVer)
+                               {
+                                       if (rp.y() < 0) 
+                                               topPad=max (topPad,-rp.y()-h);
+                                       if (rp.y()+floatimage.at(i)->height() > 0)
+                                               botPad=max (botPad,rp.y()+floatimage.at(i)->height());
+                               }               
+                               if (includeImagesHor)
+                               {
+                                       if (orientation==LinkableMapObj::RightOfCenter)
+                                       {
+                                               if (-rp.x()-w > 0) 
+                                                       leftPad=max (leftPad,-rp.x()-w);
+                                               if (rp.x()+floatimage.at(i)->width() > 0)
+                                                       rightPad=max (rightPad,rp.x()+floatimage.at(i)->width());
+                                       } else
+                                       {
+                                               if (rp.x()< 0) 
+                                                       leftPad=max (leftPad,-rp.x());
+                                               if (rp.x()+floatimage.at(i)->width() > w)
+                                                       rightPad=max (rightPad,rp.x()+floatimage.at(i)->width()-w);
+                                       }
+                               }               
+                       }       
+               }       
+               h+=topPad+botPad;
+               w+=leftPad+rightPad;
+       }
+
+       // Frame thickness
+    w+=frame->getPadding();
+    h+=frame->getPadding();
+       
+       // Finally set size
+    bbox.setSize (QSizeF (w,h));
+}
+
+void BranchObj::setDockPos()
+{
+       // Sets childpos and parpos depending on orientation
+       if (getOrientation()==LinkableMapObj::LeftOfCenter )
+    {
+               childPos=QPointF (
+                       ornamentsBBox.bottomLeft().x(), 
+                       bottomlineY);
+               parPos=QPointF (
+                       ornamentsBBox.bottomRight().x(),
+                       bottomlineY);
+    } else
+    {
+               childPos=QPointF (
+                       ornamentsBBox.bottomRight().x(), 
+                       bottomlineY);
+               parPos=QPointF (
+                       ornamentsBBox.bottomLeft().x(),
+                       bottomlineY);
+    }
+}
+
+LinkableMapObj* BranchObj::findMapObj(QPointF p, LinkableMapObj* excludeLMO)
+{
+       // Search branches
+    LinkableMapObj *lmo;
+       for (int i=0; i<branch.size(); ++i)
+    {  
+               lmo=branch.at(i)->findMapObj(p, excludeLMO);
+               if (lmo != NULL) return lmo;
+    }
+       
+
+       // Search myself
+    if (inBox (p,clickBox) && (this != excludeLMO) && isVisibleObj() ) 
+               return this;
+
+       // Search float images
+    for (int i=0; i<floatimage.size(); ++i )
+               if (inBox(p,floatimage.at(i)->getClickBox()) && 
+                       (floatimage.at(i) != excludeLMO) && 
+                       floatimage.at(i)->getParObj()!= excludeLMO &&
+                       floatimage.at(i)->isVisibleObj() 
+               ) return floatimage.at(i);
+
+    return NULL;
+}
+
+LinkableMapObj* BranchObj::findID (QString sid)
+{
+       // Search branches
+    LinkableMapObj *lmo;
+       for (int i=0; i<branch.size(); ++i)
+    {  
+               lmo=branch.at(i)->findID (sid);
+               if (lmo != NULL) return lmo;
+    }
+       
+       // Search myself
+       if (sid==objID) return this;
+
+
+/*
+       // Search float images
+    for (int i=0; i<floatimage.size(); ++i )
+               if (floatimage.at(i)->inBox(p) && 
+                       (floatimage.at(i) != excludeLMO) && 
+                       floatimage.at(i)->getParObj()!= excludeLMO &&
+                       floatimage.at(i)->isVisibleObj() 
+               ) return floatimage.at(i);
+*/
+    return NULL;
+}
+
+void BranchObj::setHeading(QString s)
+{
+    heading->setText(s);       // set new heading
+       calcBBoxSize();                 // recalculate bbox
+    positionBBox();                    // rearrange contents
+       requestReposition();
+}
+
+void BranchObj::setHideTmp (HideTmpMode mode)
+{
+       if (mode==HideExport && (hideExport|| hasHiddenExportParent() ) )
+       {
+               // Hide stuff according to hideExport flag and parents
+               setVisibility (false);
+               hidden=true;
+       }else
+       {
+               // Do not hide, but still take care of scrolled status
+               if (hasScrolledParent(this))
+                       setVisibility (false);
+               else
+                       setVisibility (true);
+               hidden=false;
+       }       
+
+       // And take care of my childs
+       for (int i=0; i<branch.size(); ++i)
+               branch.at(i)->setHideTmp (mode);
+}
+
+bool BranchObj::hasHiddenExportParent()
+{
+       // Calls parents recursivly to
+       // find out, if we or parents are temp. hidden
+
+       if (hidden || hideExport) return true;
+
+       BranchObj* bo=(BranchObj*)parObj;
+       if (bo) 
+               return bo->hasHiddenExportParent();
+       else
+               return false;
+}
+
+QString BranchObj::saveToDir (const QString &tmpdir,const QString &prefix, const QPointF& offset)
+{
+       // Cloudy stuff can be hidden during exports
+       if (hidden) return "";
+
+       // Update of note is usually done while unselecting a branch
+       if (isNoteInEditor) getNoteFromTextEditor();
+       
+    QString s,a;
+       QString scrolledAttr;
+       if (scrolled) 
+               scrolledAttr=attribut ("scrolled","yes");
+       else
+               scrolledAttr="";
+
+       // save area, if not scrolled
+       QString areaAttr;
+       if (!((BranchObj*)(parObj))->isScrolled() )
+       {
+               areaAttr=
+                       attribut("x1",QString().setNum(absPos.x()-offset.x())) +
+                       attribut("y1",QString().setNum(absPos.y()-offset.y())) +
+                       attribut("x2",QString().setNum(absPos.x()+width()-offset.x())) +
+                       attribut("y2",QString().setNum(absPos.y()+height()-offset.y()));
+
+       } else
+               areaAttr="";
+       
+       // Providing an ID for a branch makes export to XHTML easier
+       QString idAttr;
+       if (countXLinks()>0)
+               idAttr=attribut ("id",mapEditor->getModel()->getSelectString(this)); //TODO directly access model
+       else
+               idAttr="";
+
+    s=beginElement ("branch" 
+               +getOrnXMLAttr() 
+               +scrolledAttr 
+               +areaAttr 
+               +idAttr 
+               +getIncludeImageAttr() );
+    incIndent();
+
+       // save heading
+    s+=valueElement("heading", getHeading(),
+               attribut ("textColor",QColor(heading->getColor()).name()));
+
+       // Save frame
+       if (frame->getFrameType()!=FrameObj::NoFrame) 
+               s+=frame->saveToDir ();
+
+       // save names of flags set
+       s+=standardFlags->saveToDir(tmpdir,prefix,0);
+       
+       // Save FloatImages
+       for (int i=0; i<floatimage.size(); ++i)
+               s+=floatimage.at(i)->saveToDir (tmpdir,prefix);
+
+       // save note
+       if (!note.isEmpty() )
+               s+=note.saveToDir();
+       
+       // Save branches
+       for (int i=0; i<branch.size(); ++i)
+               s+=branch.at(i)->saveToDir(tmpdir,prefix,offset);
+
+       // Save XLinks
+       QString ol;     // old link
+       QString cl;     // current link
+       for (int i=0; i<xlink.size(); ++i)
+       {
+               cl=xlink.at(i)->saveToDir();
+               if (cl!=ol)
+               {
+                       s+=cl;
+                       ol=cl;
+               } else
+               {
+                       qWarning (QString("Ignoring of duplicate xLink in %1").arg(getHeading()));
+               }
+       }       
+
+    decIndent();
+    s+=endElement   ("branch");
+    return s;
+}
+
+void BranchObj::addXLink (XLinkObj *xlo)
+{
+       xlink.append (xlo);
+       
+}
+
+void BranchObj::removeXLinkRef (XLinkObj *xlo)
+{
+       xlink.removeAt (xlink.indexOf(xlo));
+}
+
+void BranchObj::deleteXLink(XLinkObj *xlo)
+{
+       xlo->deactivate();
+       if (!xlo->isUsed()) delete (xlo);
+}
+
+void BranchObj::deleteXLinkAt (int i)
+{
+       XLinkObj *xlo=xlink.at(i);
+       xlo->deactivate();
+       if (!xlo->isUsed()) delete(xlo);
+}
+
+XLinkObj* BranchObj::XLinkAt (int i)
+{
+       return xlink.at(i);
+}
+
+int BranchObj::countXLink()
+{
+       return xlink.count();
+}
+
+
+BranchObj* BranchObj::XLinkTargetAt (int i)
+{
+       if (i>=0 && i<xlink.size())
+       {
+               if (xlink.at(i))
+                       return xlink.at(i)->otherBranch (this);
+       }
+       return NULL;
+}
+
+void BranchObj::setIncludeImagesVer(bool b)
+{
+       includeImagesVer=b;
+       calcBBoxSize();
+       positionBBox();
+       requestReposition();
+}
+
+bool BranchObj::getIncludeImagesVer()
+{
+       return includeImagesVer;
+}
+
+void BranchObj::setIncludeImagesHor(bool b)
+{
+       includeImagesHor=b;
+       calcBBoxSize();
+       positionBBox();
+       requestReposition();
+}
+
+bool BranchObj::getIncludeImagesHor()
+{
+       return includeImagesHor;
+}
+
+QString BranchObj::getIncludeImageAttr()
+{
+       QString a;
+       if (includeImagesVer)
+               a=attribut ("incImgV","true");
+       else
+               a=attribut ("incImgV","false");
+       if (includeImagesHor)
+               a+=attribut ("incImgH","true");
+       else
+               a+=attribut ("incImgH","false");
+       return a;       
+}
+
+FloatImageObj* BranchObj::addFloatImage ()
+{
+       FloatImageObj *newfi=new FloatImageObj (scene,this);
+       floatimage.append (newfi);
+       if (hasScrolledParent(this) )
+               newfi->setVisibility (false);
+       else    
+               newfi->setVisibility(visible);
+               /*
+       calcBBoxSize();
+       positionBBox();
+       */
+       requestReposition();
+       return newfi;
+}
+
+FloatImageObj* BranchObj::addFloatImage (FloatImageObj *fio)
+{
+       FloatImageObj *newfi=new FloatImageObj (scene,this);
+       floatimage.append (newfi);
+       newfi->copy (fio);
+       if (hasScrolledParent(this) )
+               newfi->setVisibility (false);
+       else    
+               newfi->setVisibility(visible);
+               /*
+       calcBBoxSize();
+       positionBBox();
+       */
+       requestReposition();
+       return newfi;
+}
+
+FloatImageObj* BranchObj::getFirstFloatImage ()
+{
+    return floatimage.first();
+}
+
+FloatImageObj* BranchObj::getLastFloatImage ()
+{
+    return floatimage.last();
+}
+
+FloatImageObj* BranchObj::getFloatImageNum (const uint &i)
+{
+    return floatimage.at(i);
+}
+
+void BranchObj::removeFloatImage (FloatImageObj *fio)
+{
+       int i=floatimage.indexOf (fio);
+       if (i>-1) delete (floatimage.takeAt (i));
+       calcBBoxSize();
+       positionBBox();
+       requestReposition();
+}
+
+void BranchObj::savePosInAngle ()
+{
+       // Save position in angle
+       for (int i=0; i<branch.size(); ++i)
+               branch.at(i)->angle=i;
+}
+
+void BranchObj::setDefAttr (BranchModification mod)
+{
+       int fontsize;
+       switch (depth)
+       {
+               case 0: fontsize=16; break;
+               case 1: fontsize=12; break;
+               default: fontsize=10; break;
+       }       
+
+       setLinkColor ();
+       setLinkStyle(getDefLinkStyle());
+       QFont font("Sans Serif,8,-1,5,50,0,0,0,0,0");
+       font.setPointSize(fontsize);
+       heading->setFont(font );
+
+       if (mod==NewBranch)
+               setColor (((BranchObj*)(parObj))->getColor());
+       
+       calcBBoxSize();
+}
+
+BranchObj* BranchObj::addBranch()
+{
+    BranchObj* newbo=new BranchObj(scene,this);
+    branch.append (newbo);
+    newbo->setParObj(this);
+       newbo->setDefAttr(NewBranch);
+    newbo->setHeading ("new");
+       if (scrolled)
+               newbo->setVisibility (false);
+       else    
+               newbo->setVisibility(visible);
+       newbo->updateLink();    
+       requestReposition();
+       return newbo;
+}
+
+BranchObj* BranchObj::addBranch(BranchObj* bo)
+{
+    BranchObj* newbo=new BranchObj(scene,this);
+    branch.append (newbo);
+    newbo->copy(bo);
+    newbo->setParObj(this);
+       newbo->setDefAttr(MovedBranch);
+       if (scrolled)
+               newbo->setVisibility (false);
+       else    
+               newbo->setVisibility(bo->visible);
+       newbo->updateLink();    
+       requestReposition();
+       return newbo;
+}
+
+BranchObj* BranchObj::addBranchPtr(BranchObj* bo)
+{
+       branch.append (bo);
+       bo->setParObj (this);
+       bo->depth=depth+1;
+       bo->setDefAttr(MovedBranch);
+       if (scrolled) tmpUnscroll();
+       setLastSelectedBranch (bo);
+       return bo;
+}
+
+BranchObj* BranchObj::insertBranch(int pos)
+{
+       savePosInAngle();
+       // Add new bo and resort branches
+       BranchObj *newbo=addBranch ();
+       newbo->angle=pos-0.5;
+       qSort (branch.begin(),branch.end(), isAbove);
+       return newbo;
+}
+
+BranchObj* BranchObj::insertBranch(BranchObj* bo, int pos)
+{
+       savePosInAngle();
+       // Add new bo and resort branches
+       bo->angle=pos-0.5;
+       BranchObj *newbo=addBranch (bo);
+       qSort (branch.begin(),branch.end(), isAbove);
+       return newbo;
+}
+
+BranchObj* BranchObj::insertBranchPtr (BranchObj* bo, int pos)
+{
+       savePosInAngle();
+       // Add new bo and resort branches
+       bo->angle=pos-0.5;
+       branch.append (bo);
+       bo->setParObj (this);
+       bo->depth=depth+1;
+       bo->setDefAttr (MovedBranch);
+       if (scrolled) tmpUnscroll();
+       setLastSelectedBranch (bo);
+       qSort (branch.begin(),branch.end(), isAbove);
+       return bo;
+}
+
+void BranchObj::removeBranchHere(BranchObj* borem)
+{
+       // This removes the branch bo from list, but 
+       // inserts its childs at the place of bo
+       BranchObj *bo;
+       bo=borem->getLastBranch();
+       int pos=borem->getNum();
+       while (bo)
+       {
+               bo->linkTo (this,pos+1);
+               bo=borem->getLastBranch();
+       }       
+       removeBranch (borem);
+}
+
+void BranchObj::removeChilds()
+{
+       clear();
+}
+
+void BranchObj::removeBranch(BranchObj* bo)
+{
+    // if bo is not in branch remove returns false, we
+    // don't care...
+       
+       int i=branch.indexOf(bo);
+    if (i>=0)
+       {
+               delete (bo);
+               branch.removeAt (i);
+       } else
+               qWarning ("BranchObj::removeBranch tried to remove non existing branch?!\n");
+       requestReposition();
+}
+
+void BranchObj::removeBranchPtr(BranchObj* bo)
+{
+       int i=branch.indexOf(bo);
+       
+       if (i>=0)
+               branch.removeAt (i);
+       else    
+               qWarning ("BranchObj::removeBranchPtr tried to remove non existing branch?!\n");
+       requestReposition();
+}
+
+void BranchObj::setLastSelectedBranch (BranchObj* bo)
+{
+    lastSelectedBranch=branch.indexOf(bo);
+}
+
+BranchObj* BranchObj::getLastSelectedBranch ()
+{
+    if (lastSelectedBranch>=0)
+       {
+               if ( branch.size()>lastSelectedBranch) 
+                       return branch.at(lastSelectedBranch);
+               if (branch.size()>0)
+                       return branch.last();
+       }       
+    return NULL;
+}
+
+BranchObj* BranchObj::getFirstBranch ()
+{
+       if (branch.size()>0)
+               return branch.first();
+       else
+               return NULL;
+}
+
+BranchObj* BranchObj::getLastBranch ()
+{
+       if (branch.size()>0)
+               return branch.last();
+       else
+               return NULL;
+}
+
+BranchObj* BranchObj::getBranchNum (int i)
+{
+       if (i>=0 && i<branch.size())
+               return branch.at(i);
+       else    
+               return  NULL;
+}
+
+bool BranchObj::canMoveBranchUp() 
+{
+       if (!parObj || depth==1) return false;
+       BranchObj* par=(BranchObj*)parObj;
+       if (this==par->getFirstBranch())
+               return false;
+       else
+               return true;
+}
+
+BranchObj* BranchObj::moveBranchUp(BranchObj* bo1) // modify my childlist
+{
+       savePosInAngle();
+    int i=branch.indexOf(bo1);
+    if (i>0) 
+       {       // -1 if bo1 not found 
+               branch.at(i)->angle--;
+               branch.at(i-1)->angle++;
+               qSort (branch.begin(),branch.end(), isAbove);
+               return branch.at(i);
+       } else
+               return NULL;
+}
+
+bool BranchObj::canMoveBranchDown() 
+{
+       if (!parObj|| depth==1) return false;
+       BranchObj* par=(BranchObj*)parObj;
+       if (this==par->getLastBranch())
+               return false;
+       else
+               return true;
+}
+
+BranchObj* BranchObj::moveBranchDown(BranchObj* bo1)// modify my childlist
+{
+       savePosInAngle();
+    int i=branch.indexOf(bo1);
+       int j;
+       if (i <branch.size())
+       {
+               j = i+1;
+               branch.at(i)->angle++;
+               branch.at(j)->angle--;
+               qSort (branch.begin(),branch.end(), isAbove);
+               return branch.at(i);
+       } else
+               return NULL;
+}
+
+void BranchObj::sortChildren()
+{
+       int childCount=branch.count();
+       int curChildIndex;
+       bool madeChanges=false;
+       do
+       {
+               madeChanges=false;
+               for(curChildIndex=1;curChildIndex<childCount;curChildIndex++){
+                       BranchObj* curChild=(BranchObj*)branch.at(curChildIndex);
+                       BranchObj* prevChild=(BranchObj*)branch.at(curChildIndex-1);
+                       if(prevChild->heading->text().compare(curChild->heading->text())>0)
+                       {
+                               this->moveBranchUp(curChild);
+                               madeChanges=true;
+                       }
+               }
+       }while(madeChanges);
+}
+
+
+BranchObj* BranchObj::linkTo (BranchObj* dst, int pos)
+{
+       // Find current parent and 
+       // remove pointer to myself there
+       if (!dst) return NULL;
+       BranchObj *par=(BranchObj*)parObj;
+       if (par)
+               par->removeBranchPtr (this);
+       else
+               return NULL;
+
+       // Create new pointer to myself at dst
+       if (pos<0||dst->getDepth()==0)
+       {       
+               // links myself as last branch at dst
+               dst->addBranchPtr (this);
+               updateLink();
+               return this;
+       } else
+       {
+               // inserts me at pos in parent of dst
+               if (par)
+               {
+                       BranchObj *bo=dst->insertBranchPtr (this,pos);
+                       bo->setDefAttr(MovedBranch);
+                       updateLink();
+                       return bo;
+
+               } else
+                       return NULL;
+       }       
+}
+
+void BranchObj::alignRelativeTo (QPointF ref,bool alignSelf)
+{
+       qreal th = bboxTotal.height();  
+// TODO testing
+/*
+       QPointF pp; if (parObj) pp=parObj->getChildPos();
+       cout << "BO::alignRelTo "<<qPrintable (getHeading());
+       cout << "    d="<<depth<<
+               "  ref="<<ref<<
+//             "  bbox.topLeft="<<bboxTotal.topLeft()<<
+               "  absPos="<<absPos<<
+               "  relPos="<<relPos<<
+               "  parPos="<<pp<<
+               "  orient="<<orientation<<
+//             "  pad="<<topPad<<","<<botPad<<","<<leftPad<<","<<rightPad<<
+//             "  hidden="<<hidden<<
+//             "  th="<<th<<
+               endl;
+*/
+
+       setOrientation();
+       //updateLink();
+
+       if (depth<2)
+       {
+               if (depth==1)
+               {
+                       // Position relatively, if needed
+                       //if (useRelPos) move2RelPos (relPos.x(), relPos.y());
+
+                       // Calc angle to mapCenter if I am a mainbranch
+                       // needed for reordering the mainbranches clockwise 
+                       // around mapcenter 
+                       angle=getAngle (QPointF ((int)(x() - parObj->getChildPos().x() ), 
+                                                                       (int)(y() - parObj->getChildPos().y() ) ) );
+               }                                                       
+       } 
+       else
+    {
+               // Align myself depending on orientation and parent, but
+               // only if I am not a mainbranch or mapcenter itself
+
+               if (anim.isAnimated())
+               {
+                       move2RelPos(anim);
+               } else
+               {
+                       LinkableMapObj::Orientation o;
+                       o=parObj->getOrientation();
+                       if (alignSelf)
+                               switch (orientation) 
+                               {
+                                       case LinkableMapObj::LeftOfCenter:
+                                               move (ref.x() - bbox.width(), ref.y() + (th-bbox.height())/2 );
+                                       break;
+                                       case LinkableMapObj::RightOfCenter:     
+                                               move (ref.x() , ref.y() + (th-bbox.height())/2  );
+                                       break;
+                                       default:
+                                               qWarning ("LMO::alignRelativeTo: oops, no orientation given...");
+                                       break;
+                               }       
+               }
+    }          
+
+       if (scrolled) return;
+
+    // Set reference point for alignment of childs
+    QPointF ref2;
+    if (orientation==LinkableMapObj::LeftOfCenter)
+               ref2.setX(bbox.topLeft().x() - linkwidth);
+    else       
+               ref2.setX(bbox.topRight().x() + linkwidth);
+
+       if (depth==1)
+               ref2.setY(absPos.y()-(bboxTotal.height()-bbox.height())/2);
+       else    
+               ref2.setY(ref.y() );    
+
+    // Align the childs depending on reference point 
+       for (int i=0; i<branch.size(); ++i)
+    {  
+               if (!branch.at(i)->isHidden())
+               {
+                       branch.at(i)->alignRelativeTo (ref2,true);
+                       ref2.setY(ref2.y() + branch.at(i)->getBBoxSizeWithChilds().height() );
+               }
+    }
+}
+
+
+void BranchObj::reposition()
+{      
+/* TODO testing only
+       if (!getHeading().isEmpty())
+               cout << "BO::reposition  "<<qPrintable(getHeading())<<endl;
+       else    
+               cout << "BO::reposition  ???"<<endl;
+
+       cout << "  orient="<<orientation<<endl;
+*/             
+
+       if (depth==0)
+       {
+               // only calculate the sizes once. If the deepest LMO 
+               // changes its height,
+               // all upper LMOs have to change, too.
+               calcBBoxSizeWithChilds();
+               updateLink();   // This update is needed if the scene is resized 
+                                               // due to excessive moving of a FIO
+
+           alignRelativeTo ( QPointF (absPos.x(),
+                       absPos.y()-(bboxTotal.height()-bbox.height())/2) );
+               qSort (branch.begin(),branch.end(), isAbove);
+               positionBBox(); // Reposition bbox and contents
+       } else
+       {
+               // This is only important for moving branches:
+               // For editing a branch it isn't called...
+           alignRelativeTo ( QPointF (absPos.x(),
+                                                       absPos.y()-(bboxTotal.height()-bbox.height())/2) );
+       }
+}
+
+void BranchObj::unsetAllRepositionRequests()
+{
+       repositionRequest=false;
+       for (int i=0; i<branch.size(); ++i)
+               branch.at(i)->unsetAllRepositionRequests();
+}
+
+
+QPolygonF BranchObj::shape()
+{
+       QPolygonF p;
+
+       QRectF r=getTotalBBox();
+       if (orientation==LinkableMapObj::LeftOfCenter)
+               p   <<r.bottomLeft()
+                       <<r.topLeft()
+                       <<QPointF (bbox.topLeft().x(), r.topLeft().y() )
+                       <<bbox.topRight()
+                       <<bbox.bottomRight()
+                       <<QPointF (bbox.bottomLeft().x(), r.bottomLeft().y() ) ;
+       else            
+               p   <<r.bottomRight()
+                       <<r.topRight()
+                       <<QPointF (bbox.topRight().x(), r.topRight().y() )
+                       <<bbox.topLeft()
+                       <<bbox.bottomLeft()
+                       <<QPointF (bbox.bottomRight().x(), r.bottomRight().y() ) ;
+       return p;
+}
+
+QRectF BranchObj::getTotalBBox()
+{
+       QRectF r=bbox;
+
+       if (scrolled) return r;
+
+       for (int i=0; i<branch.size(); ++i)
+               if (!branch.at(i)->isHidden())
+                       r=addBBox(branch.at(i)->getTotalBBox(),r);
+
+       for (int i=0; i<floatimage.size(); ++i)
+               if (!floatimage.at(i)->isHidden())
+                       r=addBBox(floatimage.at(i)->getTotalBBox(),r);
+               
+       return r;
+}
+
+QRectF BranchObj::getBBoxSizeWithChilds()
+{
+       return bboxTotal;
+}
+
+void BranchObj::calcBBoxSizeWithChilds()
+{      
+       // This is initially called only from reposition and
+       // and only for mapcenter. So it won't be
+       // called more than once for a single user 
+       // action
+       
+
+       // Calculate size of LMO including all childs (to align them later)
+       bboxTotal.setX(bbox.x() );
+       bboxTotal.setY(bbox.y() );
+
+       // if branch is scrolled, ignore childs, but still consider floatimages
+       if (scrolled)
+       {
+               bboxTotal.setWidth (bbox.width());
+               bboxTotal.setHeight(bbox.height());
+               return;
+       }
+       
+       if (hidden)
+       {
+               bboxTotal.setWidth (0);
+               bboxTotal.setHeight(0);
+               if (parObj)
+               {
+                       bboxTotal.setX (parObj->x());
+                       bboxTotal.setY (parObj->y());
+               } else
+               {
+                       bboxTotal.setX (bbox.x());
+                       bboxTotal.setY (bbox.y());
+               }
+               return;
+       }
+       
+       QRectF r(0,0,0,0);
+       QRectF br;
+       // Now calculate recursivly
+       // sum of heights 
+       // maximum of widths 
+       // minimum of y
+       for (int i=0; i<branch.size(); ++i)
+       {
+               if (!branch.at(i)->isHidden())
+               {
+                       branch.at(i)->calcBBoxSizeWithChilds();
+                       br=branch.at(i)->getBBoxSizeWithChilds();
+                       r.setWidth( max (br.width(), r.width() ));
+                       r.setHeight(br.height() + r.height() );
+                       if (br.y()<bboxTotal.y()) bboxTotal.setY(br.y());
+               }
+       }
+       // Add myself and also
+       // add width of link to sum if necessary
+       if (branch.isEmpty())
+               bboxTotal.setWidth (bbox.width() + r.width() );
+       else    
+               bboxTotal.setWidth (bbox.width() + r.width() + linkwidth);
+       
+       bboxTotal.setHeight(max (r.height(),  bbox.height()));
+}
+
+void BranchObj::select()
+{
+       // update NoteEditor
+       textEditor->setText(note.getNote() );
+       QString fnh=note.getFilenameHint();
+       if (fnh!="")
+               textEditor->setFilenameHint(note.getFilenameHint() );
+       else    
+               textEditor->setFilenameHint(getHeading() );
+       textEditor->setFontHint (note.getFontHint() );
+       isNoteInEditor=true;
+
+       // set selected and visible
+    LinkableMapObj::select();
+
+       // Tell parent that I am selected now:
+       BranchObj* po=(BranchObj*)(parObj);
+    if (po)    // TODO     Try to get rid of this cast...
+        po->setLastSelectedBranch(this);
+               
+       // temporary unscroll, if we have scrolled parents somewhere
+       if (parObj) ((BranchObj*)(parObj))->tmpUnscroll();
+
+       // Show URL and link in statusbar
+       QString status;
+       if (!url.isEmpty()) status+="URL: "+url+"  ";
+       if (!vymLink.isEmpty()) status+="Link: "+vymLink;
+       if (!status.isEmpty()) mainWindow->statusMessage (status);
+
+       // Update Toolbar
+       updateFlagsToolbar();
+
+       // Update actions
+       mapEditor->updateActions();
+}
+
+void BranchObj::unselect()
+{
+       LinkableMapObj::unselect();
+       // Delete any messages like vymLink in StatusBar
+       mainWindow->statusMessage ("");
+
+       // Save current note
+       if (isNoteInEditor) getNoteFromTextEditor();
+       isNoteInEditor=false;
+
+       // reset temporary unscroll, if we have scrolled parents somewhere
+       if (parObj) ((BranchObj*)(parObj))->resetTmpUnscroll();
+
+       // Erase content of editor 
+       textEditor->setInactive();
+
+       // unselect all buttons in toolbar
+       standardFlagsDefault->updateToolbar();
+}
+
+QString BranchObj::getSelectString()
+{
+       return mapEditor->getModel()->getSelectString (this);
+}
+
+void BranchObj::setAnimation(const AnimPoint &ap)
+{
+       anim=ap;
+}
+
+bool BranchObj::animate()
+{
+       anim.animate ();
+       if ( anim.isAnimated() )
+       {
+               setRelPos (anim);
+               return true;
+       }
+       parObj->reposition();   // object might have been relinked meanwhile
+       return false;
+}
+
diff --git a/branchobj.h b/branchobj.h
new file mode 100644 (file)
index 0000000..135a9fd
--- /dev/null
@@ -0,0 +1,156 @@
+#ifndef BRANCHOBJ_H
+#define BRANCHOBJ_H
+
+#include "floatimageobj.h"
+#include "linkablemapobj.h"
+#include "ornamentedobj.h"
+#include "xlinkobj.h"
+
+
+bool isAbove(BranchObj*,BranchObj*);
+
+/*! \brief A branch visible in the map */
+
+/*! If HideExport is used, this branch and its childs will be hidden in export */
+enum HideTmpMode {HideNone, HideExport};
+
+
+/////////////////////////////////////////////////////////////////////////////
+class BranchObj:public OrnamentedObj {
+public:
+       /*! New branches will get use same color for heading as parent */
+       enum BranchModification {NewBranch, MovedBranch};
+
+
+    BranchObj ();
+    BranchObj (QGraphicsScene*);
+    BranchObj (QGraphicsScene*, LinkableMapObj* parent);
+    ~BranchObj ();
+       bool operator< ( const BranchObj & );
+       bool operator== ( const BranchObj & );
+    virtual void init ();
+    virtual void copy (BranchObj*);
+    void clear();
+       virtual int getNum();                           // return number of this in parent
+       virtual int getNum(BranchObj*);         // return number of this in parent
+       virtual int getFloatImageNum(FloatImageObj*);           
+       virtual int countBranches();            
+       virtual int countFloatImages();         
+       virtual int countXLinks();              
+    virtual void setParObjTmp (LinkableMapObj*,QPointF,int);// Only for moving Obj around
+       virtual void unsetParObjTmp();                  // reuse original ParObj
+
+       virtual void unScroll();                                
+       virtual void toggleScroll();                    // scroll or unscroll
+       virtual bool isScrolled();                              // returns scroll state
+       virtual bool hasScrolledParent(BranchObj*);     // true, if any of the parents is scrolled
+       virtual void tmpUnscroll();                             // unscroll scrolled parents temporary e.g. during "find" process
+       virtual void resetTmpUnscroll();                // scroll all tmp scrolled parents again e.g. when unselecting
+
+       virtual void setVisibility(bool,int);   // set visibility
+    virtual void setVisibility(bool);      // set vis. for w
+       virtual void setLinkColor();                    // set the color of link
+       virtual void setColorSubtree(QColor);   // set the color of heading
+
+       BranchObj* first ();                            // set Iterator to first LMO
+       BranchObj* next ();                                     // find next LMO after given one
+       BranchObj* getLastIterator();           // to interrupt and resume next iteration
+       void setLastIterator (BranchObj*);      // needed by next() 
+
+       virtual void positionContents();
+    virtual void move (double x,double y);
+    virtual void move (QPointF);
+    virtual void moveBy (double x,double y);
+    virtual void moveBy (QPointF);
+    virtual void positionBBox();
+    virtual void calcBBoxSize();
+       virtual void setDockPos();
+    virtual LinkableMapObj* findMapObj(QPointF,LinkableMapObj*);       // find MapObj 
+    virtual LinkableMapObj* findID (QString sid);      // find Obj by ID string
+    virtual void setHeading (QString);
+
+       virtual void setHideTmp (HideTmpMode);
+       virtual bool hasHiddenExportParent ();
+
+       virtual QString saveToDir (const QString&,const QString&, const QPointF&);// Save data recursivly to tempdir
+       virtual void addXLink (XLinkObj*);
+       virtual void removeXLinkRef (XLinkObj*);// Remove ref in list
+       virtual void deleteXLink (XLinkObj*);   // remove references and delete XLinkObj 
+       virtual void deleteXLinkAt (int);               // remove references and delete XLinkObj 
+       virtual XLinkObj* XLinkAt (int);                // return reference of XLinkObj 
+       virtual int countXLink ();
+       virtual BranchObj* XLinkTargetAt (int);
+       void setIncludeImagesVer(bool);
+       bool getIncludeImagesVer();
+       void setIncludeImagesHor(bool);
+       bool getIncludeImagesHor();
+       QString getIncludeImageAttr();
+       virtual FloatImageObj* addFloatImage();
+       virtual FloatImageObj* addFloatImage(FloatImageObj*);
+       virtual void removeFloatImage(FloatImageObj*);
+    virtual FloatImageObj* getFirstFloatImage();
+    virtual FloatImageObj* getLastFloatImage();
+       virtual FloatImageObj* getFloatImageNum(const uint &);
+protected:     
+       virtual void savePosInAngle();                                  // write pos in angle for resorting                     
+       virtual void setDefAttr (BranchModification);   // set default attributes (font, size, ...)
+public:        
+    virtual BranchObj* addBranch();
+    virtual BranchObj* addBranch(BranchObj*);          // makes deep copy of BranchObj
+    virtual BranchObj* addBranchPtr(BranchObj*);       // just adds pointer
+    virtual BranchObj* insertBranch(int);
+    virtual BranchObj* insertBranch(BranchObj*,int);
+    virtual BranchObj* insertBranchPtr (BranchObj*,int);
+    virtual void removeBranchHere(BranchObj*);  
+    virtual void removeChilds();  
+    virtual void removeBranch(BranchObj*);  
+    virtual void removeBranchPtr (BranchObj*);  
+    virtual void setLastSelectedBranch(BranchObj*);
+    virtual BranchObj* getLastSelectedBranch();
+    virtual BranchObj* getFirstBranch();
+    virtual BranchObj* getLastBranch();
+       virtual BranchObj* getBranchNum(int);
+    virtual bool canMoveBranchUp();
+    virtual BranchObj* moveBranchUp(BranchObj*);
+    virtual bool canMoveBranchDown();
+    virtual BranchObj* moveBranchDown(BranchObj*);
+    virtual void sortChildren();
+    virtual BranchObj* linkTo (BranchObj*, int);
+    virtual void alignRelativeTo(const QPointF ref, bool alignSelf=false );
+       virtual void reposition();
+       virtual void unsetAllRepositionRequests();
+
+       virtual QPolygonF shape();                              //!< Returns arbitrary bounding polygon
+       virtual QRectF getTotalBBox();                  // return BBox including childs                 
+       virtual QRectF getBBoxSizeWithChilds(); // return size of BBox including childs  
+       virtual void calcBBoxSizeWithChilds();  // calc size of  BBox including childs recursivly
+
+    virtual void select();
+    virtual void unselect();
+       virtual QString getSelectString();
+       virtual void setAnimation(const AnimPoint &ap);
+       virtual bool animate();
+
+protected:
+       static BranchObj* itLast;               // iterator for first(), next()
+       static BranchObj* itFirst;              // first iterator for first(), next()
+    QList<BranchObj*> branch;          // all child branches
+       QList<FloatImageObj*> floatimage;// child images
+       QList<XLinkObj*> xlink;                 // xlinks to other branches
+
+       AnimPoint anim;
+
+public:        
+       float angle;                                    // used in mainbranch to reorder mainbranches
+protected:     
+    int lastSelectedBranch;                    // for going deeper into tree
+       bool scrolled;                                  // true if all childs are scrolled and thus invisible
+       bool tmpUnscrolled;                             // can only be true (temporary) for a scrolled subtree
+       bool includeImagesVer;                  // include floatimages in bbox vertically
+       bool includeImagesHor;                  // include floatimages in bbox horizontally
+
+};
+
+
+#endif
+
diff --git a/branchpropwindow.cpp b/branchpropwindow.cpp
new file mode 100644 (file)
index 0000000..c161040
--- /dev/null
@@ -0,0 +1,332 @@
+#include "branchpropwindow.h"
+
+#include <QColorDialog>
+
+#include "frameobj.h"
+#include "settings.h"
+
+extern Settings settings;
+extern QString vymName;
+
+
+BranchPropertyWindow::BranchPropertyWindow (QWidget *parent): QDialog (parent)
+{
+       ui.setupUi (this);
+
+       setCaption(vymName +" - " +tr ("Property Editor","Window caption"));
+
+       branch=NULL;
+       mapEditor=NULL;
+
+       ui.tabWidget->setEnabled(false);
+
+       penColor=QColor (Qt::black);
+       brushColor=QColor (Qt::black);
+    QPixmap pix( 16,16);
+    pix.fill (penColor);
+       ui.framePenColorButton->setPixmap (pix);
+       ui.frameBrushColorButton->setPixmap (pix);
+
+       // Create Model and View to hold attributes
+       attributeModel = new QStandardItemModel (1,3,this);
+       attributeModel->setHeaderData(0, Qt::Horizontal, tr("Name","Branchprop window: Attribute name"));
+       attributeModel->setHeaderData(1, Qt::Horizontal, tr("Value","Branchprop window: Attribute value"));
+       attributeModel->setHeaderData(2, Qt::Horizontal, tr("Type","Branchprop window: Attribute type"));
+       ui.attributeTableView->setModel (attributeModel);
+       
+
+       // Load Settings
+       resize (settings.value ( "/satellite/propertywindow/geometry/size", QSize(450,600)).toSize());
+       move   (settings.value ( "/satellite/propertywindow/geometry/pos", QPoint (250,50)).toPoint());
+       
+       if (settings.value ( "/satellite/propertywindow/showWithMain",true).toBool())
+               show();
+       else    
+               hide();
+
+       // FIXME for now remove attribute tab
+       ui.tabWidget->removeTab (3);
+
+}
+
+BranchPropertyWindow::~BranchPropertyWindow ()
+{
+       settings.setValue( "/satellite/propertywindow/geometry/size", size() );
+       settings.setValue( "/satellite/propertywindow/geometry/pos", pos() );
+       settings.setValue( "/satellite/propertywindow/showWithMain",isVisible() );
+}
+
+void BranchPropertyWindow::setBranch (BranchObj *bo)
+{
+       disconnectSignals();
+       branch=bo;
+       if (bo) 
+       {
+               ui.tabWidget->setEnabled (true);
+
+               // Frame
+               FrameObj::FrameType t=branch->getFrameType();
+               if (t==FrameObj::NoFrame)
+               {
+                       ui.frameTypeCombo->setCurrentIndex (0);
+                       penColor=Qt::white;
+                       brushColor=Qt::white;
+                       ui.colorGroupBox->setEnabled (false);
+                       ui.framePaddingSpinBox->setEnabled (false);
+                       ui.frameWidthSpinBox->setEnabled (false);
+                       ui.framePaddingLabel->setEnabled (false);
+                       ui.frameBorderLabel->setEnabled (false);
+               } else  
+               {
+                       penColor=bo->getFramePenColor();
+                       brushColor=bo->getFrameBrushColor();
+                       QPixmap pix( 16,16);
+                       pix.fill (penColor);
+                       ui.framePenColorButton->setPixmap (pix);
+                       pix.fill (brushColor);
+                       ui.frameBrushColorButton->setPixmap (pix);
+                       ui.colorGroupBox->setEnabled (true);
+                       ui.framePaddingSpinBox->setEnabled (true);
+                       ui.framePaddingSpinBox->setValue (bo->getFramePadding());
+                       ui.frameWidthSpinBox->setEnabled (true);
+                       ui.frameWidthSpinBox->setValue (bo->getFrameBorderWidth());
+                       ui.framePaddingLabel->setEnabled (true);
+                       ui.frameBorderLabel->setEnabled (true);
+
+                       switch (t)
+                       {
+                               case FrameObj::Rectangle: 
+                                       ui.frameTypeCombo->setCurrentIndex (1);
+                                       break;
+                               case FrameObj::Ellipse: 
+                                       ui.frameTypeCombo->setCurrentIndex (2);
+                                       break;
+                               default: 
+                                       break;
+                       }
+               }       
+               
+               // Link
+               if (branch->getHideLinkUnselected())
+                       ui.hideLinkIfUnselected->setCheckState (Qt::Checked);
+               else    
+                       ui.hideLinkIfUnselected->setCheckState (Qt::Unchecked);
+
+               // Layout
+               if (branch->getIncludeImagesVer())
+                       ui.incImgVer->setCheckState (Qt::Checked);
+               else    
+                       ui.incImgVer->setCheckState (Qt::Unchecked);
+               if (branch->getIncludeImagesHor())
+                       ui.incImgHor->setCheckState (Qt::Checked);
+               else    
+                       ui.incImgHor->setCheckState (Qt::Unchecked);
+
+               // Attributes
+               attributeModel->removeRows(0, attributeModel->rowCount(), QModelIndex());
+
+               // FIXME some samples for testing
+               QStringList attrTypes=mapEditor->attributeTable()->getTypes();
+               for (int i=0; i<attrTypes.count()-1;i++)
+               {
+                       attributeModel->insertRow (i,QModelIndex ());
+                       attributeModel->setData(attributeModel->index(i, 0, QModelIndex()), QString ("Name %1").arg(i));
+                       attributeModel->setData(attributeModel->index(i, 1, QModelIndex()), i);
+                       attributeModel->setData(attributeModel->index(i, 2, QModelIndex()), attrTypes.at(i));
+               }
+
+
+               ui.attributeTableView->resizeColumnsToContents();
+
+               // Initialize Delegate
+               delegate.setAttributeTable (mapEditor->attributeTable());
+               ui.attributeTableView->setItemDelegate (&delegate);
+
+
+               // Finally activate signals
+               connectSignals();
+       } else
+       {
+               ui.tabWidget->setEnabled (false);
+       }
+}
+
+void BranchPropertyWindow::setMapEditor (MapEditor *me)
+{
+       mapEditor=me;
+       if (mapEditor) 
+               setBranch (mapEditor->getSelectedBranch() );
+       else
+               ui.tabWidget->setEnabled (false);
+               
+}
+
+void BranchPropertyWindow::frameTypeChanged (int i)
+{
+       if (mapEditor)
+       {
+               switch (i)
+               {
+                       case 0: mapEditor->setFrameType (FrameObj::NoFrame); break;
+                       case 1: 
+                               mapEditor->setFrameType (FrameObj::Rectangle); 
+                               break;
+                       case 2: 
+                               mapEditor->setFrameType (FrameObj::Ellipse); 
+                               mapEditor->setFramePadding (5); 
+                               break;
+               }
+               setBranch (branch);
+       }       
+}
+
+void BranchPropertyWindow::framePenColorClicked()
+{
+       if (mapEditor) 
+       {       
+               QColor col = QColorDialog::getColor( penColor, this );
+               if ( col.isValid() ) 
+               {
+                       penColor=col;
+                       mapEditor->setFramePenColor (penColor);
+               }       
+       }
+}
+
+void BranchPropertyWindow::frameBrushColorClicked()
+{
+       if (mapEditor) 
+       {
+               QColor col = QColorDialog::getColor( brushColor, this );
+               if ( col.isValid() ) 
+               {
+                       brushColor=col;
+                       mapEditor->setFrameBrushColor (brushColor);
+               }       
+       }       
+}
+
+void BranchPropertyWindow::framePaddingChanged(int i)
+{
+       if (mapEditor) mapEditor->setFramePadding (i);
+}
+
+void BranchPropertyWindow::frameBorderWidthChanged(int i)
+{
+       if (mapEditor) mapEditor->setFrameBorderWidth(i);
+}
+
+void BranchPropertyWindow::linkHideUnselectedChanged (int i)
+{
+       if (!branch) return;
+       mapEditor->setHideLinkUnselected(i);
+}
+
+void BranchPropertyWindow::incImgVerChanged (int  i)
+{
+       if (mapEditor) mapEditor->setIncludeImagesVer (i);
+}
+
+void BranchPropertyWindow::incImgHorChanged (int  i)
+{
+       if (mapEditor) mapEditor->setIncludeImagesHor (i);
+}
+
+void BranchPropertyWindow::closeEvent( QCloseEvent* ce )
+{
+    ce->accept();      // can be reopened with show()
+       hide();
+       emit (windowClosed() );
+    return;
+}
+
+void BranchPropertyWindow::addAttributeClicked()
+{
+       // Add empty line for adding attributes
+       attributeModel->insertRow (attributeModel->rowCount (),QModelIndex ());
+       attributeModel->setData(attributeModel->index(attributeModel->rowCount()-1, 0, QModelIndex()),  "Add new");
+       attributeModel->setData(attributeModel->index(attributeModel->rowCount()-1, 2, QModelIndex()),  "Undefined");
+
+       // Select attribute from list
+       ui.attributeTableView->edit (attributeModel->index(attributeModel->rowCount()-1,0, QModelIndex() ));
+       ui.attributeTableView->resizeColumnsToContents();
+
+//     QString attname=attributeModel->in
+//     attributeModel->setData(attributeModel->index(attributeModel->rowCount()-1, 2, QModelIndex()),  );
+
+
+
+       ui.attributeTableView->edit (attributeModel->index(attributeModel->rowCount()-1,1, QModelIndex() ));
+
+}
+
+void BranchPropertyWindow::deleteAttributeClicked()
+{
+       cout << "BPW::delete\n";
+}
+
+void BranchPropertyWindow::connectSignals()
+{
+       // Frame
+       connect ( 
+               ui.framePenColorButton, SIGNAL (clicked()), 
+               this, SLOT (framePenColorClicked()));
+       connect ( 
+               ui.framePaddingSpinBox, SIGNAL (valueChanged( int)), 
+               this, SLOT (framePaddingChanged (int)));
+       connect ( 
+               ui.frameWidthSpinBox, SIGNAL (valueChanged( int)), 
+               this, SLOT (frameBorderWidthChanged (int)));
+       connect ( 
+               ui.frameBrushColorButton, SIGNAL (clicked()), 
+               this, SLOT (frameBrushColorClicked()));
+       connect ( 
+               ui.frameTypeCombo, SIGNAL (currentIndexChanged( int)), 
+               this, SLOT (frameTypeChanged (int)));
+
+
+       // Link 
+       connect ( 
+               ui.hideLinkIfUnselected, SIGNAL (stateChanged( int)), 
+               this, SLOT (linkHideUnselectedChanged (int)));
+
+       // Layout       
+       connect ( 
+               ui.incImgVer, SIGNAL (stateChanged( int)), 
+               this, SLOT (incImgVerChanged (int)));
+       connect ( 
+               ui.incImgHor, SIGNAL (stateChanged( int)), 
+               this, SLOT (incImgHorChanged (int)));
+
+       // Attributes   
+       connect ( 
+               ui.addAttributeButton, SIGNAL (clicked()), 
+               this, SLOT (addAttributeClicked()));
+       connect ( 
+               ui.deleteAttributeButton, SIGNAL (clicked()), 
+               this, SLOT (deleteAttributeClicked()));
+}
+
+
+void BranchPropertyWindow::disconnectSignals()
+{
+       // Frame 
+       disconnect ( ui.frameTypeCombo, 0,0,0);
+       disconnect ( ui.framePenColorButton, 0,0,0);
+       disconnect ( ui.framePaddingSpinBox, 0,0,0);
+       disconnect ( ui.frameWidthSpinBox, 0,0,0);
+       disconnect ( ui.frameBrushColorButton, 0,0,0);
+
+       // Link 
+       disconnect ( ui.hideLinkIfUnselected, 0,0,0);
+
+       // Layout       
+       disconnect ( ui.incImgVer, 0,0,0);
+       disconnect ( ui.incImgHor, 0,0,0);
+
+       // Attributes
+       disconnect ( ui.addAttributeButton, 0,0,0);
+       disconnect ( ui.deleteAttributeButton, 0,0,0);
+}
+
+
diff --git a/branchpropwindow.h b/branchpropwindow.h
new file mode 100644 (file)
index 0000000..ebca80f
--- /dev/null
@@ -0,0 +1,62 @@
+#ifndef BRANCHPROPERTYWINDOW_H
+#define BRANCHPROPERTYWINDOW_H
+
+#include "ui_branchpropwindow.h"
+
+#include <QDialog>
+#include <QCloseEvent>
+#include <QtGui>
+
+
+#include "attributedelegate.h"
+#include "branchobj.h"
+#include "mapeditor.h"
+
+
+class QAbstractItemModel;
+
+class BranchPropertyWindow:public QDialog
+{
+       Q_OBJECT
+public:
+       BranchPropertyWindow (QWidget *parent=0);
+       ~BranchPropertyWindow ();
+       void setBranch (BranchObj *);
+       void setMapEditor (MapEditor *);
+
+private slots:
+       void frameTypeChanged (int);
+       void framePenColorClicked ();
+       void frameBrushColorClicked ();
+       void framePaddingChanged(int);
+       void frameBorderWidthChanged(int);
+       void linkHideUnselectedChanged (int);
+       void incImgVerChanged (int);
+       void incImgHorChanged (int);
+       void addAttributeClicked();
+       void deleteAttributeClicked();
+
+signals:
+       void windowClosed();
+       
+protected:
+       void closeEvent( QCloseEvent* );
+
+private:
+       void connectSignals();
+       void disconnectSignals();
+       
+       Ui::BranchPropertyWindow ui;
+
+       BranchObj *branch;
+       MapEditor *mapEditor;
+
+       QColor penColor;
+       QColor brushColor;
+
+       QAbstractItemModel *attributeModel;
+
+       AttributeDelegate delegate;
+};
+
+#endif // 
diff --git a/branchpropwindow.ui b/branchpropwindow.ui
new file mode 100644 (file)
index 0000000..b31eac9
--- /dev/null
@@ -0,0 +1,440 @@
+<ui version="4.0" >
+ <class>BranchPropertyWindow</class>
+ <widget class="QWidget" name="BranchPropertyWindow" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>398</width>
+    <height>350</height>
+   </rect>
+  </property>
+  <property name="sizePolicy" >
+   <sizepolicy vsizetype="Preferred" hsizetype="Minimum" >
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle" >
+   <string>Branch Property Editor</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <item>
+    <widget class="QTabWidget" name="tabWidget" >
+     <property name="currentIndex" >
+      <number>3</number>
+     </property>
+     <widget class="QWidget" name="tab" >
+      <attribute name="title" >
+       <string>Frame</string>
+      </attribute>
+      <layout class="QVBoxLayout" >
+       <property name="spacing" >
+        <number>6</number>
+       </property>
+       <property name="leftMargin" >
+        <number>9</number>
+       </property>
+       <property name="topMargin" >
+        <number>9</number>
+       </property>
+       <property name="rightMargin" >
+        <number>9</number>
+       </property>
+       <property name="bottomMargin" >
+        <number>9</number>
+       </property>
+       <item>
+        <widget class="QGroupBox" name="groupBox" >
+         <property name="title" >
+          <string>Geometry</string>
+         </property>
+         <layout class="QGridLayout" >
+          <item row="0" column="0" colspan="4" >
+           <widget class="QComboBox" name="frameTypeCombo" >
+            <property name="sizePolicy" >
+             <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <item>
+             <property name="text" >
+              <string>No Frame</string>
+             </property>
+            </item>
+            <item>
+             <property name="text" >
+              <string>Rectangle</string>
+             </property>
+            </item>
+            <item>
+             <property name="text" >
+              <string>Ellipse</string>
+             </property>
+            </item>
+           </widget>
+          </item>
+          <item row="1" column="3" >
+           <spacer>
+            <property name="orientation" >
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeHint" >
+             <size>
+              <width>40</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item row="1" column="1" colspan="2" >
+           <widget class="QLabel" name="framePaddingLabel" >
+            <property name="text" >
+             <string>Padding</string>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="1" colspan="2" >
+           <widget class="QLabel" name="frameBorderLabel" >
+            <property name="text" >
+             <string>Borderline width</string>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="0" >
+           <widget class="QSpinBox" name="framePaddingSpinBox" >
+            <property name="maximum" >
+             <number>50</number>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="0" >
+           <widget class="QSpinBox" name="frameWidthSpinBox" >
+            <property name="minimum" >
+             <number>1</number>
+            </property>
+            <property name="maximum" >
+             <number>20</number>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <layout class="QVBoxLayout" >
+         <property name="spacing" >
+          <number>6</number>
+         </property>
+         <property name="leftMargin" >
+          <number>0</number>
+         </property>
+         <property name="topMargin" >
+          <number>0</number>
+         </property>
+         <property name="rightMargin" >
+          <number>0</number>
+         </property>
+         <property name="bottomMargin" >
+          <number>0</number>
+         </property>
+         <item>
+          <widget class="QGroupBox" name="colorGroupBox" >
+           <property name="sizePolicy" >
+            <sizepolicy vsizetype="Preferred" hsizetype="Expanding" >
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="title" >
+            <string>Colors</string>
+           </property>
+           <layout class="QGridLayout" >
+            <property name="leftMargin" >
+             <number>7</number>
+            </property>
+            <property name="topMargin" >
+             <number>7</number>
+            </property>
+            <property name="rightMargin" >
+             <number>7</number>
+            </property>
+            <property name="bottomMargin" >
+             <number>7</number>
+            </property>
+            <property name="horizontalSpacing" >
+             <number>6</number>
+            </property>
+            <property name="verticalSpacing" >
+             <number>6</number>
+            </property>
+            <item row="0" column="0" >
+             <widget class="QPushButton" name="framePenColorButton" >
+              <property name="maximumSize" >
+               <size>
+                <width>20</width>
+                <height>16777215</height>
+               </size>
+              </property>
+              <property name="text" >
+               <string/>
+              </property>
+             </widget>
+            </item>
+            <item row="0" column="1" >
+             <widget class="QLabel" name="penColorLabelDesc" >
+              <property name="sizePolicy" >
+               <sizepolicy vsizetype="Preferred" hsizetype="Expanding" >
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="text" >
+               <string>Borderline color</string>
+              </property>
+              <property name="buddy" >
+               <cstring>framePenColorButton</cstring>
+              </property>
+             </widget>
+            </item>
+            <item row="1" column="0" >
+             <widget class="QPushButton" name="frameBrushColorButton" >
+              <property name="maximumSize" >
+               <size>
+                <width>20</width>
+                <height>16777215</height>
+               </size>
+              </property>
+              <property name="text" >
+               <string/>
+              </property>
+             </widget>
+            </item>
+            <item row="1" column="1" >
+             <widget class="QLabel" name="brushColorLabelDesc" >
+              <property name="text" >
+               <string>Background color</string>
+              </property>
+              <property name="buddy" >
+               <cstring>frameBrushColorButton</cstring>
+              </property>
+             </widget>
+            </item>
+            <item row="0" column="2" >
+             <spacer>
+              <property name="orientation" >
+               <enum>Qt::Horizontal</enum>
+              </property>
+              <property name="sizeHint" >
+               <size>
+                <width>40</width>
+                <height>20</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+           </layout>
+          </widget>
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="Layout" >
+      <attribute name="title" >
+       <string>Layout</string>
+      </attribute>
+      <layout class="QVBoxLayout" >
+       <item>
+        <layout class="QVBoxLayout" >
+         <item>
+          <widget class="QCheckBox" name="incImgHor" >
+           <property name="text" >
+            <string>Include images horizontally</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QCheckBox" name="incImgVer" >
+           <property name="text" >
+            <string>Include images vertically</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <spacer>
+         <property name="orientation" >
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" >
+          <size>
+           <width>20</width>
+           <height>40</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="tab_2" >
+      <attribute name="title" >
+       <string>Link</string>
+      </attribute>
+      <layout class="QVBoxLayout" >
+       <item>
+        <widget class="QCheckBox" name="hideLinkIfUnselected" >
+         <property name="text" >
+          <string>Hide link if unselected</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer>
+         <property name="orientation" >
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" >
+          <size>
+           <width>20</width>
+           <height>40</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="tab_3" >
+      <attribute name="title" >
+       <string>Attributes</string>
+      </attribute>
+      <layout class="QVBoxLayout" >
+       <item>
+        <widget class="QTableView" name="attributeTableView" />
+       </item>
+       <item>
+        <layout class="QHBoxLayout" >
+         <property name="spacing" >
+          <number>6</number>
+         </property>
+         <property name="leftMargin" >
+          <number>0</number>
+         </property>
+         <property name="topMargin" >
+          <number>0</number>
+         </property>
+         <property name="rightMargin" >
+          <number>0</number>
+         </property>
+         <property name="bottomMargin" >
+          <number>0</number>
+         </property>
+         <item>
+          <widget class="QPushButton" name="addAttributeButton" >
+           <property name="text" >
+            <string>+</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QPushButton" name="deleteAttributeButton" >
+           <property name="text" >
+            <string>-</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer>
+           <property name="orientation" >
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeHint" >
+            <size>
+             <width>41</width>
+             <height>31</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </widget>
+    </widget>
+   </item>
+   <item>
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>323</width>
+       <height>16</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" >
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <property name="leftMargin" >
+      <number>0</number>
+     </property>
+     <property name="topMargin" >
+      <number>0</number>
+     </property>
+     <property name="rightMargin" >
+      <number>0</number>
+     </property>
+     <property name="bottomMargin" >
+      <number>0</number>
+     </property>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>41</width>
+         <height>31</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="closeButton" >
+       <property name="text" >
+        <string>Close</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>closeButton</sender>
+   <signal>clicked()</signal>
+   <receiver>BranchPropertyWindow</receiver>
+   <slot>close()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>315</x>
+     <y>173</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>171</x>
+     <y>103</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/debian/.pc/.version b/debian/.pc/.version
new file mode 100644 (file)
index 0000000..0cfbf08
--- /dev/null
@@ -0,0 +1 @@
+2
diff --git a/debian/README.Debian b/debian/README.Debian
new file mode 100644 (file)
index 0000000..c1fe2bb
--- /dev/null
@@ -0,0 +1,23 @@
+CUPS CONFIGURATION ISSUE:
+=========================
+
+Invoking vym just blocks (no gui is launched) due to a CUPS configuration.
+
+socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 22
+setsockopt(22, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
+setsockopt(22, SOL_TCP, TCP_NODELAY, [1], 4) = 0
+fcntl(22, F_SETFD, FD_CLOEXEC)          = 0
+connect(22, {sa_family=AF_INET, sin_port=htons(631), sin_addr=inet_addr("134.157.168.55")}, 16
+
+It seems to try to connect to some cups server. Anyway vym should come up even
+when cups is not running.
+
+SOLUTION:
+=========
+
+Changing the cups configuration works.
+
+http://localhost:631/admin 
+Show printers from other systems (or similar) = OFF
+
+Xavier Oswald <x.oswald@free.fr>
diff --git a/debian/changelog b/debian/changelog
new file mode 100644 (file)
index 0000000..126765b
--- /dev/null
@@ -0,0 +1,166 @@
+vym (1.12.2-1) unstable; urgency=low
+
+  * New upstream release
+  * Fix Icon and .desktop file installation thanks to Nathan Handler
+    <nhandler@ubuntu.com> patch (Closes: #504932)
+  * Fix import/export KDE bookmarks (Closes: #499894)
+  * Fix imposed language despite using language locale (Closes: #505312)
+
+ -- Xavier Oswald <x.oswald@free.fr>  Tue, 23 Dec 2008 18:55:52 +0100
+
+vym (1.12.1-1) unstable; urgency=low
+
+  * New upstream release
+  * Remove gcc-4.3-ftbfs-fix.patch, fixed upstream
+  * Remove xdg-open.patch, fixed upstream
+  * Update debian/rules
+  * Fix segmentation fault when pressing Home or End key (Closes: #469913)
+  * Fix overlapping nodes when opening a saved file (Closes: #474026)
+
+ -- Xavier Oswald <x.oswald@free.fr>  Tue, 09 Sep 2008 10:10:59 +0200
+
+vym (1.10.0-2) unstable; urgency=high
+
+  * Add DM-Upload-Allowed flag
+  * Add Homepage field in the control file
+  * Add quit as Build-Depends
+  * Update Debian policy to 3.8.0
+  * Update copyright
+  * Update .desktop file
+  * Install icon in the default icon directory (Closes: #449115)
+  * Remove /usr/share/doc/packages/vym empty directory (Closes: #470119)
+  * Remove other empty directories
+  * Add symlink from /usr/share/doc/vym/vym.pdf to /usr/share/vym/doc/vym.pdf
+    (Closes: #479146)
+  * Add README.Debian to inform users about local cups configuration that
+    blocks invoking vym (Closes: 481083)
+  * Add xdg-open, patch by Till Maas <opensource@till.name> (Closes: #473667)
+  * Move all patches to quilt
+
+ -- Xavier Oswald <x.oswald@free.fr>  Mon, 16 Jun 2008 13:59:45 +0200
+
+vym (1.10.0-1.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Fix gcc-4.3 FTBFS, patch by Kumar Appaiah <akumar@ee.iitm.ac.in> (Closes:
+    #455332)
+
+ -- Marc 'HE' Brockschmidt <he@debian.org>  Sat, 05 Apr 2008 18:13:58 +0200
+
+vym (1.10.0-1) unstable; urgency=low
+
+  * New upstream release
+  * Change maintainer 
+  * Include French translation for .desktop file
+  * Redo feature included (Closes:#400348)
+  * Fix undo branch creation (Closes: #400411)
+  * Fix wmii vym flickering (Closes: #442816)
+
+ -- Xavier Oswald <x.oswald@free.fr>  Mon, 29 Oct 2007 10:24:40 +0100
+
+vym (1.8.1-5) unstable; urgency=low
+
+  * Make sure that the desktop icon also shows up in !kde
+    desktops (Closes: #427699) 
+  * Include German translation for .desktop file  
+    
+    Thanks to Bruno Kleinert
+
+ -- Steffen Joeris <white@debian.org>  Mon, 18 Jun 2007 14:56:01 +0200
+
+vym (1.8.1-4) unstable; urgency=low
+
+  * Extend gcc-ftbfs-fix.patch to cover another missing include
+    (Closes: #421133) Thanks to Martin Michlmayr
+
+ -- Steffen Joeris <white@debian.org>  Wed, 16 May 2007 17:12:21 +1000
+
+vym (1.8.1-3) unstable; urgency=low
+
+  * Include gcc-ftbfs-fix.patch to make sure vym compiles with the
+    newer gcc version (Closes: #417744) Thanks to Martin Michlmayr
+  * Remove two shell scripts from the /usr/share/vym/scripts dir as
+    they are unusable right now
+
+ -- Steffen Joeris <white@debian.org>  Sun, 08 Apr 2007 22:02:07 +1000
+
+vym (1.8.1-2) unstable; urgency=low
+
+  * Change the docpath.patch to make a proper additional check so that
+    the current patch can go to upstream
+  * Split the vym.pro correction and move it from old docpath.patch to
+    pro-file.patch
+  * Include iconpath.patch to fix the icon for the main GUI
+    (Closes: #405381)
+  * Change long description to fix linda warning
+  * Remove Alexander Wirt as co-maintainer
+  * Change my maintainer address
+
+ -- Steffen Joeris <white@debian.org>  Thu,  4 Jan 2007 19:27:14 +0100
+
+vym (1.8.1-1) unstable; urgency=low
+
+  * New upstream release
+  * Bump standard version
+  * Remove obsolete build-depends against dpatch
+  * Convert to cdbs and add needed build-depends against it
+  * Change to debhelper level 5
+  * Take old .desktop files for the newer release
+
+ -- Steffen Joeris <steffen.joeris@skolelinux.de>  Sun,  6 Aug 2006 03:12:57 +1000
+
+vym (1.7.0+cvs1.7.4-4) unstable; urgency=low
+
+  * make the .diff.gz more sane by deleting Makefile
+  * correct path to documentation by adding 20-docpath.dpatch
+    (Closes: #358753)
+
+ -- Steffen Joeris <steffen.joeris@skolelinux.de>  Fri, 24 Mar 2006 12:50:43 +0100
+
+vym (1.7.0+cvs1.7.4-3) unstable; urgency=low
+
+  * Rebuild to fix broken dependency (Closes: #337907)
+  * Two bugs are closed in last experimental version and
+    now in unstable see changelog below 
+       (Closes: #327330)
+        (Closes: #334254)
+
+ -- Steffen Joeris <steffen.joeris@skolelinux.de>  Mon,  7 Nov 2005 08:50:12 +0100
+
+vym (1.7.0+cvs1.7.4-2) unstable; urgency=low
+
+  * Rebuild for unstable 
+
+ -- Alexander Wirt <formorer@debian.org>  Sun,  6 Nov 2005 17:08:29 +0100
+
+vym (1.7.0+cvs1.7.4-1) experimental; urgency=low
+
+  * New upstream prerelease (CVS)
+  * Add dependency against xsltproc (Closes: #334254)
+  * Fix of linking maps (Closes: #327330)
+  * Thanks to upstream for newest patches
+
+ -- Steffen Joeris <steffen.joeris@skolelinux.de>  Thu, 20 Oct 2005 19:29:13 +0200
+
+vym (1.7.0-3) unstable; urgency=low
+
+  * Wrote a nicer description (Closes: #326017)
+  * Add dependencies against zip and unzip (Closes: #325042)
+
+ -- Steffen Joeris <steffen.joeris@skolelinux.de>  Thu, 25 Aug 2005 09:48:24 +0200
+
+vym (1.7.0-2) unstable; urgency=low
+
+  * Add more description (Closes: #323799)
+  * Add locale support (for german and english available)
+  * Correct the pdf-path
+
+ -- Steffen Joeris <steffen.joeris@skolelinux.de>  Mon, 22 Aug 2005 06:41:03 +0200
+
+vym (1.7.0-1) unstable; urgency=low
+
+  * Initial release (Closes: #302868)
+  * Sponsored upload by Alexander Wirt <formorer@debian.org>
+
+ -- Steffen Joeris <steffen.joeris@skolelinux.de>  Thu,  4 Aug 2005 17:58:32 +0200
+
diff --git a/debian/compat b/debian/compat
new file mode 100644 (file)
index 0000000..7ed6ff8
--- /dev/null
@@ -0,0 +1 @@
+5
diff --git a/debian/control b/debian/control
new file mode 100644 (file)
index 0000000..8e3ec5f
--- /dev/null
@@ -0,0 +1,25 @@
+Source: vym
+Section: kde
+Priority: optional
+Maintainer: Marcelo Barros de Almeida <marcelobarrosalmeida@gmail.com>
+Build-Depends: debhelper (>= 5), cdbs (>= 0.4.41), libqt4-dev, quilt, patchutils, libqt4-qt3support
+Standards-Version: 3.8.0
+Homepage: http://www.insilmaril.de/vym/
+DM-Upload-Allowed: yes
+
+Package: vym
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, zip, unzip, xsltproc
+Description: mindmapping tool
+ Vym is a mind mapping program. It is useful to organize thoughts and
+ do structure work. In addition to that it has a lot of helpful
+ shortcuts.
+ .
+ A mindmap is a multicolored and image centered radial diagram that
+ represents semantic or other connections between portions of learned
+ material.  For example, it can graphically illustrate the structure
+ of a thesis outline, a project plan, or the government institutions
+ in a state.  Mindmaps have many applications in personal, family,
+ educational, and business situations.  Possibilities include
+ note-taking, brainstorming, summarizing, revising and general
+ clarifying of thoughts.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644 (file)
index 0000000..2f1c046
--- /dev/null
@@ -0,0 +1,22 @@
+This package was debianized by Steffen Joeris <steffen.joeris@skolelinux.de> on
+Thu,  4 Aug 2005 17:58:32 +0200.
+
+It was downloaded from <http://sourceforge.net/projects/vym>
+
+Upstream Author: Uwe Drechsler <vym@insilmaril.de>
+
+Copyright: Copyright 2004-2007 Uwe Drechsel <vym@insilmaril.de>
+
+License:
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License, version 2
+   as published by the Free Software Foundation.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANDABILITY of FITNESS FOR A PARTICULAR PURPOSE.
+   See the GNU General Public License for details.
+
+On Debian GNU/Linux systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL'.
diff --git a/debian/dirs b/debian/dirs
new file mode 100644 (file)
index 0000000..1fc4992
--- /dev/null
@@ -0,0 +1,5 @@
+usr/bin
+usr/share
+usr/share/vym
+usr/share/applications
+usr/share/pixmaps
diff --git a/debian/docs b/debian/docs
new file mode 100644 (file)
index 0000000..40b4ba2
--- /dev/null
@@ -0,0 +1 @@
+doc/vym.pdf
diff --git a/debian/menu b/debian/menu
new file mode 100644 (file)
index 0000000..be9433e
--- /dev/null
@@ -0,0 +1,7 @@
+?package(vym):needs="X11" \
+  section="Applications/Education" \
+  hints="KDE" \
+  title="Vym" \
+  longtitle="View your mind" \
+  command="/usr/bin/vym" \
+  icon="/usr/share/vym/icons/vym.xpm"
diff --git a/debian/patches/gcc-ftbfs-fix.patch b/debian/patches/gcc-ftbfs-fix.patch
new file mode 100644 (file)
index 0000000..cb54e91
--- /dev/null
@@ -0,0 +1,66 @@
+Index: vym-1.12.2/exports.cpp
+===================================================================
+--- vym-1.12.2.orig/exports.cpp        2008-12-23 19:13:22.000000000 +0100
++++ vym-1.12.2/exports.cpp     2008-12-23 19:13:47.000000000 +0100
+@@ -5,6 +5,7 @@
+ #include "mainwindow.h"
+ #include "warningdialog.h"
+ #include "xsltproc.h"
++#include <cstdlib>
+ extern Main *mainWindow;
+ extern QDir vymBaseDir;
+Index: vym-1.12.2/file.cpp
+===================================================================
+--- vym-1.12.2.orig/file.cpp   2008-12-23 19:14:22.000000000 +0100
++++ vym-1.12.2/file.cpp        2008-12-23 19:14:56.000000000 +0100
+@@ -4,6 +4,7 @@
+ #include <QLabel>
+ #include <QTextStream>
+ #include <iostream>
++#include <cstdlib>
+ #include "file.h"
+ #include "process.h"
+Index: vym-1.12.2/linkablemapobj.cpp
+===================================================================
+--- vym-1.12.2.orig/linkablemapobj.cpp 2008-12-23 19:15:14.000000000 +0100
++++ vym-1.12.2/linkablemapobj.cpp      2008-12-23 19:15:45.000000000 +0100
+@@ -1,4 +1,5 @@
+ #include <math.h>
++#include <cstdlib>
+ #include "linkablemapobj.h"
+ #include "branchobj.h"
+Index: vym-1.12.2/main.cpp
+===================================================================
+--- vym-1.12.2.orig/main.cpp   2008-12-23 19:16:08.000000000 +0100
++++ vym-1.12.2/main.cpp        2008-12-23 19:16:24.000000000 +0100
+@@ -1,4 +1,5 @@
+ #include <QApplication>
++#include <cstdlib>
+ #include "flagrowobj.h"
+ #include "mainwindow.h"
+Index: vym-1.12.2/process.cpp
+===================================================================
+--- vym-1.12.2.orig/process.cpp        2008-12-23 19:16:39.000000000 +0100
++++ vym-1.12.2/process.cpp     2008-12-23 19:16:50.000000000 +0100
+@@ -1,4 +1,5 @@
+ #include "process.h"
++#include <cstdlib>
+ /////////////////////////////////////////////////////////////////
+ // Process
+Index: vym-1.12.2/xml-base.cpp
+===================================================================
+--- vym-1.12.2.orig/xml-base.cpp       2008-12-23 19:17:14.000000000 +0100
++++ vym-1.12.2/xml-base.cpp    2008-12-23 19:17:30.000000000 +0100
+@@ -4,6 +4,7 @@
+ #include <QColor>
+ #include <QTextStream>
+ #include <iostream>
++#include <cstdlib>
+ #include "misc.h"
+ #include "settings.h"
diff --git a/debian/patches/iconpath.patch b/debian/patches/iconpath.patch
new file mode 100644 (file)
index 0000000..3e2f05d
--- /dev/null
@@ -0,0 +1,13 @@
+Index: vym-1.12.2/main.cpp
+===================================================================
+--- vym-1.12.2.orig/main.cpp   2008-12-23 19:11:35.000000000 +0100
++++ vym-1.12.2/main.cpp        2008-12-23 19:11:57.000000000 +0100
+@@ -173,7 +173,7 @@
+ #endif
+       //m.resize(m.sizeHint());
+-      m.setIcon (QPixmap (iconPath+"vym-48x48.png"));
++      m.setIcon (QPixmap (iconPath+"vym.png"));
+       m.show();
+       m.fileNew();
+       m.loadCmdLine();
diff --git a/debian/patches/pro-file.patch b/debian/patches/pro-file.patch
new file mode 100644 (file)
index 0000000..d96ff2a
--- /dev/null
@@ -0,0 +1,13 @@
+Index: vym-1.12.2/vym.pro
+===================================================================
+--- vym-1.12.2.orig/vym.pro    2008-12-23 19:09:25.000000000 +0100
++++ vym-1.12.2/vym.pro 2008-12-23 19:09:36.000000000 +0100
+@@ -155,7 +155,7 @@
+ isEmpty( PREFIX ) {
+-      PREFIX = /usr/local
++      PREFIX = /usr
+       count( INSTALLDIR, 1 ) {
+               PREFIX = $${INSTALLDIR}
+               message( "Please use PREFIX instead of INSTALLDIR" )
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644 (file)
index 0000000..115d495
--- /dev/null
@@ -0,0 +1,3 @@
+pro-file.patch
+iconpath.patch
+gcc-ftbfs-fix.patch
diff --git a/debian/rules b/debian/rules
new file mode 100644 (file)
index 0000000..92ded0f
--- /dev/null
@@ -0,0 +1,34 @@
+#!/usr/bin/make -f
+
+DEB_COMPRESS_EXCLUDE = vym.pdf
+
+include /usr/share/cdbs/1/rules/patchsys-quilt.mk
+include /usr/share/quilt/quilt.make
+include /usr/share/cdbs/1/rules/debhelper.mk
+include /usr/share/cdbs/1/class/qmake.mk
+QMAKE=qmake-qt4
+
+clean::
+       rm -f lang/vym_de.qm
+       rm -f lang/vym_en.qm
+       rm -f lang/vym_es.qm
+       rm -f lang/vym_it.qm
+       rm -f vym
+
+common-configure-arch::
+       lrelease vym.pro
+
+common-install-arch::
+       install -m 644 debian/vym.desktop debian/vym/usr/share/applications/vym.desktop
+       install -m 0644 icons/vym.png $(CURDIR)/debian/vym/usr/share/pixmaps/
+       install -D -m 644 debian/x-vym.desktop debian/vym/usr/share/mimelnk/application/x-vym.desktop
+       mv $(CURDIR)/debian/vym/usr/share/vym/demos $(CURDIR)/debian/vym/usr/share/doc/vym
+       mv $(CURDIR)/debian/vym/usr/share/doc/packages/vym/vym.pdf $(CURDIR)/debian/vym/usr/share/doc/vym 
+       chmod 644 $(CURDIR)/debian/vym/usr/share/vym/icons/vym.ico
+       rm -f $(CURDIR)/debian/vym/usr/share/vym/scripts/vym2txt.sh
+       rm -f $(CURDIR)/debian/vym/usr/share/vym/scripts/vym2html.sh
+       rmdir $(CURDIR)/debian/vym/usr/share/doc/packages/vym
+       rmdir $(CURDIR)/debian/vym/usr/share/doc/packages/
+       mkdir -p $(CURDIR)/debian/vym/usr/share/vym/doc/
+       dh_link /usr/share/doc/vym/vym.pdf /usr/share/vym/doc/vym.pdf
+       dh_link /usr/share/vym/icons/vym.png /usr/share/pixmaps/vym.png
diff --git a/debian/vym.1 b/debian/vym.1
new file mode 100644 (file)
index 0000000..e5bdfbd
--- /dev/null
@@ -0,0 +1,28 @@
+.TH vym 1 "August 5, 2005" vym 1
+.SH NAME
+vym \- View your mind
+.SH SYNOPSIS
+.B vym
+.SH DESCRIPTION
+This manual page documents briefly the
+.B vym
+program
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics, 
+.\" respectively.
+\fBvym\fP is a program that makes mindmapping possible. It is based on qt
+and it can be used by everyone for structure work.
+.SH OPTIONS
+For more information, see /usr/share/vym/doc/vym.pdf .
+.TP
+.B \-h, \-\-help
+Show a small help.
+.TP
+.B \-v, \-\-version
+Show version of vym.
+.SH AUTHOR
+vym was written by Uwe Drechsler, http://www.insilmaril.de/vym.
+.PP
+This manual page was written by Steffen Joeris <steffen.joeris@skolelinux.de>,
+for the Debian project (but may be used by others).
diff --git a/debian/vym.desktop b/debian/vym.desktop
new file mode 100644 (file)
index 0000000..7b50c79
--- /dev/null
@@ -0,0 +1,19 @@
+[Desktop Entry]
+Type=Application
+Exec=vym
+Name=VYM - View Your Mind
+Comment=Create mind maps
+Comment[de]=Mindmap erstellen
+Comment[fr]=Créez des cartes d'associations d'idées
+Comment[it]=Crea mappe mentali
+Comment[ca]=Creeu mapes mentals
+Comment[es]=Crear mapas mentales
+GenericName=Planning Tool
+GenericName[de]=Planungswerkzeug
+GenericName[fr]=Outil de plannification
+GenericName[it]=Strumento di pianificazione
+GenericName[ca]=Eina de planificació
+GenericName[es]=Herramienta de planificación
+Icon=vym
+MimeType=application/x-vym;
+Categories=Qt;KDE;Education;
diff --git a/debian/vym.manpages b/debian/vym.manpages
new file mode 100644 (file)
index 0000000..c3f23bc
--- /dev/null
@@ -0,0 +1 @@
+debian/vym.1
diff --git a/debian/x-vym.desktop b/debian/x-vym.desktop
new file mode 100644 (file)
index 0000000..3959e7b
--- /dev/null
@@ -0,0 +1,7 @@
+[Desktop Entry]
+Encoding=UTF-8
+Comment=VYM (View Your Mind) File
+Type=MimeType
+MimeType=application/x-vym
+Icon=vym
+Patterns=*.vym;*.vyp;*.VYM;*.VYP;
diff --git a/demos/lifeforms.vym b/demos/lifeforms.vym
new file mode 100644 (file)
index 0000000..42494bb
Binary files /dev/null and b/demos/lifeforms.vym differ
diff --git a/demos/math.vym b/demos/math.vym
new file mode 100644 (file)
index 0000000..7343539
Binary files /dev/null and b/demos/math.vym differ
diff --git a/demos/time-management.vym b/demos/time-management.vym
new file mode 100644 (file)
index 0000000..bdb5410
Binary files /dev/null and b/demos/time-management.vym differ
diff --git a/demos/vym-projectplan.vym b/demos/vym-projectplan.vym
new file mode 100644 (file)
index 0000000..0dfe180
Binary files /dev/null and b/demos/vym-projectplan.vym differ
diff --git a/doc/vym.pdf b/doc/vym.pdf
new file mode 100644 (file)
index 0000000..3250b38
Binary files /dev/null and b/doc/vym.pdf differ
diff --git a/doc/vym_es.pdf b/doc/vym_es.pdf
new file mode 100644 (file)
index 0000000..65d4d8f
Binary files /dev/null and b/doc/vym_es.pdf differ
diff --git a/doc/vym_fr.pdf b/doc/vym_fr.pdf
new file mode 100644 (file)
index 0000000..f182aa9
Binary files /dev/null and b/doc/vym_fr.pdf differ
diff --git a/doxygen.config b/doxygen.config
new file mode 100644 (file)
index 0000000..6b4abfa
--- /dev/null
@@ -0,0 +1,1252 @@
+# Doxyfile 1.5.0
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
+# by quotes) that should identify the project.
+
+PROJECT_NAME           = "VYM - View Your Mind"
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
+# This could be handy for archiving the generated documentation or 
+# if some version control system is used.
+
+PROJECT_NUMBER         = 
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
+# base path where the generated documentation will be put. 
+# If a relative path is entered, it will be relative to the location 
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY       = doc
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
+# 4096 sub-directories (in 2 levels) under the output directory of each output 
+# format and will distribute the generated files over these directories. 
+# Enabling this option can be useful when feeding doxygen a huge amount of 
+# source files, where putting all generated files in the same directory would 
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS         = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
+# documentation generated by doxygen is written. Doxygen will use this 
+# information to generate all constant output in the proper language. 
+# The default language is English, other supported languages are: 
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, 
+# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian, 
+# Italian, Japanese, Japanese-en (Japanese with English messages), Korean, 
+# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, 
+# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE        = English
+
+# This tag can be used to specify the encoding used in the generated output. 
+# The encoding is not always determined by the language that is chosen, 
+# but also whether or not the output is meant for Windows or non-Windows users. 
+# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES 
+# forces the Windows encoding (this is the default for the Windows binary), 
+# whereas setting the tag to NO uses a Unix-style encoding (the default for 
+# all platforms other than Windows).
+
+USE_WINDOWS_ENCODING   = NO
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
+# include brief member descriptions after the members that are listed in 
+# the file and class documentation (similar to JavaDoc). 
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
+# the brief description of a member or function before the detailed description. 
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF           = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator 
+# that is used to form the text in various listings. Each string 
+# in this list, if found as the leading text of the brief description, will be 
+# stripped from the text and the result after processing the whole list, is 
+# used as the annotated text. Otherwise, the brief description is used as-is. 
+# If left blank, the following values are used ("$name" is automatically 
+# replaced with the name of the entity): "The $name class" "The $name widget" 
+# "The $name file" "is" "provides" "specifies" "contains" 
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF       = 
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
+# Doxygen will generate a detailed section even if there is only a brief 
+# description.
+
+ALWAYS_DETAILED_SEC    = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
+# inherited members of a class in the documentation of that class as if those 
+# members were ordinary class members. Constructors, destructors and assignment 
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB  = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
+# path before files name in the file list and in the header files. If set 
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES        = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
+# can be used to strip a user-defined part of the path. Stripping is 
+# only done if one of the specified strings matches the left-hand part of 
+# the path. The tag can be used to show relative paths in the file list. 
+# If left blank the directory from which doxygen is run is used as the 
+# path to strip.
+
+STRIP_FROM_PATH        = 
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
+# the path mentioned in the documentation of a class, which tells 
+# the reader which header file to include in order to use a class. 
+# If left blank only the name of the header file containing the class 
+# definition is used. Otherwise one should specify the include paths that 
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH    = 
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
+# (but less readable) file names. This can be useful is your file systems 
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
+# will interpret the first line (until the first dot) of a JavaDoc-style 
+# comment as the brief description. If set to NO, the JavaDoc 
+# comments will behave just like the Qt-style comments (thus requiring an 
+# explicit @brief command for a brief description.
+
+JAVADOC_AUTOBRIEF      = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
+# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
+# comments) as a brief description. This used to be the default behaviour. 
+# The new default is to treat a multi-line C++ comment block as a detailed 
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen 
+# will output the detailed description near the top, like JavaDoc.
+# If set to NO, the detailed description appears after the member 
+# documentation.
+
+DETAILS_AT_TOP         = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
+# member inherits the documentation from any documented member that it 
+# re-implements.
+
+INHERIT_DOCS           = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
+# a new page for each member. If set to NO, the documentation of a member will 
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES  = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE               = 8
+
+# This tag can be used to specify a number of aliases that acts 
+# as commands in the documentation. An alias has the form "name=value". 
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
+# put the command \sideeffect (or @sideeffect) in the documentation, which 
+# will result in a user-defined paragraph with heading "Side Effects:". 
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES                = 
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
+# sources only. Doxygen will then generate output that is more tailored for C. 
+# For instance, some of the names that are used will be different. The list 
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C  = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java 
+# sources only. Doxygen will then generate output that is more tailored for Java. 
+# For instance, namespaces will be presented as packages, qualified scopes 
+# will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to 
+# include (a tag file for) the STL sources as input, then you should 
+# set this tag to YES in order to let doxygen match functions declarations and 
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. 
+# func(std::string) {}). This also make the inheritance and collaboration 
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT    = NO
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
+# tag is set to YES, then doxygen will reuse the documentation of the first 
+# member in the group (if any) for the other members of the group. By default 
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC   = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
+# the same type (for instance a group of public functions) to be put as a 
+# subgroup of that type (e.g. under the Public Functions section). Set it to 
+# NO to prevent subgrouping. Alternatively, this can be done per class using 
+# the \nosubgrouping command.
+
+SUBGROUPING            = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
+# documentation are documented, even if no documentation was available. 
+# Private class members and static file members will be hidden unless 
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL            = NO
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
+# will be included in the documentation.
+
+EXTRACT_PRIVATE        = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file 
+# will be included in the documentation.
+
+EXTRACT_STATIC         = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
+# defined locally in source files will be included in the documentation. 
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES  = YES
+
+# This flag is only useful for Objective-C code. When set to YES local 
+# methods, which are defined in the implementation section but not in 
+# the interface are included in the documentation. 
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS  = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
+# undocumented members of documented classes, files or namespaces. 
+# If set to NO (the default) these members will be included in the 
+# various overviews, but no documentation section is generated. 
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS     = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
+# undocumented classes that are normally visible in the class hierarchy. 
+# If set to NO (the default) these classes will be included in the various 
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES     = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
+# friend (class|struct|union) declarations. 
+# If set to NO (the default) these declarations will be included in the 
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
+# documentation blocks found inside the body of a function. 
+# If set to NO (the default) these blocks will be appended to the 
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS      = NO
+
+# The INTERNAL_DOCS tag determines if documentation 
+# that is typed after a \internal command is included. If the tag is set 
+# to NO (the default) then the documentation will be excluded. 
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS          = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
+# file names in lower-case letters. If set to YES upper-case letters are also 
+# allowed. This is useful if you have classes or files whose names only differ 
+# in case and if your file system supports case sensitive file names. Windows 
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES       = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
+# will show members with their full class and namespace scopes in the 
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES       = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
+# will put a list of the files that are included by a file in the documentation 
+# of that file.
+
+SHOW_INCLUDE_FILES     = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
+# is inserted in the documentation for inline members.
+
+INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
+# will sort the (detailed) documentation of file and class members 
+# alphabetically by member name. If set to NO the members will appear in 
+# declaration order.
+
+SORT_MEMBER_DOCS       = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
+# brief documentation of file, namespace and class members alphabetically 
+# by member name. If set to NO (the default) the members will appear in 
+# declaration order.
+
+SORT_BRIEF_DOCS        = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
+# sorted by fully-qualified names, including namespaces. If set to 
+# NO (the default), the class list will be sorted only by class name, 
+# not including the namespace part. 
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the 
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME     = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or 
+# disable (NO) the todo list. This list is created by putting \todo 
+# commands in the documentation.
+
+GENERATE_TODOLIST      = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or 
+# disable (NO) the test list. This list is created by putting \test 
+# commands in the documentation.
+
+GENERATE_TESTLIST      = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or 
+# disable (NO) the bug list. This list is created by putting \bug 
+# commands in the documentation.
+
+GENERATE_BUGLIST       = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
+# disable (NO) the deprecated list. This list is created by putting 
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional 
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS       = 
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
+# the initial value of a variable or define consists of for it to appear in 
+# the documentation. If the initializer consists of more lines than specified 
+# here it will be hidden. Use a value of 0 to hide initializers completely. 
+# The appearance of the initializer of individual variables and defines in the 
+# documentation can be controlled using \showinitializer or \hideinitializer 
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES  = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
+# at the bottom of the documentation of classes and structs. If set to YES the 
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES        = YES
+
+# If the sources in your project are distributed over multiple directories 
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
+# in the documentation. The default is NO.
+
+SHOW_DIRECTORIES       = NO
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
+# doxygen should invoke to get the current version for each file (typically from the 
+# version control system). Doxygen will invoke the program by executing (via 
+# popen()) the command <command> <input-file>, where <command> is the value of 
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
+# provided by doxygen. Whatever the program writes to standard output 
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated 
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are 
+# generated by doxygen. Possible values are YES and NO. If left blank 
+# NO is used.
+
+WARNINGS               = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
+# potential errors in the documentation, such as not documenting some 
+# parameters in a documented function, or documenting parameters that 
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for 
+# functions that are documented, but have no documentation for their parameters 
+# or return value. If set to NO (the default) doxygen will only warn about 
+# wrong or incomplete parameter documentation, but not about the absence of 
+# documentation.
+
+WARN_NO_PARAMDOC       = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that 
+# doxygen can produce. The string should contain the $file, $line, and $text 
+# tags, which will be replaced by the file and line number from which the 
+# warning originated and the warning text. Optionally the format may contain 
+# $version, which will be replaced by the version of the file (if it could 
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning 
+# and error messages should be written. If left blank the output is written 
+# to stderr.
+
+WARN_LOGFILE           = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain 
+# documented source files. You may enter file names like "myfile.cpp" or 
+# directories like "/usr/src/myproject". Separate the files or directories 
+# with spaces.
+
+INPUT                  = 
+
+# If the value of the INPUT tag contains directories, you can use the 
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank the following patterns are tested: 
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
+
+FILE_PATTERNS          = 
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
+# should be searched for input files as well. Possible values are YES and NO. 
+# If left blank NO is used.
+
+RECURSIVE              = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should 
+# excluded from the INPUT source files. This way you can easily exclude a 
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE                = 
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
+# directories that are symbolic links (a Unix filesystem feature) are excluded 
+# from the input.
+
+EXCLUDE_SYMLINKS       = NO
+
+# If the value of the INPUT tag contains directories, you can use the 
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
+# certain files from those directories. Note that the wildcards are matched 
+# against the file with absolute path, so to exclude all test directories 
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS       = moc_*
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or 
+# directories that contain example code fragments that are included (see 
+# the \include command).
+
+EXAMPLE_PATH           = 
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank all files are included.
+
+EXAMPLE_PATTERNS       = 
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
+# searched for input files to be used with the \include or \dontinclude 
+# commands irrespective of the value of the RECURSIVE tag. 
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE      = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or 
+# directories that contain image that are included in the documentation (see 
+# the \image command).
+
+IMAGE_PATH             = 
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should 
+# invoke to filter for each input file. Doxygen will invoke the filter program 
+# by executing (via popen()) the command <filter> <input-file>, where <filter> 
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
+# input file. Doxygen will then use the output that the filter program writes 
+# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
+# ignored.
+
+INPUT_FILTER           = 
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
+# basis.  Doxygen will compare the file name with each pattern and apply the 
+# filter if there is a match.  The filters are a list of the form: 
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
+# is applied to all files.
+
+FILTER_PATTERNS        = 
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
+# INPUT_FILTER) will be used to filter the input files when producing source 
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
+# be generated. Documented entities will be cross-referenced with these sources. 
+# Note: To get rid of all source code in the generated output, make sure also 
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body 
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
+# doxygen to hide any special comment blocks from generated source code 
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
+# then for each documented function all documented 
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default) 
+# then for each documented function all documented entities 
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = YES
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code.  Otherwise they will link to the documentstion.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code 
+# will point to the HTML generated by the htags(1) tool instead of doxygen 
+# built-in source browser. The htags tool is part of GNU's global source 
+# tagging system (see http://www.gnu.org/software/global/global.html). You 
+# will need version 4.8.6 or higher.
+
+USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
+# will generate a verbatim copy of the header file for each class for 
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
+# of all compounds will be generated. Enable this if the project 
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX    = 5
+
+# In case all classes in a project start with a common prefix, all 
+# classes will be put under the same header in the alphabetical index. 
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX          = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
+# generate HTML output.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard header.
+
+HTML_HEADER            = 
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard footer.
+
+HTML_FOOTER            = 
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
+# style sheet that is used by each HTML page. It can be used to 
+# fine-tune the look of the HTML output. If the tag is left blank doxygen 
+# will generate a default style sheet. Note that doxygen will try to copy 
+# the style sheet file to the HTML output directory, so don't put your own 
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET        = 
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
+# files or namespaces will be aligned in HTML using tables. If set to 
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
+# will be generated that can be used as input for tools like the 
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
+# be used to specify the file name of the resulting .chm file. You 
+# can add a path in front of the file if the result should not be 
+# written to the html output directory.
+
+CHM_FILE               = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
+# be used to specify the location (absolute path including file name) of 
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
+# controls if a separate .chi index file is generated (YES) or that 
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
+# controls whether a binary table of contents is generated (YES) or a 
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members 
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
+# top of each HTML page. The value NO (the default) enables the index and 
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20]) 
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that 
+# is generated for HTML Help). For this to work a browser that supports 
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW      = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
+# used to set the initial width (in pixels) of the frame in which the tree 
+# is shown.
+
+TREEVIEW_WIDTH         = 250
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
+# generate Latex output.
+
+GENERATE_LATEX         = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
+# generate index for LaTeX. If left blank `makeindex' will be used as the 
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
+# LaTeX documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used 
+# by the printer. Possible values are: a4, a4wide, letter, legal and 
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         = 
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
+# the generated latex document. The header should contain everything until 
+# the first chapter. If it is left blank doxygen will generate a 
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           = 
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
+# contain links (just like the HTML output) instead of page references 
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
+# plain latex in the generated Makefile. Set this option to YES to get a 
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
+# command to the generated LaTeX files. This will instruct LaTeX to keep 
+# running if errors occur, instead of asking the user for help. 
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
+# include the index chapters (such as File Index, Compound Index, etc.) 
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
+# The RTF output is optimized for Word 97 and may not look very pretty with 
+# other RTF readers or editors.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
+# RTF documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
+# will contain hyperlink fields. The RTF file will 
+# contain links (just like the HTML output) instead of page references. 
+# This makes the output suitable for online browsing using WORD or other 
+# programs which support those fields. 
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's 
+# config file, i.e. a series of assignments. You only have to provide 
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    = 
+
+# Set optional variables used in the generation of an rtf document. 
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
+# generate man pages
+
+GENERATE_MAN           = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to 
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
+# then it will generate one additional man file for each entity 
+# documented in the real man page(s). These additional files 
+# only source the real man page, but without them the man command 
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will 
+# generate an XML file that captures the structure of 
+# the code including all documentation.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_SCHEMA             = 
+
+# The XML_DTD tag can be used to specify an XML DTD, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_DTD                = 
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
+# dump the program listings (including syntax highlighting 
+# and cross-referencing information) to the XML output. Note that 
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
+# generate an AutoGen Definitions (see autogen.sf.net) file 
+# that captures the structure of the code including all 
+# documentation. Note that this feature is still experimental 
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
+# generate a Perl module file that captures the structure of 
+# the code including all documentation. Note that this 
+# feature is still experimental and incomplete at the 
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
+# nicely formatted so it can be parsed by a human reader.  This is useful 
+# if you want to understand what is going on.  On the other hand, if this 
+# tag is set to NO the size of the Perl module output will be much smaller 
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file 
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
+# This is useful so different doxyrules.make files included by the same 
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
+# evaluate all C-preprocessor directives found in the sources and include 
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
+# names in the source code. If set to NO (the default) only conditional 
+# compilation will be performed. Macro expansion can be done in a controlled 
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
+# then the macro expansion is limited to the macros specified with the 
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that 
+# contain include files that are not input files but should be processed by 
+# the preprocessor.
+
+INCLUDE_PATH           = 
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
+# patterns (like *.h and *.hpp) to filter out the header-files in the 
+# directories. If left blank, the patterns specified with FILE_PATTERNS will 
+# be used.
+
+INCLUDE_FILE_PATTERNS  = 
+
+# The PREDEFINED tag can be used to specify one or more macro names that 
+# are defined before the preprocessor is started (similar to the -D option of 
+# gcc). The argument of the tag is a list of macros of the form: name 
+# or name=definition (no spaces). If the definition and the = are 
+# omitted =1 is assumed. To prevent a macro definition from being 
+# undefined via #undef or recursively expanded use the := operator 
+# instead of the = operator.
+
+PREDEFINED             = 
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
+# this tag can be used to specify a list of macro names that should be expanded. 
+# The macro definition that is found in the sources will be used. 
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      = 
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
+# doxygen's preprocessor will remove all function-like macros that are alone 
+# on a line, have an all uppercase name, and do not end with a semicolon. Such 
+# function macros are typically used for boiler-plate code, and will confuse 
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles. 
+# Optionally an initial location of the external documentation 
+# can be added for each tagfile. The format of a tag file without 
+# this location is as follows: 
+#   TAGFILES = file1 file2 ... 
+# Adding location for the tag files is done as follows: 
+#   TAGFILES = file1=loc1 "file2 = loc2" ... 
+# where "loc1" and "loc2" can be relative or absolute paths or 
+# URLs. If a location is present for each tag, the installdox tool 
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen 
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               = 
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       = 
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
+# in the class index. If set to NO only the inherited external classes 
+# will be listed.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
+# in the modules index. If set to NO, only the current project's groups will 
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script 
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
+# or super classes. Setting the tag to NO turns the diagrams off. Note that 
+# this option is superseded by the HAVE_DOT option below. This is only a 
+# fallback. It is recommended to install and use dot, since it yields more 
+# powerful graphs.
+
+CLASS_DIAGRAMS         = YES
+
+# If set to YES, the inheritance and collaboration graphs will hide 
+# inheritance and usage relations if the target is undocumented 
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
+# available from the path. This tool is part of Graphviz, a graph visualization 
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = NO
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect inheritance relations. Setting this tag to YES will force the 
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect implementation dependencies (inheritance, containment, and 
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS           = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
+# collaboration diagrams in a style similar to the OMG's Unified Modeling 
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the 
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
+# tags are set to YES then doxygen will generate a graph for each documented 
+# file showing the direct and indirect include dependencies of the file with 
+# other documented files.
+
+INCLUDE_GRAPH          = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
+# documented header file showing the documented files that directly or 
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
+# generate a call dependency graph for every global function or class method. 
+# Note that enabling this option will significantly increase the time of a run. 
+# So in most cases it will be better to enable call graphs for selected 
+# functions only using the \callgraph command.
+
+CALL_GRAPH             = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
+# generate a caller dependency graph for every global function or class method. 
+# Note that enabling this option will significantly increase the time of a run. 
+# So in most cases it will be better to enable caller graphs for selected 
+# functions only using the \callergraph command.
+
+CALLER_GRAPH           = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
+# then doxygen will show the dependencies a directory has on other directories 
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH        = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be 
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH               = 
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that 
+# contain dot files that are included in the documentation (see the 
+# \dotfile command).
+
+DOTFILE_DIRS           = 
+
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width 
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
+# this value, doxygen will try to truncate the graph, so that it fits within 
+# the specified constraint. Beware that most browsers cannot cope with very 
+# large images.
+
+MAX_DOT_GRAPH_WIDTH    = 1024
+
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height 
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
+# this value, doxygen will try to truncate the graph, so that it fits within 
+# the specified constraint. Beware that most browsers cannot cope with very 
+# large images.
+
+MAX_DOT_GRAPH_HEIGHT   = 1024
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
+# graphs generated by dot. A depth value of 3 means that only nodes reachable 
+# from the root by following a path via at most 3 edges will be shown. Nodes 
+# that lay further from the root node will be omitted. Note that setting this 
+# option to 1 or 2 may greatly reduce the computation time needed for large 
+# code bases. Also note that a graph may be further truncated if the graph's 
+# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH 
+# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), 
+# the graph is not depth-constrained.
+
+MAX_DOT_GRAPH_DEPTH    = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
+# background. This is disabled by default, which results in a white background. 
+# Warning: Depending on the platform used, enabling this option may lead to 
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to 
+# read).
+
+DOT_TRANSPARENT        = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
+# files in one run (i.e. multiple -o and -T options on the command line). This 
+# makes dot run faster, but since only newer versions of dot (>1.8.10) 
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS      = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
+# generate a legend page explaining the meaning of the various boxes and 
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
+# remove the intermediate dot files that are used to generate 
+# the various graphs.
+
+DOT_CLEANUP            = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be 
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE           = NO
diff --git a/editxlinkdialog.cpp b/editxlinkdialog.cpp
new file mode 100644 (file)
index 0000000..b92bff7
--- /dev/null
@@ -0,0 +1,78 @@
+#include "editxlinkdialog.h"
+
+#include <typeinfo>
+#include <QColorDialog>
+
+EditXLinkDialog::EditXLinkDialog (QWidget *parent):QDialog (parent)
+{
+       ui.setupUi (this);
+
+       delink=false;
+       xlo=false;
+       selection=NULL;
+
+       connect ( ui.widthBox, SIGNAL (valueChanged( int)), this, SLOT (widthChanged (int)));
+       connect ( ui.colorButton, SIGNAL (clicked( )), this, SLOT (colorButtonPressed()));
+       connect ( ui.setColorHeadingButton, SIGNAL (clicked( )), this, SLOT (setColorHeadingButtonPressed()));
+       connect ( ui.deleteButton, SIGNAL (clicked( )), this, SLOT (deleteButtonPressed()));
+}
+
+void EditXLinkDialog::deleteButtonPressed()
+{
+       delink=true;
+       accept();
+}
+
+bool EditXLinkDialog::deleteXLink()
+{
+       return delink;
+}      
+
+
+void EditXLinkDialog::widthChanged( int  w)
+{
+       xlo->setWidth(w);
+}
+
+void EditXLinkDialog::setXLink( XLinkObj * xo)
+{
+       xlo=xo;
+       ui.colorButton->setPaletteBackgroundColor (xlo->getColor() );
+       ui.widthBox->setValue(xlo->getWidth());
+}
+
+void EditXLinkDialog::setSelection(LinkableMapObj *s)
+{
+       selection=s;
+}
+
+void EditXLinkDialog::colorButtonPressed()
+{
+       if (xlo)
+       {       
+               QColor col = QColorDialog::getColor(xlo->getColor(), this );
+               if ( !col.isValid() ) return;
+               xlo->setColor( col );
+               ui.colorButton->setPaletteBackgroundColor (col);
+       }
+}
+
+void EditXLinkDialog::setColorHeadingButtonPressed()
+{
+       if (xlo)
+       {       
+               if (selection && 
+                       ((typeid(*selection) == typeid(BranchObj)) || 
+                        (typeid(*selection) == typeid(MapCenterObj)))  )
+               {
+                       QColor col=((BranchObj*)(selection))->getColor();
+                       xlo->setColor(col);
+                       ui.colorButton->setPaletteBackgroundColor (col);
+               }
+       }
+}
+
+bool EditXLinkDialog::useSettingsGlobal ()
+{
+       return ui.useSettings->isChecked();
+}
diff --git a/editxlinkdialog.h b/editxlinkdialog.h
new file mode 100644 (file)
index 0000000..645a1bc
--- /dev/null
@@ -0,0 +1,36 @@
+#ifndef EDITXLINKDIALOG_H
+#define EDITXLINKDIALOG_H
+
+#include "ui_editxlinkdialog.h"
+
+/*! \brief Dialog to edit or delete XLinks 
+
+Using xLinks one can link one branch to any other, just like attaching a rope
+between two branches in a real tree. This is especially useful in complex maps,
+where you want to have crossreferences which don't fit on the same visible area
+*/
+
+class EditXLinkDialog:public QDialog
+{
+       Q_OBJECT
+public:
+       EditXLinkDialog (QWidget *parent=0);
+       void setXLink (XLinkObj *);
+       void setSelection (LinkableMapObj *);
+       bool useSettingsGlobal();
+       bool deleteXLink();
+
+private slots:
+       void deleteButtonPressed();
+       void widthChanged (int);
+       void colorButtonPressed();
+       void setColorHeadingButtonPressed ();
+
+private:
+       Ui::EditXLinkDialog ui;
+       bool delink;
+       XLinkObj *xlo;
+       LinkableMapObj *selection;
+};
+
+#endif // EDITXLINKDIALOG_H
diff --git a/editxlinkdialog.ui b/editxlinkdialog.ui
new file mode 100644 (file)
index 0000000..f098746
--- /dev/null
@@ -0,0 +1,259 @@
+<ui version="4.0" >
+ <author></author>
+ <comment></comment>
+ <exportmacro></exportmacro>
+ <class>EditXLinkDialog</class>
+ <widget class="QDialog" name="EditXLinkDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>393</width>
+    <height>206</height>
+   </rect>
+  </property>
+  <property name="sizePolicy" >
+   <sizepolicy>
+    <hsizetype>5</hsizetype>
+    <vsizetype>5</vsizetype>
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle" >
+   <string>Edit XLink</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <property name="margin" >
+    <number>11</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item>
+    <layout class="QGridLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item row="0" column="1" >
+      <widget class="QSpinBox" name="widthBox" >
+       <property name="sizePolicy" >
+        <sizepolicy>
+         <hsizetype>0</hsizetype>
+         <vsizetype>0</vsizetype>
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="maximum" >
+        <number>15</number>
+       </property>
+       <property name="minimum" >
+        <number>1</number>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="0" >
+      <widget class="QLabel" name="textLabel1" >
+       <property name="text" >
+        <string>XLink width:</string>
+       </property>
+       <property name="alignment" >
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="4" >
+      <widget class="QPushButton" name="setColorHeadingButton" >
+       <property name="maximumSize" >
+        <size>
+         <width>32767</width>
+         <height>20</height>
+        </size>
+       </property>
+       <property name="text" >
+        <string>Set color of heading</string>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="1" >
+      <widget class="QPushButton" name="colorButton" >
+       <property name="enabled" >
+        <bool>true</bool>
+       </property>
+       <property name="maximumSize" >
+        <size>
+         <width>50</width>
+         <height>20</height>
+        </size>
+       </property>
+       <property name="text" >
+        <string/>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="1" colspan="2" >
+      <widget class="QCheckBox" name="useSettings" >
+       <property name="text" >
+        <string/>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="0" >
+      <widget class="QLabel" name="textLabel2" >
+       <property name="text" >
+        <string>XLink color:</string>
+       </property>
+       <property name="alignment" >
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="2" colspan="2" >
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType" >
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>285</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item row="0" column="2" colspan="2" >
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType" >
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>280</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item row="2" column="0" >
+      <widget class="QLabel" name="textLabel1_2" >
+       <property name="text" >
+        <string>Use as default:</string>
+       </property>
+       <property name="alignment" >
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="3" colspan="2" >
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType" >
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>241</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeType" >
+      <enum>QSizePolicy::Expanding</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>20</width>
+       <height>16</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <widget class="QPushButton" name="deleteButton" >
+       <property name="text" >
+        <string>Quit and delete XLink</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType" >
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>100</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="okButton" >
+       <property name="text" >
+        <string>Ok</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11" />
+ <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
+ <includes>
+  <include location="local" >xlinkobj.h</include>
+  <include location="local" >mapcenterobj.h</include>
+  <include location="local" >linkablemapobj.h</include>
+ </includes>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>okButton</sender>
+   <signal>clicked()</signal>
+   <receiver>EditXLinkDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>338</x>
+     <y>180</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>196</x>
+     <y>102</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/exporthtmldialog.ui b/exporthtmldialog.ui
new file mode 100644 (file)
index 0000000..4ea984a
--- /dev/null
@@ -0,0 +1,321 @@
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>ExportHTMLDialog</class>
+<author>Uwe Drechsel</author>
+<widget class="QDialog">
+    <property name="name">
+        <cstring>ExportHTMLDialog</cstring>
+    </property>
+    <property name="geometry">
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>375</width>
+            <height>346</height>
+        </rect>
+    </property>
+    <property name="caption">
+        <string>Export HTML</string>
+    </property>
+    <property name="modal">
+        <bool>false</bool>
+    </property>
+    <vbox>
+        <property name="name">
+            <cstring>unnamed</cstring>
+        </property>
+        <widget class="QLayoutWidget">
+            <property name="name">
+                <cstring>layout33</cstring>
+            </property>
+            <hbox>
+                <property name="name">
+                    <cstring>unnamed</cstring>
+                </property>
+                <widget class="QLabel">
+                    <property name="name">
+                        <cstring>textLabel1</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Directory:</string>
+                    </property>
+                </widget>
+                <widget class="QLineEdit">
+                    <property name="name">
+                        <cstring>lineEdit1</cstring>
+                    </property>
+                </widget>
+                <widget class="QPushButton">
+                    <property name="name">
+                        <cstring>browseButton</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Browse</string>
+                    </property>
+                </widget>
+            </hbox>
+        </widget>
+        <widget class="QButtonGroup">
+            <property name="name">
+                <cstring>buttonGroup2</cstring>
+            </property>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>3</hsizetype>
+                    <vsizetype>5</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
+            </property>
+            <property name="minimumSize">
+                <size>
+                    <width>0</width>
+                    <height>230</height>
+                </size>
+            </property>
+            <property name="title">
+                <string>Options</string>
+            </property>
+            <vbox>
+                <property name="name">
+                    <cstring>unnamed</cstring>
+                </property>
+                <widget class="QCheckBox">
+                    <property name="name">
+                        <cstring>checkBox4</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Include image of map</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox">
+                    <property name="name">
+                        <cstring>checkBox5_2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>create image only</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox">
+                    <property name="name">
+                        <cstring>checkBox5</cstring>
+                    </property>
+                    <property name="text">
+                        <string>use WIKI style</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox">
+                    <property name="name">
+                        <cstring>checkBox4_2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>use heading for URLs (instead of link target)</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox">
+                    <property name="name">
+                        <cstring>checkBox6</cstring>
+                    </property>
+                    <property name="text">
+                        <string>use image of earth to mark URLs in text</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox">
+                    <property name="name">
+                        <cstring>checkBox7</cstring>
+                    </property>
+                    <property name="text">
+                        <string>use default CSS file</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox">
+                    <property name="name">
+                        <cstring>checkBox3</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>1</hsizetype>
+                            <vsizetype>0</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="text">
+                        <string>show output of external scripts</string>
+                    </property>
+                </widget>
+            </vbox>
+        </widget>
+        <spacer>
+            <property name="name">
+                <cstring>spacer6</cstring>
+            </property>
+            <property name="orientation">
+                <enum>Vertical</enum>
+            </property>
+            <property name="sizeType">
+                <enum>Expanding</enum>
+            </property>
+            <property name="sizeHint">
+                <size>
+                    <width>21</width>
+                    <height>60</height>
+                </size>
+            </property>
+        </spacer>
+        <widget class="QLayoutWidget">
+            <property name="name">
+                <cstring>layout17</cstring>
+            </property>
+            <hbox>
+                <property name="name">
+                    <cstring>unnamed</cstring>
+                </property>
+                <spacer>
+                    <property name="name">
+                        <cstring>spacer5</cstring>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                    <property name="sizeType">
+                        <enum>Expanding</enum>
+                    </property>
+                    <property name="sizeHint">
+                        <size>
+                            <width>61</width>
+                            <height>21</height>
+                        </size>
+                    </property>
+                </spacer>
+                <widget class="QPushButton">
+                    <property name="name">
+                        <cstring>pushButton4</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Export</string>
+                    </property>
+                    <property name="default">
+                        <bool>true</bool>
+                    </property>
+                </widget>
+                <widget class="QPushButton">
+                    <property name="name">
+                        <cstring>pushButton5</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Cancel</string>
+                    </property>
+                </widget>
+            </hbox>
+        </widget>
+    </vbox>
+</widget>
+<connections>
+    <connection>
+        <sender>pushButton5</sender>
+        <signal>pressed()</signal>
+        <receiver>ExportHTMLDialog</receiver>
+        <slot>reject()</slot>
+    </connection>
+    <connection>
+        <sender>pushButton4</sender>
+        <signal>clicked()</signal>
+        <receiver>ExportHTMLDialog</receiver>
+        <slot>accept()</slot>
+    </connection>
+    <connection>
+        <sender>browseButton</sender>
+        <signal>pressed()</signal>
+        <receiver>ExportHTMLDialog</receiver>
+        <slot>browseDirectory()</slot>
+    </connection>
+    <connection>
+        <sender>checkBox4</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>ExportHTMLDialog</receiver>
+        <slot>includeImage(bool)</slot>
+    </connection>
+    <connection>
+        <sender>checkBox5</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>ExportHTMLDialog</receiver>
+        <slot>useWIKIpressed(bool)</slot>
+    </connection>
+    <connection>
+        <sender>lineEdit1</sender>
+        <signal>textChanged(const QString&amp;)</signal>
+        <receiver>ExportHTMLDialog</receiver>
+        <slot>dirChanged()</slot>
+    </connection>
+    <connection>
+        <sender>checkBox3</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>ExportHTMLDialog</receiver>
+        <slot>showOut(bool)</slot>
+    </connection>
+    <connection>
+        <sender>checkBox4_2</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>ExportHTMLDialog</receiver>
+        <slot>useHeadingPressed(bool)</slot>
+    </connection>
+    <connection>
+        <sender>checkBox5_2</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>ExportHTMLDialog</receiver>
+        <slot>imgOnly(bool)</slot>
+    </connection>
+    <connection>
+        <sender>checkBox6</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>ExportHTMLDialog</receiver>
+        <slot>useURLImagePressed(bool)</slot>
+    </connection>
+</connections>
+<includes>
+    <include location="local" impldecl="in declaration">showtextdialog.h</include>
+    <include location="global" impldecl="in declaration">qprocess.h</include>
+    <include location="global" impldecl="in implementation">iostream</include>
+    <include location="local" impldecl="in implementation">settings.h</include>
+    <include location="global" impldecl="in implementation">qfiledialog.h</include>
+    <include location="global" impldecl="in implementation">qmessagebox.h</include>
+    <include location="local" impldecl="in implementation">file.h</include>
+    <include location="local" impldecl="in implementation">icons/flag-url.xpm</include>
+    <include location="local" impldecl="in implementation">exporthtmldialog.ui.h</include>
+</includes>
+<variables>
+    <variable>QString css;</variable>
+    <variable>QString xsl;</variable>
+    <variable>QString scriptpath;</variable>
+    <variable>QString stylepath;</variable>
+    <variable>QString dir;</variable>
+    <variable>bool image;</variable>
+    <variable>bool wikistyle;</variable>
+    <variable>QString script;</variable>
+    <variable>bool showOutput;</variable>
+    <variable>QProcess *proc;</variable>
+    <variable>ShowTextDialog *dia;</variable>
+    <variable>bool imageOnly;</variable>
+    <variable>bool useHeading;</variable>
+    <variable>bool useURLImage;</variable>
+</variables>
+<slots>
+    <slot>browseDirectory()</slot>
+    <slot>useWIKIpressed( bool b )</slot>
+    <slot>includeImage( bool b )</slot>
+    <slot>imgOnly( bool b )</slot>
+    <slot>useHeadingPressed( bool b )</slot>
+    <slot>useURLImagePressed( bool b )</slot>
+    <slot>showOut( bool b )</slot>
+    <slot>dirChanged()</slot>
+    <slot>doExport( const QString &amp; mapname )</slot>
+    <slot returnType="QString">getDir()</slot>
+    <slot>readOutput()</slot>
+</slots>
+<functions>
+    <function access="private" specifier="non virtual">init()</function>
+    <function access="private" specifier="non virtual">destroy()</function>
+</functions>
+<pixmapinproject/>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/exportoofiledialog.cpp b/exportoofiledialog.cpp
new file mode 100644 (file)
index 0000000..b7e26e0
--- /dev/null
@@ -0,0 +1,97 @@
+#include <iostream>
+
+#include "exportoofiledialog.h"
+
+ExportOOFileDialog::ExportOOFileDialog():QFileDialog()
+{
+       init();
+}
+
+ExportOOFileDialog::ExportOOFileDialog (QWidget * parent, const QString &caption ):QFileDialog(parent, caption)
+{
+       init();
+}
+
+bool ExportOOFileDialog::foundConfig()
+{
+       return !filters.isEmpty();
+}
+
+
+QString ExportOOFileDialog::selectedConfig()
+{
+       QStringList::Iterator itpath=configPaths.begin();
+       QStringList::Iterator itf=filters.begin();
+       while (itf != filters.end()) 
+       {
+               if (*itf==selectedFilter()) return *itpath;
+               itpath++;       
+               itf++;
+    }
+       qWarning ("ExportOOFileDialog::selectedConfig  No filter found!");
+       return "";
+}
+
+void ExportOOFileDialog::newConfigPath(const QString &s)
+{
+       lastFilter=s;
+}
+
+QString ExportOOFileDialog::selectedFile()
+{
+       return QFileDialog::selectedFile();
+}
+
+
+void ExportOOFileDialog::show()
+{
+       setFilters (filters);
+       QFileDialog::show();
+}
+
+void ExportOOFileDialog::init()
+{
+       setMode( QFileDialog::AnyFile );
+       QDir d;
+       d.setPath ("/usr/share/vym/exports");
+       scanExportConfigs(d);
+       d.setPath (d.homeDirPath()+"/.vym/exports");
+       scanExportConfigs(d);
+       d.setPath (d.currentPath()+"/exports");
+       scanExportConfigs(d);
+
+       connect (
+               this,SIGNAL (filterSelected(const QString&)),
+               this, SLOT( newConfigPath(const QString &)));
+}
+
+void ExportOOFileDialog::addFilter(const QString &f)
+{
+       lastFilter=f;
+       filters.append (f);
+}
+
+void ExportOOFileDialog::scanExportConfigs(QDir dir)
+{
+       // Scan existing export configurations
+       SimpleSettings set;
+       QFile f;
+       if (dir.exists())
+       {
+               // Traverse files
+        dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
+
+        QFileInfoList list = dir.entryInfoList();
+        for (int i = 0; i < list.size(); ++i) {
+            QFileInfo fi = list.at(i);
+
+                       if (fi.fileName().endsWith(".conf") )
+                       {
+                               configPaths.append (fi.absFilePath());
+                               set.clear();
+                               set.readSettings (fi.absFilePath());
+                               addFilter (set.readEntry(QString("Name")) + " (*.odp)");
+                       }               
+        }
+       }               
+}
diff --git a/exportoofiledialog.h b/exportoofiledialog.h
new file mode 100644 (file)
index 0000000..88325f4
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef EXPORTOOFILEDIALOG
+#define EXPORTOOFILEDIALOG
+
+#include <QFileDialog>
+#include <QStringList>
+
+#include "settings.h"
+
+/*! \brief Dialog to select output file and format for Open Office documents
+
+This is an overloaded QFileDialog, which allows to select templates by setting a type.
+*/
+
+class ExportOOFileDialog:public QFileDialog
+{
+       Q_OBJECT
+public:
+       ExportOOFileDialog();
+
+       ExportOOFileDialog (QWidget * parent , const  QString &caption=QString());
+       bool foundConfig();
+       QString selectedConfig();
+       QString selectedFile();
+       void show();
+        
+private slots:
+       void  newConfigPath (const QString&f);
+
+private:
+       void init();
+       void addFilter(const QString &);
+       void scanExportConfigs(QDir );
+       QStringList configPaths;
+       QStringList filters;
+       QString lastFilter;
+       
+};
+#endif
diff --git a/exports.cpp b/exports.cpp
new file mode 100644 (file)
index 0000000..8fa6f2b
--- /dev/null
@@ -0,0 +1,562 @@
+#include "exports.h"
+#include "file.h"
+#include "linkablemapobj.h"
+#include "misc.h"
+#include "mainwindow.h"
+#include "warningdialog.h"
+#include "xsltproc.h"
+
+extern Main *mainWindow;
+extern QDir vymBaseDir;
+extern QString vymName;
+
+ExportBase::ExportBase()
+{
+       indentPerDepth="  ";
+       bool ok;
+    tmpDir.setPath (makeTmpDir(ok,"vym-export"));
+       if (!tmpDir.exists() || !ok)
+               QMessageBox::critical( 0, QObject::tr( "Error" ),
+                                          QObject::tr("Couldn't access temporary directory\n"));
+       cancelFlag=false;                                  
+}
+
+ExportBase::~ExportBase()
+{
+       // Cleanup tmpdir
+       removeDir (tmpDir);
+}
+
+void ExportBase::setDir(const QDir &d)
+{
+       outDir=d;
+}
+
+void ExportBase::setFile (const QString &p)
+{
+       outputFile=p;
+}
+
+QString ExportBase::getFile ()
+{
+       return outputFile;
+}
+
+void ExportBase::setModel(VymModel *m)
+{
+       model=m;
+}
+
+void ExportBase::setCaption (const QString &s)
+{
+       caption=s;
+}
+
+void ExportBase::addFilter(const QString &s)
+{
+       filter=s;
+}
+
+bool ExportBase::execDialog()
+{
+       //MapEditor *me=model.getMapEditor(); FIXME needed?
+       // if (model->mapCenters.count() && me)
+       {
+               QFileDialog *fd=new QFileDialog( 0, caption);
+               fd->setFilter (filter);
+               fd->setCaption(caption);
+               fd->setMode( QFileDialog::AnyFile );
+               fd->setDir (outDir);
+               fd->show();
+
+               if ( fd->exec() == QDialog::Accepted )
+               {
+                       if (QFile (fd->selectedFile()).exists() )
+                       {
+                               QMessageBox mb( vymName,
+                                       QObject::tr("The file %1 exists already.\nDo you want to overwrite it?").arg(fd->selectedFile()), 
+                               QMessageBox::Warning,
+                               QMessageBox::Yes | QMessageBox::Default,
+                               QMessageBox::Cancel | QMessageBox::Escape,
+                               Qt::NoButton );
+                               mb.setButtonText( QMessageBox::Yes, QObject::tr("Overwrite") );
+                               mb.setButtonText( QMessageBox::No, QObject::tr("Cancel"));
+                               ExportBase ex;
+                               switch( mb.exec() ) 
+                               {
+                                       case QMessageBox::Yes:
+                                               // save 
+                                               break;;
+                                       case QMessageBox::Cancel:
+                                               cancelFlag=true;
+                                               return false;
+                                               break;
+                               }
+                       }
+                       outputFile=fd->selectedFile();
+                       cancelFlag=false;
+                       return true;
+               }
+       }
+       return false;
+}
+
+bool ExportBase::canceled()
+{
+       return cancelFlag;
+}
+
+QString ExportBase::getSectionString(BranchObj *bostart)
+{
+       // Make prefix like "2.5.3" for "bo:2,bo:5,bo:3"
+       QString r;
+       BranchObj *bo=bostart;
+       int depth=bo->getDepth();
+       while (depth>0)
+       {
+               r=QString("%1").arg(1+bo->getNum(),0,10)+"." + r;
+               bo=(BranchObj*)(bo->getParObj());
+               depth=bo->getDepth();
+       }       
+       if (r.isEmpty())
+               return r;
+       else    
+               return r + " ";
+}
+
+////////////////////////////////////////////////////////////////////////
+ExportASCII::ExportASCII()
+{
+       filter="TXT (*.txt)";
+       caption=vymName+ " -" +QObject::tr("Export as ASCII")+" "+QObject::tr("(still experimental)");
+}
+
+void ExportASCII::doExport()
+{
+       QFile file (outputFile);
+       if ( !file.open( QIODevice::WriteOnly ) )
+       {
+               qWarning ("ExportBase::exportXML  couldn't open "+outputFile);
+               return;
+       }
+       QTextStream ts( &file );        // use LANG decoding here...
+
+       // Main loop over all branches
+       QString s;
+       QString curIndent;
+       int i;
+       BranchObj *bo;
+       bo=model->first();
+       while (bo) 
+       {
+               // Make indentstring
+               curIndent="";
+               for (i=0;i<bo->getDepth()-1;i++) curIndent+= indentPerDepth;
+
+               if (!bo->hasHiddenExportParent() )
+               {
+                       switch (bo->getDepth())
+                       {
+                               case 0:
+                                       ts << underline (bo->getHeading(),QString("="));
+                                       ts << "\n";
+                                       break;
+                               case 1:
+                                       ts << "\n";
+                                       ts << (underline (getSectionString(bo) + bo->getHeading(), QString("-") ) );
+                                       ts << "\n";
+                                       break;
+                               case 2:
+                                       ts << "\n";
+                                       ts << (curIndent + "* " + bo->getHeading());
+                                       ts << "\n";
+                                       break;
+                               case 3:
+                                       ts << (curIndent + "- " + bo->getHeading());
+                                       ts << "\n";
+                                       break;
+                               default:
+                                       ts << (curIndent + "- " + bo->getHeading());
+                                       ts << "\n";
+                                       break;
+                       }
+
+                       // If necessary, write note
+                       if (!bo->getNote().isEmpty())
+                       {
+                               curIndent +="  | ";
+                               s=bo->getNoteASCII( curIndent, 80);
+                               ts << s;
+                       }
+               }
+               bo=model->next(bo);
+       }
+       file.close();
+}
+
+QString ExportASCII::underline (const QString &text, const QString &line)
+{
+       QString r=text + "\n";
+       for (int j=0;j<text.length();j++) r+=line;
+       return r;
+}
+
+
+////////////////////////////////////////////////////////////////////////
+void ExportCSV::doExport()
+{
+       QFile file (outputFile);
+       if ( !file.open( QIODevice::WriteOnly ) )
+       {
+               qWarning ("ExportBase::exportXML  couldn't open "+outputFile);
+               return;
+       }
+       QTextStream ts( &file );        // use LANG decoding here...
+
+       // Write header
+       ts << "\"Note\""  <<endl;
+
+       // Main loop over all branches
+       QString s;
+       QString curIndent("");
+       int i;
+       BranchObj *bo;
+       bo=model->first();
+       while (bo) 
+       {
+               if (!bo->hasHiddenExportParent() )
+               {
+                       // If necessary, write note
+                       if (!bo->getNote().isEmpty())
+                       {
+                               s =bo->getNoteASCII();
+                               s=s.replace ("\n","\n"+curIndent);
+                               ts << ("\""+s+"\",");
+                       } else
+                               ts <<"\"\",";
+
+                       // Make indentstring
+                       for (i=0;i<bo->getDepth();i++) curIndent+= "\"\",";
+
+                       // Write heading
+                       ts << curIndent << "\"" << bo->getHeading()<<"\""<<endl;
+               }
+               
+               bo=model->next(bo);
+               curIndent="";
+       }
+       file.close();
+}
+
+////////////////////////////////////////////////////////////////////////
+void ExportKDEBookmarks::doExport() 
+{
+       MapEditor *me=model->getMapEditor();
+       if (me)
+       {
+               WarningDialog dia;
+               dia.showCancelButton (true);
+               dia.setText(QObject::tr("Exporting the %1 bookmarks will overwrite\nyour existing bookmarks file.").arg("KDE"));
+               dia.setCaption(QObject::tr("Warning: Overwriting %1 bookmarks").arg("KDE"));
+               dia.setShowAgainName("/exports/KDE/overwriteKDEBookmarks");
+               if (dia.exec()==QDialog::Accepted)
+               {
+                       me->exportXML(tmpDir.path(),false);
+
+                       XSLTProc p;
+                       p.setInputFile (tmpDir.path()+"/"+me->getMapName()+".xml");
+                       p.setOutputFile (tmpDir.home().path()+"/.kde/share/apps/konqueror/bookmarks.xml");
+                       p.setXSLFile (vymBaseDir.path()+"/styles/vym2kdebookmarks.xsl");
+                       p.process();
+
+                       QString ub=vymBaseDir.path()+"/scripts/update-bookmarks";
+                       QProcess *proc= new QProcess ;
+                       proc->start( ub);
+                       if (!proc->waitForStarted())
+                       {
+                               QMessageBox::warning(0, 
+                                       QObject::tr("Warning"),
+                                       QObject::tr("Couldn't find script %1\nto notifiy Browsers of changed bookmarks.").arg(ub));
+                       }       
+               }
+       }
+
+}
+
+////////////////////////////////////////////////////////////////////////
+void ExportFirefoxBookmarks::doExport() 
+{
+       MapEditor *me=model->getMapEditor();
+       if (me)
+       {
+               WarningDialog dia;
+               dia.showCancelButton (true);
+               dia.setText(QObject::tr("Exporting the %1 bookmarks will overwrite\nyour existing bookmarks file.").arg("Firefox"));
+               dia.setCaption(QObject::tr("Warning: Overwriting %1 bookmarks").arg("Firefox"));
+               dia.setShowAgainName("/vym/warnings/overwriteImportBookmarks");
+               if (dia.exec()==QDialog::Accepted)
+               {
+                       me->exportXML(tmpDir.path(),false);
+
+/*
+                       XSLTProc p;
+                       p.setInputFile (tmpDir.path()+"/"+me->getMapName()+".xml");
+                       p.setOutputFile (tmpDir.home().path()+"/.kde/share/apps/konqueror/bookmarks.xml");
+                       p.setXSLFile (vymBaseDir.path()+"/styles/vym2kdebookmarks.xsl");
+                       p.process();
+
+                       QString ub=vymBaseDir.path()+"/scripts/update-bookmarks";
+                       QProcess *proc = new QProcess( );
+                       proc->addArgument(ub);
+
+                       if ( !proc->start() ) 
+                       {
+                               QMessageBox::warning(0, 
+                                       QObject::tr("Warning"),
+                                       QObject::tr("Couldn't find script %1\nto notifiy Browsers of changed bookmarks.").arg(ub));
+                       }       
+
+*/
+
+               }
+       }
+}
+
+////////////////////////////////////////////////////////////////////////
+void ExportTaskjuggler::doExport() 
+{
+       MapEditor *me=model->getMapEditor();
+       if (me)
+       {
+               me->exportXML(tmpDir.path(),false);
+
+               XSLTProc p;
+               p.setInputFile (tmpDir.path()+"/"+me->getMapName()+".xml");
+               p.setOutputFile (outputFile);
+               p.setXSLFile (vymBaseDir.path()+"/styles/vym2taskjuggler.xsl");
+               p.process();
+       }
+
+}
+
+////////////////////////////////////////////////////////////////////////
+void ExportLaTeX::doExport() 
+{
+       // Exports a map to a LaTex file.  
+       // This file needs to be included 
+       // or inported into a LaTex document
+       // it will not add a preamble, or anything 
+       // that makes a full LaTex document.
+  QFile file (outputFile);
+  if ( !file.open( QIODevice::WriteOnly ) ) {
+       QMessageBox::critical (0,QObject::tr("Critical Export Error"),QObject::tr("Could not write %1").arg(outputFile));
+       mainWindow->statusMessage(QString(QObject::tr("Export failed.")));
+    return;
+  }
+  QTextStream ts( &file );     // use LANG decoding here...
+  ts.setEncoding (QTextStream::UnicodeUTF8); // Force UTF8
+  
+  // Main loop over all branches
+  QString s;
+  // QString curIndent("");
+  // int i;
+  BranchObj *bo;
+  bo=model->first();
+  while (bo) {
+       if (!bo->hasHiddenExportParent() )
+       {
+               if (bo->getDepth()==0);
+               else if (bo->getDepth()==1) {
+                 ts << ("\\chapter{" + bo->getHeading()+ "}\n");
+               }
+               else if (bo->getDepth()==2) {
+                 ts << ("\\section{" + bo->getHeading()+ "}\n");
+               }
+               else if (bo->getDepth()==3) {
+                 ts << ("\\subsection{" + bo->getHeading()+ "}\n");
+               }
+               else if (bo->getDepth()==4) {
+                 ts << ("\\subsubsection{" + bo->getHeading()+ "}\n");
+               }
+               else {
+                 ts << ("\\paragraph*{" + bo->getHeading()+ "}\n");
+               }
+               
+               // If necessary, write note
+               if (!bo->getNote().isEmpty()) {
+                 ts << (bo->getNoteASCII());
+                 ts << ("\n");
+               }
+       }
+    bo=model->next(bo);
+   }
+  file.close();
+}
+
+////////////////////////////////////////////////////////////////////////
+ExportOO::ExportOO()
+{
+       useSections=false;
+}
+
+ExportOO::~ExportOO()
+{
+}      
+
+QString ExportOO::buildList (BranchObj *current)
+{
+    QString r;
+    BranchObj *bo;
+
+    uint i=0;
+    bo=current->getFirstBranch();
+    if (bo)
+    {
+               if (!bo->hasHiddenExportParent() )
+               {
+                       // Start list
+                       r+="<text:list text:style-name=\"vym-list\">\n";
+                       while (bo)
+                       {
+                               r+="<text:list-item><text:p >";
+                               r+=quotemeta(bo->getHeading());
+                               // If necessary, write note
+                               if (!bo->getNote().isEmpty())
+                                       r+=bo->getNoteOpenDoc();
+                               r+="</text:p>";
+                               r+=buildList (bo);      // recursivly add deeper branches
+                               r+="</text:list-item>\n";
+                               i++;
+                               bo=current->getBranchNum(i);
+                       }
+                       r+="</text:list>\n";
+               }
+    }
+    return r;
+}
+
+
+void ExportOO::exportPresentation()
+{
+       QString allPages;
+
+/* FIXME not adapted to multiple mapCenters yet
+       // Insert new content
+       content.replace ("<!-- INSERT TITLE -->",quotemeta(mapCenter->getHeading()));
+       content.replace ("<!-- INSERT AUTHOR -->",quotemeta(mapCenter->getAuthor()));
+
+       QString onePage;
+       QString list;
+       
+       BranchObj *sectionBO=mapCenter->getFirstBranch();
+    int i=0;
+       BranchObj *pagesBO;
+    int j=0;
+
+       // Walk sections
+       while (sectionBO && !sectionBO->hasHiddenExportParent() )
+       {
+               if (useSections)
+               {
+                       // Add page with section title
+                       onePage=sectionTemplate;
+                       onePage.replace ("<!-- INSERT PAGE HEADING -->", quotemeta(sectionBO->getHeading() ) );
+                       allPages+=onePage;
+               } else
+               {
+                       i=-2;   // only use inner loop to 
+                               // turn mainbranches into pages
+                       sectionBO=mapCenter;
+               }
+
+               // Walk mainpages
+               pagesBO=sectionBO->getFirstBranch();
+               j=0;
+               while (pagesBO && !pagesBO->hasHiddenExportParent() )
+               {
+                       // Add page with list of items
+                       onePage=pageTemplate;
+                       onePage.replace ("<!-- INSERT PAGE HEADING -->", quotemeta (pagesBO->getHeading() ) );
+                       list=buildList (pagesBO);
+                       onePage.replace ("<!-- INSERT LIST -->", list);
+                       allPages+=onePage;
+                       j++;
+                       pagesBO=sectionBO->getBranchNum(j);
+               }
+               i++;
+               sectionBO=mapCenter->getBranchNum(i);
+       }
+       
+       content.replace ("<!-- INSERT PAGES -->",allPages);
+
+       // Write modified content
+       QFile f (contentFile);
+    if ( !f.open( QIODevice::WriteOnly ) ) 
+       {
+               QMessageBox::critical (0,QObject::tr("Critical Export Error"),QObject::tr("Could not write %1").arg(contentFile));
+               mainWindow->statusMessage(QString(QObject::tr("Export failed.")));
+               return;
+    }
+
+    QTextStream t( &f );
+    t << content;
+    f.close();
+
+       // zip tmpdir to destination
+       zipDir (tmpDir,outputFile);     
+*/
+}
+
+bool ExportOO::setConfigFile (const QString &cf)
+{
+       configFile=cf;
+       int i=cf.findRev ("/");
+       if (i>=0) configDir=cf.left(i);
+       SimpleSettings set;
+       set.readSettings(configFile);
+
+       // set paths
+       templateDir=configDir+"/"+set.readEntry ("Template");
+
+       QDir d (templateDir);
+       if (!d.exists())
+       {
+               QMessageBox::critical (0,QObject::tr("Critical Export Error"),QObject::tr("Check \"%1\" in\n%2").arg("Template="+set.readEntry ("Template")).arg(configFile));
+               return false;
+
+       }
+
+       contentTemplateFile=templateDir+"content-template.xml";
+       contentFile=tmpDir.path()+"/content.xml";
+       pageTemplateFile=templateDir+"page-template.xml";
+       sectionTemplateFile=templateDir+"section-template.xml";
+
+       if (set.readEntry("useSections").contains("yes"))
+               useSections=true;
+
+       // Copy template to tmpdir
+       system ("cp -r "+templateDir+"* "+tmpDir.path());
+
+       // Read content-template
+       if (!loadStringFromDisk (contentTemplateFile,content))
+       {
+               QMessageBox::critical (0,QObject::tr("Critical Export Error"),QObject::tr("Could not read %1").arg(contentTemplateFile));
+               return false;
+       }
+
+       // Read page-template
+       if (!loadStringFromDisk (pageTemplateFile,pageTemplate))
+       {
+               QMessageBox::critical (0,QObject::tr("Critical Export Error"),QObject::tr("Could not read %1").arg(pageTemplateFile));
+               return false;
+       }
+       
+       // Read section-template
+       if (useSections && !loadStringFromDisk (sectionTemplateFile,sectionTemplate))
+       {
+               QMessageBox::critical (0,QObject::tr("Critical Export Error"),QObject::tr("Could not read %1").arg(sectionTemplateFile));
+               return false;
+       }
+       return true;
+}
+
diff --git a/exports.h b/exports.h
new file mode 100644 (file)
index 0000000..daef32d
--- /dev/null
+++ b/exports.h
@@ -0,0 +1,116 @@
+#ifndef EXPORTS_H
+#define EXPORTS_H
+
+#include <qdir.h>
+#include <qstring.h>
+#include <iostream>
+
+#include "mapcenterobj.h"
+#include "settings.h"
+#include "vymmodel.h"
+
+
+/*! \brief Base class for all exports
+*/
+
+///////////////////////////////////////////////////////////////////////
+
+class ExportBase
+{
+public:
+       ExportBase();
+       virtual ~ExportBase();
+       virtual void setDir(const QDir&);
+       virtual void setFile(const QString &);
+       virtual QString getFile ();
+       virtual void setModel (VymModel *m);
+       virtual void setCaption(const QString &);
+       virtual void addFilter (const QString &);
+       virtual bool execDialog();
+       virtual bool canceled();
+protected:  
+       VymModel *model;
+       virtual QString getSectionString (BranchObj*);
+
+       QDir tmpDir;
+       QDir outDir;
+       QString outputFile;
+       QString indentPerDepth;
+       QString caption;
+       QString filter;
+       bool cancelFlag;
+};
+
+///////////////////////////////////////////////////////////////////////
+class ExportASCII:public ExportBase
+{
+public:
+       ExportASCII();
+       virtual void doExport();
+       virtual QString underline (const QString &text, const QString &line);
+};
+
+///////////////////////////////////////////////////////////////////////
+class ExportCSV:public ExportBase
+{
+public:
+       virtual void doExport();
+};
+
+///////////////////////////////////////////////////////////////////////
+class ExportXMLBase:public ExportBase
+{
+};
+
+///////////////////////////////////////////////////////////////////////
+class ExportKDEBookmarks:public ExportXMLBase
+{
+public:
+       virtual void doExport();
+};     
+
+///////////////////////////////////////////////////////////////////////
+class ExportFirefoxBookmarks:public ExportXMLBase
+{
+public:
+       virtual void doExport();
+};     
+
+///////////////////////////////////////////////////////////////////////
+class ExportTaskjuggler:public ExportXMLBase
+{
+public:
+       virtual void doExport();
+};     
+
+///////////////////////////////////////////////////////////////////////
+class ExportLaTeX:public ExportBase
+{
+public:
+       virtual void doExport();
+};     
+
+///////////////////////////////////////////////////////////////////////
+class ExportOO:public ExportBase
+{
+public:
+       ExportOO();
+       ~ExportOO();
+       void exportPresentation();
+       bool setConfigFile (const QString &);
+private:
+       QString buildList (BranchObj*);
+       bool useSections;
+       QString configFile;
+       QString configDir;
+       QString templateDir;
+       QString content;
+       QString contentTemplate;
+       QString contentTemplateFile;
+       QString contentFile;
+       QString pageTemplate;
+       QString pageTemplateFile;
+       QString sectionTemplate;
+       QString sectionTemplateFile;
+};
+#endif
diff --git a/exports/orange-blue.conf b/exports/orange-blue.conf
new file mode 100644 (file)
index 0000000..5dcae47
--- /dev/null
@@ -0,0 +1,4 @@
+Name=Simple Presentation orange-blue (without sections)
+Template=template-orange-blue/
+Author=Uwe Drechsel (based on Open Office default)
+useSections=no
\ No newline at end of file
diff --git a/exports/template-orange-blue/META-INF/manifest.xml b/exports/template-orange-blue/META-INF/manifest.xml
new file mode 100644 (file)
index 0000000..6dfa7f7
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE manifest:manifest PUBLIC "-//OpenOffice.org//DTD Manifest 1.0//EN" "Manifest.dtd">
+<manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0">
+ <manifest:file-entry manifest:media-type="application/vnd.oasis.opendocument.presentation" manifest:full-path="/"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.xml.ui.configuration" manifest:full-path="Configurations2/"/>
+ <manifest:file-entry manifest:media-type="image/png" manifest:full-path="Pictures/1000000000000040000000400142E835.png"/>
+ <manifest:file-entry manifest:media-type="" manifest:full-path="Pictures/"/>
+ <manifest:file-entry manifest:media-type="text/xml" manifest:full-path="content.xml"/>
+ <manifest:file-entry manifest:media-type="text/xml" manifest:full-path="styles.xml"/>
+ <manifest:file-entry manifest:media-type="text/xml" manifest:full-path="meta.xml"/>
+ <manifest:file-entry manifest:media-type="" manifest:full-path="Thumbnails/thumbnail.png"/>
+ <manifest:file-entry manifest:media-type="" manifest:full-path="Thumbnails/"/>
+ <manifest:file-entry manifest:media-type="text/xml" manifest:full-path="settings.xml"/>
+</manifest:manifest>
\ No newline at end of file
diff --git a/exports/template-orange-blue/Pictures/1000000000000040000000400142E835.png b/exports/template-orange-blue/Pictures/1000000000000040000000400142E835.png
new file mode 100644 (file)
index 0000000..44980d9
Binary files /dev/null and b/exports/template-orange-blue/Pictures/1000000000000040000000400142E835.png differ
diff --git a/exports/template-orange-blue/Thumbnails/thumbnail.png b/exports/template-orange-blue/Thumbnails/thumbnail.png
new file mode 100644 (file)
index 0000000..f1c2eb5
Binary files /dev/null and b/exports/template-orange-blue/Thumbnails/thumbnail.png differ
diff --git a/exports/template-orange-blue/content-template.xml b/exports/template-orange-blue/content-template.xml
new file mode 100644 (file)
index 0000000..4018b9d
--- /dev/null
@@ -0,0 +1,247 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+<office:document-content xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0" xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" office:version="1.0">
+  <office:scripts/>
+  <office:automatic-styles>
+    <style:style style:name="dp1" style:family="drawing-page">
+      <style:drawing-page-properties presentation:background-visible="true" presentation:background-objects-visible="true" presentation:display-footer="true" presentation:display-page-number="false" presentation:display-date-time="true"/>
+    </style:style>
+    <style:style style:name="dp2" style:family="drawing-page">
+      <style:drawing-page-properties presentation:display-header="true" presentation:display-footer="true" presentation:display-page-number="false" presentation:display-date-time="true"/>
+    </style:style>
+    <style:style style:name="gr1" style:family="graphic">
+      <style:graphic-properties style:protect="size"/>
+    </style:style>
+    <style:style style:name="pr1" style:family="presentation" style:parent-style-name="lyt-darkblue-title" style:list-style-name="L3">
+      <style:graphic-properties draw:fill-color="#ffffff" draw:auto-grow-height="true" fo:min-height="3.508cm"/>
+    </style:style>
+    <style:style style:name="pr2" style:family="presentation" style:parent-style-name="lyt-darkblue-subtitle">
+      <style:graphic-properties draw:fill-color="#ffffff" fo:min-height="13.231cm"/>
+    </style:style>
+    <style:style style:name="pr3" style:family="presentation" style:parent-style-name="lyt-darkblue-notes">
+      <style:graphic-properties draw:fill-color="#ffffff" draw:auto-grow-height="true" fo:min-height="11.411cm"/>
+    </style:style>
+    <style:style style:name="pr4" style:family="presentation" style:parent-style-name="lyt-darkblue-title" style:list-style-name="L3">
+      <style:graphic-properties draw:fill-color="#ffffff" draw:auto-grow-height="true" fo:min-height="3.508cm"/>
+    </style:style>
+    <style:style style:name="pr5" style:family="presentation" style:parent-style-name="lyt-darkblue-outline1">
+      <style:graphic-properties draw:fill-color="#ffffff" fo:min-height="13.231cm"/>
+    </style:style>
+    <style:style style:name="pr6" style:family="presentation" style:parent-style-name="lyt-darkblue-title" style:list-style-name="L3">
+      <style:graphic-properties draw:fill-color="#ffffff" draw:auto-grow-height="true" fo:min-height="3.508cm"/>
+    </style:style>
+    <style:style style:name="P1" style:family="paragraph">
+      <style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="0cm"/>
+    </style:style>
+    <style:style style:name="P2" style:family="paragraph">
+      <style:paragraph-properties fo:margin-left="0.6cm" fo:margin-right="0cm" fo:text-indent="-1cm"/>
+    </style:style>
+    <style:style style:name="P3" style:family="paragraph">
+      <style:paragraph-properties fo:margin-left="0.6cm" fo:margin-right="0cm" fo:text-indent="-0.6cm"/>
+    </style:style>
+    <style:style style:name="P4" style:family="paragraph">
+      <style:paragraph-properties fo:margin-left="0.6cm" fo:margin-right="0cm" fo:text-indent="-0.6cm"/>
+      <style:text-properties fo:hyphenate="false"/>
+    </style:style>
+    <style:style style:name="P5" style:family="paragraph">
+      <style:paragraph-properties fo:margin-left="1.2cm" fo:margin-right="0cm" fo:text-indent="-0.9cm"/>
+      <style:text-properties fo:hyphenate="true"/>
+    </style:style>
+    <style:style style:name="P6" style:family="paragraph">
+      <style:paragraph-properties fo:margin-left="2.4cm" fo:margin-right="0cm" fo:text-indent="-0.8cm"/>
+      <style:text-properties fo:hyphenate="true"/>
+    </style:style>
+    <style:style style:name="P7" style:family="paragraph">
+      <style:paragraph-properties fo:margin-left="3.6cm" fo:margin-right="0cm" fo:text-indent="-0.6cm"/>
+      <style:text-properties fo:hyphenate="true"/>
+    </style:style>
+    <style:style style:name="P8" style:family="paragraph">
+      <style:paragraph-properties fo:margin-left="1.4cm" fo:margin-right="0cm" fo:text-indent="-1.2cm"/>
+      <style:text-properties fo:hyphenate="true"/>
+    </style:style>
+    <text:list-style style:name="L1">
+      <text:list-level-style-bullet text:level="1" text:bullet-char="">
+        <style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="2" text:bullet-char="">
+        <style:list-level-properties text:space-before="1cm"/>
+        <style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="3" text:bullet-char="">
+        <style:list-level-properties text:space-before="2cm"/>
+        <style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="4" text:bullet-char="">
+        <style:list-level-properties text:space-before="3cm"/>
+        <style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="5" text:bullet-char="">
+        <style:list-level-properties text:space-before="4cm"/>
+        <style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="6" text:bullet-char="">
+        <style:list-level-properties text:space-before="5cm"/>
+        <style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="7" text:bullet-char="">
+        <style:list-level-properties text:space-before="6cm"/>
+        <style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="8" text:bullet-char="">
+        <style:list-level-properties text:space-before="7cm"/>
+        <style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="9" text:bullet-char="">
+        <style:list-level-properties text:space-before="8cm"/>
+        <style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+    </text:list-style>
+    <text:list-style style:name="L2">
+      <text:list-level-style-bullet text:level="1" text:bullet-char="●">
+        <style:list-level-properties text:min-label-width="0.6cm"/>
+        <style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="2" text:bullet-char="●">
+        <style:list-level-properties text:space-before="0.6cm" text:min-label-width="0.6cm"/>
+        <style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="3" text:bullet-char="●">
+        <style:list-level-properties text:space-before="1.2cm" text:min-label-width="0.6cm"/>
+        <style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="4" text:bullet-char="●">
+        <style:list-level-properties text:space-before="1.8cm" text:min-label-width="0.6cm"/>
+        <style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="5" text:bullet-char="●">
+        <style:list-level-properties text:space-before="2.4cm" text:min-label-width="0.6cm"/>
+        <style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="6" text:bullet-char="●">
+        <style:list-level-properties text:space-before="3cm" text:min-label-width="0.6cm"/>
+        <style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="7" text:bullet-char="●">
+        <style:list-level-properties text:space-before="3.6cm" text:min-label-width="0.6cm"/>
+        <style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="8" text:bullet-char="●">
+        <style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/>
+        <style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="9" text:bullet-char="●">
+        <style:list-level-properties text:space-before="4.8cm" text:min-label-width="0.6cm"/>
+        <style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+    </text:list-style>
+    <text:list-style style:name="L3">
+      <text:list-level-style-bullet text:level="1" text:bullet-char="">
+        <style:list-level-properties text:space-before="-0.4cm" text:min-label-width="1cm"/>
+        <style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="2" text:bullet-char="">
+        <style:list-level-properties text:space-before="0.2cm" text:min-label-width="1cm"/>
+        <style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="3" text:bullet-char="">
+        <style:list-level-properties text:space-before="0.8cm" text:min-label-width="1cm"/>
+        <style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="4" text:bullet-char="">
+        <style:list-level-properties text:space-before="1.4cm" text:min-label-width="1cm"/>
+        <style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="5" text:bullet-char="">
+        <style:list-level-properties text:space-before="2cm" text:min-label-width="1cm"/>
+        <style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="6" text:bullet-char="">
+        <style:list-level-properties text:space-before="2.6cm" text:min-label-width="1cm"/>
+        <style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="7" text:bullet-char="">
+        <style:list-level-properties text:space-before="3.2cm" text:min-label-width="1cm"/>
+        <style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="8" text:bullet-char="">
+        <style:list-level-properties text:space-before="3.8cm" text:min-label-width="1cm"/>
+        <style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="9" text:bullet-char="">
+        <style:list-level-properties text:space-before="4.4cm" text:min-label-width="1cm"/>
+        <style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+    </text:list-style>
+    <text:list-style style:name="vym-list">
+      <text:list-level-style-bullet text:level="1" text:bullet-char="●">
+        <style:list-level-properties text:space-before="0.3cm" text:min-label-width="0.9cm"/>
+        <style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#e6e6e6" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="2" text:bullet-char="–">
+        <style:list-level-properties text:space-before="1.6cm" text:min-label-width="0.8cm"/>
+        <style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#e6e6e6" fo:font-size="75%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="3" text:bullet-char="●">
+        <style:list-level-properties text:space-before="3cm" text:min-label-width="0.6cm"/>
+        <style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#e6e6e6" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="4" text:bullet-char="–">
+        <style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/>
+        <style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#e6e6e6" fo:font-size="75%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="5" text:bullet-char="●">
+        <style:list-level-properties text:space-before="5.4cm" text:min-label-width="0.6cm"/>
+        <style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#e6e6e6" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="6" text:bullet-char="●">
+        <style:list-level-properties text:space-before="6.6cm" text:min-label-width="0.6cm"/>
+        <style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#e6e6e6" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="7" text:bullet-char="●">
+        <style:list-level-properties text:space-before="7.8cm" text:min-label-width="0.6cm"/>
+        <style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#e6e6e6" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="8" text:bullet-char="●">
+        <style:list-level-properties text:space-before="9cm" text:min-label-width="0.6cm"/>
+        <style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#e6e6e6" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+      <text:list-level-style-bullet text:level="9" text:bullet-char="●">
+        <style:list-level-properties text:space-before="10.2cm" text:min-label-width="0.6cm"/>
+        <style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#e6e6e6" fo:font-size="45%"/>
+      </text:list-level-style-bullet>
+    </text:list-style>
+  </office:automatic-styles>
+  <office:body>
+    <office:presentation>
+      <draw:page draw:name="Title" draw:style-name="dp1" draw:master-page-name="lyt-darkblue" presentation:presentation-page-layout-name="AL1T0">
+        <office:forms form:automatic-focus="false" form:apply-design-mode="false"/>
+        <draw:frame presentation:style-name="pr1" draw:text-style-name="P2" draw:layer="layout" svg:width="23.912cm" svg:height="3.508cm" svg:x="2.058cm" svg:y="0.784cm" presentation:class="title" presentation:user-transformed="true">
+          <draw:text-box>
+            <text:p text:style-name="P1">
+            <!-- INSERT TITLE --></text:p>
+          </draw:text-box>
+        </draw:frame>
+        <draw:frame presentation:style-name="pr2" draw:text-style-name="P4" draw:layer="layout" svg:width="23.548cm" svg:height="13.231cm" svg:x="3.023cm" svg:y="6.178cm" presentation:class="subtitle" presentation:user-transformed="true">
+          <draw:text-box draw:corner-radius="10.956cm">
+            <text:p text:style-name="P3">
+            <!-- INSERT AUTHOR --> </text:p>
+            <text:p text:style-name="P3">
+            <!-- INSERT COMMENT --> </text:p>
+          </draw:text-box>
+        </draw:frame>
+        <presentation:notes draw:style-name="dp2">
+          <draw:page-thumbnail draw:style-name="gr1" draw:layer="layout" svg:width="13.706cm" svg:height="10.28cm" svg:x="3.647cm" svg:y="2.853cm" draw:page-number="1" presentation:class="page"/>
+          <draw:frame presentation:style-name="pr3" draw:text-style-name="P1" draw:layer="layout" svg:width="14.518cm" svg:height="11.411cm" svg:x="3.249cm" svg:y="14.13cm" presentation:class="notes" presentation:placeholder="true">
+            <draw:text-box/>
+          </draw:frame>
+        </presentation:notes>
+      </draw:page>
+
+         <!-- INSERT PAGES -->
+
+      <presentation:settings presentation:stay-on-top="true"/>
+    </office:presentation>
+  </office:body>
+</office:document-content>
+
diff --git a/exports/template-orange-blue/content.xml b/exports/template-orange-blue/content.xml
new file mode 100644 (file)
index 0000000..6a5dbc4
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<office:document-content xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0" xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" office:version="1.0"><office:scripts/><office:automatic-styles><style:style style:name="dp1" style:family="drawing-page"><style:drawing-page-properties presentation:background-visible="true" presentation:background-objects-visible="true" presentation:display-footer="true" presentation:display-page-number="false" presentation:display-date-time="true"/></style:style><style:style style:name="dp2" style:family="drawing-page"><style:drawing-page-properties presentation:display-header="true" presentation:display-footer="true" presentation:display-page-number="false" presentation:display-date-time="true"/></style:style><style:style style:name="gr1" style:family="graphic"><style:graphic-properties style:protect="size"/></style:style><style:style style:name="pr1" style:family="presentation" style:parent-style-name="lyt-darkblue-title" style:list-style-name="L3"><style:graphic-properties draw:fill-color="#ffffff" draw:auto-grow-height="true" fo:min-height="3.508cm"/></style:style><style:style style:name="pr2" style:family="presentation" style:parent-style-name="lyt-darkblue-subtitle"><style:graphic-properties draw:fill-color="#ffffff" fo:min-height="13.231cm"/></style:style><style:style style:name="pr3" style:family="presentation" style:parent-style-name="lyt-darkblue-notes"><style:graphic-properties draw:fill-color="#ffffff" draw:auto-grow-height="true" fo:min-height="11.411cm"/></style:style><style:style style:name="pr4" style:family="presentation" style:parent-style-name="lyt-darkblue-title" style:list-style-name="L3"><style:graphic-properties draw:fill-color="#ffffff" draw:auto-grow-height="true" fo:min-height="3.508cm"/></style:style><style:style style:name="pr5" style:family="presentation" style:parent-style-name="lyt-darkblue-outline1"><style:graphic-properties draw:fill-color="#ffffff" fo:min-height="13.231cm"/></style:style><style:style style:name="pr6" style:family="presentation" style:parent-style-name="lyt-darkblue-title" style:list-style-name="L3"><style:graphic-properties draw:fill-color="#ffffff" draw:auto-grow-height="true" fo:min-height="3.508cm"/></style:style><style:style style:name="P1" style:family="paragraph"><style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="0cm"/></style:style><style:style style:name="P2" style:family="paragraph"><style:paragraph-properties fo:margin-left="0.6cm" fo:margin-right="0cm" fo:text-indent="-1cm"/></style:style><style:style style:name="P3" style:family="paragraph"><style:paragraph-properties fo:margin-left="0.6cm" fo:margin-right="0cm" fo:text-indent="-0.6cm"/></style:style><style:style style:name="P4" style:family="paragraph"><style:paragraph-properties fo:margin-left="0.6cm" fo:margin-right="0cm" fo:text-indent="-0.6cm"/><style:text-properties fo:hyphenate="false"/></style:style><style:style style:name="P5" style:family="paragraph"><style:paragraph-properties fo:margin-left="1.2cm" fo:margin-right="0cm" fo:text-indent="-0.9cm"/><style:text-properties fo:hyphenate="true"/></style:style><style:style style:name="P6" style:family="paragraph"><style:paragraph-properties fo:margin-left="2.4cm" fo:margin-right="0cm" fo:text-indent="-0.8cm"/><style:text-properties fo:hyphenate="true"/></style:style><style:style style:name="P7" style:family="paragraph"><style:paragraph-properties fo:margin-left="3.6cm" fo:margin-right="0cm" fo:text-indent="-0.6cm"/><style:text-properties fo:hyphenate="true"/></style:style><style:style style:name="P8" style:family="paragraph"><style:paragraph-properties fo:margin-left="1.4cm" fo:margin-right="0cm" fo:text-indent="-1.2cm"/><style:text-properties fo:hyphenate="true"/></style:style><text:list-style style:name="L1"><text:list-level-style-bullet text:level="1" text:bullet-char=""><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="2" text:bullet-char=""><style:list-level-properties text:space-before="1cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="3" text:bullet-char=""><style:list-level-properties text:space-before="2cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="4" text:bullet-char=""><style:list-level-properties text:space-before="3cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="5" text:bullet-char=""><style:list-level-properties text:space-before="4cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="6" text:bullet-char=""><style:list-level-properties text:space-before="5cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="7" text:bullet-char=""><style:list-level-properties text:space-before="6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="8" text:bullet-char=""><style:list-level-properties text:space-before="7cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="9" text:bullet-char=""><style:list-level-properties text:space-before="8cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet></text:list-style><text:list-style style:name="L2"><text:list-level-style-bullet text:level="1" text:bullet-char="●"><style:list-level-properties text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="2" text:bullet-char="●"><style:list-level-properties text:space-before="0.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="3" text:bullet-char="●"><style:list-level-properties text:space-before="1.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="4" text:bullet-char="●"><style:list-level-properties text:space-before="1.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="5" text:bullet-char="●"><style:list-level-properties text:space-before="2.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="6" text:bullet-char="●"><style:list-level-properties text:space-before="3cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="7" text:bullet-char="●"><style:list-level-properties text:space-before="3.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="8" text:bullet-char="●"><style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="9" text:bullet-char="●"><style:list-level-properties text:space-before="4.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet></text:list-style><text:list-style style:name="L3"><text:list-level-style-bullet text:level="1" text:bullet-char=""><style:list-level-properties text:space-before="-0.4cm" text:min-label-width="1cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="2" text:bullet-char=""><style:list-level-properties text:space-before="0.2cm" text:min-label-width="1cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="3" text:bullet-char=""><style:list-level-properties text:space-before="0.8cm" text:min-label-width="1cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="4" text:bullet-char=""><style:list-level-properties text:space-before="1.4cm" text:min-label-width="1cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="5" text:bullet-char=""><style:list-level-properties text:space-before="2cm" text:min-label-width="1cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="6" text:bullet-char=""><style:list-level-properties text:space-before="2.6cm" text:min-label-width="1cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="7" text:bullet-char=""><style:list-level-properties text:space-before="3.2cm" text:min-label-width="1cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="8" text:bullet-char=""><style:list-level-properties text:space-before="3.8cm" text:min-label-width="1cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="9" text:bullet-char=""><style:list-level-properties text:space-before="4.4cm" text:min-label-width="1cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet></text:list-style><text:list-style style:name="L4"><text:list-level-style-bullet text:level="1" text:bullet-char="●"><style:list-level-properties text:space-before="0.3cm" text:min-label-width="0.9cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#e6e6e6" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="2" text:bullet-char="–"><style:list-level-properties text:space-before="1.6cm" text:min-label-width="0.8cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#e6e6e6" fo:font-size="75%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="3" text:bullet-char="●"><style:list-level-properties text:space-before="3cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#e6e6e6" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="4" text:bullet-char="–"><style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#e6e6e6" fo:font-size="75%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="5" text:bullet-char="●"><style:list-level-properties text:space-before="5.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#e6e6e6" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="6" text:bullet-char="●"><style:list-level-properties text:space-before="6.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#e6e6e6" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="7" text:bullet-char="●"><style:list-level-properties text:space-before="7.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#e6e6e6" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="8" text:bullet-char="●"><style:list-level-properties text:space-before="9cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#e6e6e6" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="9" text:bullet-char="●"><style:list-level-properties text:space-before="10.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#e6e6e6" fo:font-size="45%"/></text:list-level-style-bullet></text:list-style></office:automatic-styles><office:body><office:presentation><draw:page draw:name="Title" draw:style-name="dp1" draw:master-page-name="lyt-darkblue" presentation:presentation-page-layout-name="AL1T0"><office:forms form:automatic-focus="false" form:apply-design-mode="false"/><draw:frame presentation:style-name="pr1" draw:text-style-name="P2" draw:layer="layout" svg:width="23.912cm" svg:height="3.508cm" svg:x="2.058cm" svg:y="0.784cm" presentation:class="title" presentation:user-transformed="true"><draw:text-box><text:p text:style-name="P1">insert mapcenter here</text:p></draw:text-box></draw:frame><draw:frame presentation:style-name="pr2" draw:text-style-name="P4" draw:layer="layout" svg:width="23.548cm" svg:height="13.231cm" svg:x="3.023cm" svg:y="6.178cm" presentation:class="subtitle" presentation:user-transformed="true"><draw:text-box draw:corner-radius="10.956cm"><text:p text:style-name="P3">insert author here</text:p><text:p text:style-name="P3">insert comment</text:p></draw:text-box></draw:frame><presentation:notes draw:style-name="dp2"><draw:page-thumbnail draw:style-name="gr1" draw:layer="layout" svg:width="13.706cm" svg:height="10.28cm" svg:x="3.647cm" svg:y="2.853cm" draw:page-number="1" presentation:class="page"/><draw:frame presentation:style-name="pr3" draw:text-style-name="P1" draw:layer="layout" svg:width="14.518cm" svg:height="11.411cm" svg:x="3.249cm" svg:y="14.13cm" presentation:class="notes" presentation:placeholder="true"><draw:text-box/></draw:frame></presentation:notes></draw:page><draw:page draw:name="Overview" draw:style-name="dp1" draw:master-page-name="lyt-darkblue" presentation:presentation-page-layout-name="AL2T1"><office:forms form:automatic-focus="false" form:apply-design-mode="false"/><draw:frame presentation:style-name="pr4" draw:text-style-name="P2" draw:layer="layout" svg:width="23.912cm" svg:height="3.508cm" svg:x="2.058cm" svg:y="0.784cm" presentation:class="title"><draw:text-box draw:corner-radius="0.024cm"><text:p text:style-name="P2">insert mainbranch</text:p></draw:text-box></draw:frame><draw:frame presentation:style-name="pr5" draw:text-style-name="P8" draw:layer="layout" svg:width="23.548cm" svg:height="13.231cm" svg:x="3.023cm" svg:y="6.178cm" presentation:class="outline" presentation:user-transformed="true"><draw:text-box draw:corner-radius="0.024cm"><text:list text:style-name="L4"><text:list-item><text:p text:style-name="P5">A branch d1</text:p></text:list-item></text:list><text:list text:style-name="L4"><text:list-item><text:list><text:list-item><text:p text:style-name="P6">sub d2</text:p></text:list-item></text:list></text:list-item></text:list><text:list text:style-name="L4"><text:list-item><text:list><text:list-item><text:list><text:list-item><text:p text:style-name="P7">sub d3</text:p></text:list-item></text:list></text:list-item></text:list></text:list-item></text:list><text:list text:style-name="L4"><text:list-item><text:p text:style-name="P5">B branch d1</text:p></text:list-item></text:list></draw:text-box></draw:frame><presentation:notes draw:style-name="dp2"><draw:page-thumbnail draw:style-name="gr1" draw:layer="layout" svg:width="13.706cm" svg:height="10.28cm" svg:x="3.647cm" svg:y="2.853cm" draw:page-number="2" presentation:class="page"/><draw:frame presentation:style-name="pr3" draw:text-style-name="P1" draw:layer="layout" svg:width="14.518cm" svg:height="11.411cm" svg:x="3.249cm" svg:y="14.13cm" presentation:class="notes" presentation:placeholder="true"><draw:text-box/></draw:frame></presentation:notes></draw:page><draw:page draw:name="Long-term goal" draw:style-name="dp1" draw:master-page-name="lyt-darkblue" presentation:presentation-page-layout-name="AL2T1"><draw:frame presentation:style-name="pr6" draw:text-style-name="P2" draw:layer="layout" svg:width="23.912cm" svg:height="3.508cm" svg:x="2.058cm" svg:y="0.784cm" presentation:class="title"><draw:text-box draw:corner-radius="0.032cm"><text:p text:style-name="P2">Long-term goal</text:p></draw:text-box></draw:frame><draw:frame presentation:style-name="pr5" draw:text-style-name="P8" draw:layer="layout" svg:width="23.548cm" svg:height="13.231cm" svg:x="3.023cm" svg:y="6.178cm" presentation:class="outline" presentation:user-transformed="true"><draw:text-box draw:corner-radius="0.032cm"><text:list text:style-name="L4"><text:list-item><text:p text:style-name="P5">State the desired goal</text:p></text:list-item></text:list><text:list text:style-name="L4"><text:list-item><text:p text:style-name="P5">Define the goal in more detail</text:p></text:list-item></text:list></draw:text-box></draw:frame><presentation:notes draw:style-name="dp2"><draw:page-thumbnail draw:style-name="gr1" draw:layer="layout" svg:width="13.706cm" svg:height="10.28cm" svg:x="3.647cm" svg:y="2.853cm" draw:page-number="3" presentation:class="page"/><draw:frame presentation:style-name="pr3" draw:text-style-name="P1" draw:layer="layout" svg:width="14.518cm" svg:height="11.411cm" svg:x="3.249cm" svg:y="14.13cm" presentation:class="notes" presentation:placeholder="true"><draw:text-box/></draw:frame></presentation:notes></draw:page><presentation:settings presentation:stay-on-top="true"/></office:presentation></office:body></office:document-content>
\ No newline at end of file
diff --git a/exports/template-orange-blue/meta.xml b/exports/template-orange-blue/meta.xml
new file mode 100644 (file)
index 0000000..1e0d669
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<office:document-meta xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0" xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" office:version="1.0"><office:meta><meta:generator>OpenOffice.org/2.0-pre$Unix OpenOffice.org_project/680$Build-8825</meta:generator><meta:creation-date>2006-01-31T20:41:49</meta:creation-date><dc:date>2006-01-31T20:58:41</dc:date><dc:language>en-US</dc:language><meta:editing-cycles>2</meta:editing-cycles><meta:editing-duration>PT17M23S</meta:editing-duration><meta:user-defined meta:name="Info 1"/><meta:user-defined meta:name="Info 2"/><meta:user-defined meta:name="Info 3"/><meta:user-defined meta:name="Info 4"/><meta:document-statistic meta:object-count="22"/></office:meta></office:document-meta>
\ No newline at end of file
diff --git a/exports/template-orange-blue/mimetype b/exports/template-orange-blue/mimetype
new file mode 100644 (file)
index 0000000..9673a33
--- /dev/null
@@ -0,0 +1 @@
+application/vnd.oasis.opendocument.presentation
\ No newline at end of file
diff --git a/exports/template-orange-blue/page-template.xml b/exports/template-orange-blue/page-template.xml
new file mode 100644 (file)
index 0000000..cf0f5d2
--- /dev/null
@@ -0,0 +1,21 @@
+      <draw:page draw:name="Overview" draw:style-name="dp1" draw:master-page-name="lyt-darkblue" presentation:presentation-page-layout-name="AL2T1">
+        <office:forms form:automatic-focus="false" form:apply-design-mode="false"/>
+        <draw:frame presentation:style-name="pr4" draw:text-style-name="P2" draw:layer="layout" svg:width="23.912cm" svg:height="3.508cm" svg:x="2.058cm" svg:y="0.784cm" presentation:class="title">
+          <draw:text-box draw:corner-radius="0.024cm">
+            <text:p text:style-name="P2">
+                       <!-- INSERT PAGE HEADING -->
+            </text:p>
+          </draw:text-box>
+        </draw:frame>
+        <draw:frame presentation:style-name="pr5" draw:text-style-name="P8" draw:layer="layout" svg:width="23.548cm" svg:height="13.231cm" svg:x="3.023cm" svg:y="6.178cm" presentation:class="outline" presentation:user-transformed="true">
+          <draw:text-box draw:corner-radius="0.024cm">
+                 <!-- INSERT LIST -->
+          </draw:text-box>
+        </draw:frame>
+        <presentation:notes draw:style-name="dp2">
+          <draw:page-thumbnail draw:style-name="gr1" draw:layer="layout" svg:width="13.706cm" svg:height="10.28cm" svg:x="3.647cm" svg:y="2.853cm" draw:page-number="2" presentation:class="page"/>
+          <draw:frame presentation:style-name="pr3" draw:text-style-name="P1" draw:layer="layout" svg:width="14.518cm" svg:height="11.411cm" svg:x="3.249cm" svg:y="14.13cm" presentation:class="notes" presentation:placeholder="true">
+            <draw:text-box/>
+          </draw:frame>
+        </presentation:notes>
+      </draw:page>
diff --git a/exports/template-orange-blue/settings.xml b/exports/template-orange-blue/settings.xml
new file mode 100644 (file)
index 0000000..50c74f5
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<office:document-settings xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0" xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" office:version="1.0"><office:settings><config:config-item-set config:name="ooo:view-settings"><config:config-item config:name="VisibleAreaTop" config:type="int">-1538</config:config-item><config:config-item config:name="VisibleAreaLeft" config:type="int">-439</config:config-item><config:config-item config:name="VisibleAreaWidth" config:type="int">28862</config:config-item><config:config-item config:name="VisibleAreaHeight" config:type="int">24073</config:config-item><config:config-item-map-indexed config:name="Views"><config:config-item-map-entry><config:config-item config:name="ViewId" config:type="string">view1</config:config-item><config:config-item config:name="GridIsVisible" config:type="boolean">false</config:config-item><config:config-item config:name="GridIsFront" config:type="boolean">false</config:config-item><config:config-item config:name="IsSnapToGrid" config:type="boolean">true</config:config-item><config:config-item config:name="IsSnapToPageMargins" config:type="boolean">true</config:config-item><config:config-item config:name="IsSnapToSnapLines" config:type="boolean">false</config:config-item><config:config-item config:name="IsSnapToObjectFrame" config:type="boolean">false</config:config-item><config:config-item config:name="IsSnapToObjectPoints" config:type="boolean">false</config:config-item><config:config-item config:name="IsPlusHandlesAlwaysVisible" config:type="boolean">false</config:config-item><config:config-item config:name="IsFrameDragSingles" config:type="boolean">true</config:config-item><config:config-item config:name="EliminatePolyPointLimitAngle" config:type="int">1500</config:config-item><config:config-item config:name="IsEliminatePolyPoints" config:type="boolean">false</config:config-item><config:config-item config:name="VisibleLayers" config:type="base64Binary">//////////////////////////////////////////8=</config:config-item><config:config-item config:name="PrintableLayers" config:type="base64Binary">//////////////////////////////////////////8=</config:config-item><config:config-item config:name="LockedLayers" config:type="base64Binary"/><config:config-item config:name="NoAttribs" config:type="boolean">false</config:config-item><config:config-item config:name="NoColors" config:type="boolean">true</config:config-item><config:config-item config:name="RulerIsVisible" config:type="boolean">false</config:config-item><config:config-item config:name="PageKind" config:type="short">0</config:config-item><config:config-item config:name="SelectedPage" config:type="short">1</config:config-item><config:config-item config:name="IsLayerMode" config:type="boolean">false</config:config-item><config:config-item config:name="IsBigHandles" config:type="boolean">false</config:config-item><config:config-item config:name="IsDoubleClickTextEdit" config:type="boolean">true</config:config-item><config:config-item config:name="IsClickChangeRotation" config:type="boolean">false</config:config-item><config:config-item config:name="SlidesPerRow" config:type="short">0</config:config-item><config:config-item config:name="EditModeStandard" config:type="int">0</config:config-item><config:config-item config:name="EditModeNotes" config:type="int">0</config:config-item><config:config-item config:name="EditModeHandout" config:type="int">1</config:config-item><config:config-item config:name="VisibleAreaTop" config:type="int">-1538</config:config-item><config:config-item config:name="VisibleAreaLeft" config:type="int">-439</config:config-item><config:config-item config:name="VisibleAreaWidth" config:type="int">28863</config:config-item><config:config-item config:name="VisibleAreaHeight" config:type="int">24074</config:config-item><config:config-item config:name="GridCoarseWidth" config:type="int">1270</config:config-item><config:config-item config:name="GridCoarseHeight" config:type="int">1270</config:config-item><config:config-item config:name="GridFineWidth" config:type="int">635</config:config-item><config:config-item config:name="GridFineHeight" config:type="int">635</config:config-item><config:config-item config:name="GridSnapWidth" config:type="int">1000</config:config-item><config:config-item config:name="GridSnapHeight" config:type="int">1000</config:config-item><config:config-item config:name="GridSnapWidthXNumerator" config:type="int">635</config:config-item><config:config-item config:name="GridSnapWidthXDenominator" config:type="int">1</config:config-item><config:config-item config:name="GridSnapWidthYNumerator" config:type="int">635</config:config-item><config:config-item config:name="GridSnapWidthYDenominator" config:type="int">1</config:config-item><config:config-item config:name="IsAngleSnapEnabled" config:type="boolean">false</config:config-item><config:config-item config:name="SnapAngle" config:type="int">1500</config:config-item><config:config-item config:name="ZoomOnPage" config:type="boolean">true</config:config-item></config:config-item-map-entry></config:config-item-map-indexed></config:config-item-set><config:config-item-set config:name="ooo:configuration-settings"><config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item><config:config-item config:name="BitmapTableURL" config:type="string">file:///home/uwe/.ooo-2.0-pre/user/config/standard.sob</config:config-item><config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item><config:config-item config:name="ColorTableURL" config:type="string">file:///home/uwe/.ooo-2.0-pre/user/config/standard.soc</config:config-item><config:config-item config:name="DashTableURL" config:type="string">file:///home/uwe/.ooo-2.0-pre/user/config/standard.sod</config:config-item><config:config-item config:name="DefaultTabStop" config:type="int">2000</config:config-item><config:config-item-map-indexed config:name="ForbiddenCharacters"><config:config-item-map-entry><config:config-item config:name="Language" config:type="string">de</config:config-item><config:config-item config:name="Country" config:type="string">DE</config:config-item><config:config-item config:name="Variant" config:type="string"/><config:config-item config:name="BeginLine" config:type="string"/><config:config-item config:name="EndLine" config:type="string"/></config:config-item-map-entry><config:config-item-map-entry><config:config-item config:name="Language" config:type="string">en</config:config-item><config:config-item config:name="Country" config:type="string">US</config:config-item><config:config-item config:name="Variant" config:type="string"/><config:config-item config:name="BeginLine" config:type="string"/><config:config-item config:name="EndLine" config:type="string"/></config:config-item-map-entry></config:config-item-map-indexed><config:config-item config:name="GradientTableURL" config:type="string">file:///home/uwe/.ooo-2.0-pre/user/config/standard.sog</config:config-item><config:config-item config:name="HatchTableURL" config:type="string">file:///home/uwe/.ooo-2.0-pre/user/config/standard.soh</config:config-item><config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">true</config:config-item><config:config-item config:name="IsPrintBooklet" config:type="boolean">false</config:config-item><config:config-item config:name="IsPrintBookletBack" config:type="boolean">true</config:config-item><config:config-item config:name="IsPrintBookletFront" config:type="boolean">true</config:config-item><config:config-item config:name="IsPrintDate" config:type="boolean">false</config:config-item><config:config-item config:name="IsPrintDrawing" config:type="boolean">true</config:config-item><config:config-item config:name="IsPrintFitPage" config:type="boolean">false</config:config-item><config:config-item config:name="IsPrintHandout" config:type="boolean">false</config:config-item><config:config-item config:name="IsPrintHiddenPages" config:type="boolean">true</config:config-item><config:config-item config:name="IsPrintNotes" config:type="boolean">false</config:config-item><config:config-item config:name="IsPrintOutline" config:type="boolean">false</config:config-item><config:config-item config:name="IsPrintPageName" config:type="boolean">false</config:config-item><config:config-item config:name="IsPrintTilePage" config:type="boolean">false</config:config-item><config:config-item config:name="IsPrintTime" config:type="boolean">false</config:config-item><config:config-item config:name="LineEndTableURL" config:type="string">file:///home/uwe/.ooo-2.0-pre/user/config/standard.soe</config:config-item><config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item><config:config-item config:name="PageNumberFormat" config:type="int">4</config:config-item><config:config-item config:name="ParagraphSummation" config:type="boolean">false</config:config-item><config:config-item config:name="PrintQuality" config:type="int">0</config:config-item><config:config-item config:name="PrinterIndependentLayout" config:type="string">low-resolution</config:config-item><config:config-item config:name="PrinterName" config:type="string">Generic Printer</config:config-item><config:config-item config:name="PrinterSetup" config:type="base64Binary">YgH+/0dlbmVyaWMgUHJpbnRlcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU0dFTlBSVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAMAqAAAAAAA//8FAFZUAAAkbQAASm9iRGF0YSAxCnByaW50ZXI9R2VuZXJpYyBQcmludGVyCm9yaWVudGF0aW9uPVBvcnRyYWl0CmNvcGllcz0xCnNjYWxlPTEwMAptYXJnaW5kYWp1c3RtZW50PTAsMCwwLDAKY29sb3JkZXB0aD0yNApwc2xldmVsPTAKY29sb3JkZXZpY2U9MApQUERDb250ZXhEYXRhClBhZ2VTaXplOkxldHRlcgAA</config:config-item><config:config-item config:name="UpdateFromTemplate" config:type="boolean">false</config:config-item></config:config-item-set></office:settings></office:document-settings>
\ No newline at end of file
diff --git a/exports/template-orange-blue/styles.xml b/exports/template-orange-blue/styles.xml
new file mode 100644 (file)
index 0000000..761290c
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<office:document-styles xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0" xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" office:version="1.0"><office:styles><draw:gradient draw:name="Gradient_20_1" draw:display-name="Gradient 1" draw:style="linear" draw:start-color="#000000" draw:end-color="#ffffff" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/><draw:gradient draw:name="Gradient_20_26" draw:display-name="Gradient 26" draw:style="linear" draw:start-color="#000000" draw:end-color="#ffffff" draw:start-intensity="0%" draw:end-intensity="0%" draw:angle="0" draw:border="0%"/><draw:fill-image draw:name="Bitmape_20_1" draw:display-name="Bitmape 1" xlink:href="Pictures/1000000000000040000000400142E835.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/><draw:marker draw:name="Linienende_20_1" draw:display-name="Linienende 1" svg:viewBox="0 0 20 30" svg:d="m10 0-10 30h20z"/><draw:marker draw:name="Linienende_20_2" draw:display-name="Linienende 2" svg:viewBox="0 0 200 400" svg:d="m100 0 100 400h-200z"/><draw:marker draw:name="Linienende_20_3" draw:display-name="Linienende 3" svg:viewBox="0 0 200 400" svg:d="m100 0 100 400h-200z"/><draw:stroke-dash draw:name="Dash_20_1" draw:display-name="Dash 1" draw:style="rect" draw:dots1="1" draw:dots1-length="0.02cm" draw:dots2="1" draw:dots2-length="0.02cm" draw:distance="0.02cm"/><style:default-style style:family="graphic"><style:paragraph-properties style:text-autospace="ideograph-alpha" style:punctuation-wrap="simple" style:line-break="strict" style:writing-mode="lr-tb" style:font-independent-line-spacing="false"><style:tab-stops/></style:paragraph-properties><style:text-properties fo:color="#000000" fo:font-family="Thorndale" style:font-family-generic="roman" style:font-pitch="variable" fo:font-size="24pt" fo:language="en" fo:country="US" style:font-family-asian="&apos;HG Mincho Light J&apos;, &apos;MS Mincho&apos;, &apos;HG Mincho J&apos;, &apos;HG Mincho L&apos;, &apos;HG Mincho&apos;, Mincho, &apos;MS PMincho&apos;, &apos;MS Gothic&apos;, &apos;HG Gothic J&apos;, &apos;HG Gothic B&apos;, &apos;HG Gothic&apos;, Gothic, &apos;MS PGothic&apos;, &apos;Andale Sans UI&apos;, &apos;Arial Unicode MS&apos;, &apos;Lucida Sans Unicode&apos;, Tahoma" style:font-pitch-asian="variable" style:font-size-asian="24pt" style:language-asian="none" style:country-asian="none" style:font-family-complex="&apos;Arial Unicode MS&apos;" style:font-pitch-complex="variable" style:font-size-complex="24pt" style:language-complex="none" style:country-complex="none"/></style:default-style><style:style style:name="standard" style:family="graphic"><style:graphic-properties draw:stroke="solid" draw:stroke-dash="Dash_20_1" svg:stroke-width="0cm" svg:stroke-color="#000000" draw:marker-start-width="0.3cm" draw:marker-start-center="false" draw:marker-end-width="0.3cm" draw:marker-end-center="false" draw:fill="solid" draw:fill-color="#00b8ff" draw:fill-gradient-name="Gradient_20_26" draw:fill-image-name="Bitmape_20_1" draw:shadow="hidden" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:shadow-color="#808080"><text:list-style><text:list-level-style-bullet text:level="1" text:bullet-char="●"><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="2" text:bullet-char="●"><style:list-level-properties text:space-before="0.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="3" text:bullet-char="●"><style:list-level-properties text:space-before="1.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="4" text:bullet-char="●"><style:list-level-properties text:space-before="1.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="5" text:bullet-char="●"><style:list-level-properties text:space-before="2.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="6" text:bullet-char="●"><style:list-level-properties text:space-before="3cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="7" text:bullet-char="●"><style:list-level-properties text:space-before="3.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="8" text:bullet-char="●"><style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="9" text:bullet-char="●"><style:list-level-properties text:space-before="4.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="10" text:bullet-char="●"><style:list-level-properties text:space-before="5.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet></text:list-style></style:graphic-properties><style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:line-height="100%" fo:text-align="start" fo:text-indent="0cm"/><style:text-properties fo:color="#ffffff" style:text-outline="false" style:text-line-through-style="none" fo:font-family="Albany" style:font-style-name="Standard" style:font-family-generic="swiss" style:font-pitch="variable" fo:font-size="24pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" fo:hyphenate="true"/></style:style><style:style style:name="objectwitharrow" style:family="graphic" style:parent-style-name="standard"><style:graphic-properties draw:stroke="solid" svg:stroke-width="0.15cm" svg:stroke-color="#000000" draw:marker-start="Linienende_20_1" draw:marker-start-width="0.7cm" draw:marker-start-center="true" draw:marker-end-width="0.3cm"><text:list-style><text:list-level-style-bullet text:level="1" text:bullet-char="●"><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="2" text:bullet-char="●"><style:list-level-properties text:space-before="0.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="3" text:bullet-char="●"><style:list-level-properties text:space-before="1.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="4" text:bullet-char="●"><style:list-level-properties text:space-before="1.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="5" text:bullet-char="●"><style:list-level-properties text:space-before="2.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="6" text:bullet-char="●"><style:list-level-properties text:space-before="3cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="7" text:bullet-char="●"><style:list-level-properties text:space-before="3.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="8" text:bullet-char="●"><style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="9" text:bullet-char="●"><style:list-level-properties text:space-before="4.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="10" text:bullet-char="●"><style:list-level-properties text:space-before="5.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet></text:list-style></style:graphic-properties></style:style><style:style style:name="objectwithshadow" style:family="graphic" style:parent-style-name="standard"><style:graphic-properties draw:shadow="visible" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:shadow-color="#808080"><text:list-style><text:list-level-style-bullet text:level="1" text:bullet-char="●"><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="2" text:bullet-char="●"><style:list-level-properties text:space-before="0.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="3" text:bullet-char="●"><style:list-level-properties text:space-before="1.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="4" text:bullet-char="●"><style:list-level-properties text:space-before="1.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="5" text:bullet-char="●"><style:list-level-properties text:space-before="2.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="6" text:bullet-char="●"><style:list-level-properties text:space-before="3cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="7" text:bullet-char="●"><style:list-level-properties text:space-before="3.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="8" text:bullet-char="●"><style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="9" text:bullet-char="●"><style:list-level-properties text:space-before="4.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="10" text:bullet-char="●"><style:list-level-properties text:space-before="5.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet></text:list-style></style:graphic-properties></style:style><style:style style:name="objectwithoutfill" style:family="graphic" style:parent-style-name="standard"><style:graphic-properties draw:fill="none"><text:list-style><text:list-level-style-bullet text:level="1" text:bullet-char="●"><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="2" text:bullet-char="●"><style:list-level-properties text:space-before="0.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="3" text:bullet-char="●"><style:list-level-properties text:space-before="1.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="4" text:bullet-char="●"><style:list-level-properties text:space-before="1.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="5" text:bullet-char="●"><style:list-level-properties text:space-before="2.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="6" text:bullet-char="●"><style:list-level-properties text:space-before="3cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="7" text:bullet-char="●"><style:list-level-properties text:space-before="3.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="8" text:bullet-char="●"><style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="9" text:bullet-char="●"><style:list-level-properties text:space-before="4.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="10" text:bullet-char="●"><style:list-level-properties text:space-before="5.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet></text:list-style></style:graphic-properties></style:style><style:style style:name="text" style:family="graphic" style:parent-style-name="standard"><style:graphic-properties draw:stroke="none" draw:fill="none"><text:list-style><text:list-level-style-bullet text:level="1" text:bullet-char="●"><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="2" text:bullet-char="●"><style:list-level-properties text:space-before="0.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="3" text:bullet-char="●"><style:list-level-properties text:space-before="1.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="4" text:bullet-char="●"><style:list-level-properties text:space-before="1.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="5" text:bullet-char="●"><style:list-level-properties text:space-before="2.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="6" text:bullet-char="●"><style:list-level-properties text:space-before="3cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="7" text:bullet-char="●"><style:list-level-properties text:space-before="3.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="8" text:bullet-char="●"><style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="9" text:bullet-char="●"><style:list-level-properties text:space-before="4.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="10" text:bullet-char="●"><style:list-level-properties text:space-before="5.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet></text:list-style></style:graphic-properties></style:style><style:style style:name="textbody" style:family="graphic" style:parent-style-name="standard"><style:graphic-properties draw:stroke="none" draw:fill="none"><text:list-style><text:list-level-style-bullet text:level="1" text:bullet-char="●"><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="2" text:bullet-char="●"><style:list-level-properties text:space-before="0.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="3" text:bullet-char="●"><style:list-level-properties text:space-before="1.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="4" text:bullet-char="●"><style:list-level-properties text:space-before="1.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="5" text:bullet-char="●"><style:list-level-properties text:space-before="2.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="6" text:bullet-char="●"><style:list-level-properties text:space-before="3cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="7" text:bullet-char="●"><style:list-level-properties text:space-before="3.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="8" text:bullet-char="●"><style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="9" text:bullet-char="●"><style:list-level-properties text:space-before="4.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="10" text:bullet-char="●"><style:list-level-properties text:space-before="5.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet></text:list-style></style:graphic-properties><style:text-properties fo:font-size="16pt"/></style:style><style:style style:name="textbodyjustfied" style:family="graphic" style:parent-style-name="standard"><style:graphic-properties draw:stroke="none" draw:fill="none"><text:list-style><text:list-level-style-bullet text:level="1" text:bullet-char="●"><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="2" text:bullet-char="●"><style:list-level-properties text:space-before="0.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="3" text:bullet-char="●"><style:list-level-properties text:space-before="1.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="4" text:bullet-char="●"><style:list-level-properties text:space-before="1.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="5" text:bullet-char="●"><style:list-level-properties text:space-before="2.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="6" text:bullet-char="●"><style:list-level-properties text:space-before="3cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="7" text:bullet-char="●"><style:list-level-properties text:space-before="3.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="8" text:bullet-char="●"><style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="9" text:bullet-char="●"><style:list-level-properties text:space-before="4.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="10" text:bullet-char="●"><style:list-level-properties text:space-before="5.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet></text:list-style></style:graphic-properties><style:paragraph-properties fo:text-align="justify"/></style:style><style:style style:name="textbodyindent" style:family="graphic" style:parent-style-name="standard"><style:graphic-properties draw:stroke="none" draw:fill="none"><text:list-style><text:list-level-style-bullet text:level="1" text:bullet-char="●"><style:list-level-properties text:space-before="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="2" text:bullet-char="●"><style:list-level-properties text:space-before="0.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="3" text:bullet-char="●"><style:list-level-properties text:space-before="1.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="4" text:bullet-char="●"><style:list-level-properties text:space-before="1.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="5" text:bullet-char="●"><style:list-level-properties text:space-before="2.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="6" text:bullet-char="●"><style:list-level-properties text:space-before="3cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="7" text:bullet-char="●"><style:list-level-properties text:space-before="3.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="8" text:bullet-char="●"><style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="9" text:bullet-char="●"><style:list-level-properties text:space-before="4.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="10" text:bullet-char="●"><style:list-level-properties text:space-before="5.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet></text:list-style></style:graphic-properties><style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="0.6cm"/></style:style><style:style style:name="title" style:family="graphic" style:parent-style-name="standard"><style:graphic-properties draw:stroke="none" draw:fill="none"><text:list-style><text:list-level-style-bullet text:level="1" text:bullet-char="●"><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="2" text:bullet-char="●"><style:list-level-properties text:space-before="0.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="3" text:bullet-char="●"><style:list-level-properties text:space-before="1.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="4" text:bullet-char="●"><style:list-level-properties text:space-before="1.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="5" text:bullet-char="●"><style:list-level-properties text:space-before="2.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="6" text:bullet-char="●"><style:list-level-properties text:space-before="3cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="7" text:bullet-char="●"><style:list-level-properties text:space-before="3.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="8" text:bullet-char="●"><style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="9" text:bullet-char="●"><style:list-level-properties text:space-before="4.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="10" text:bullet-char="●"><style:list-level-properties text:space-before="5.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet></text:list-style></style:graphic-properties><style:text-properties fo:font-size="44pt"/></style:style><style:style style:name="title1" style:family="graphic" style:parent-style-name="standard"><style:graphic-properties draw:stroke="none" draw:fill="solid" draw:fill-color="#008080" draw:shadow="visible" draw:shadow-offset-x="0.2cm" draw:shadow-offset-y="0.2cm" draw:shadow-color="#808080"><text:list-style><text:list-level-style-bullet text:level="1" text:bullet-char="●"><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="2" text:bullet-char="●"><style:list-level-properties text:space-before="0.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="3" text:bullet-char="●"><style:list-level-properties text:space-before="1.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="4" text:bullet-char="●"><style:list-level-properties text:space-before="1.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="5" text:bullet-char="●"><style:list-level-properties text:space-before="2.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="6" text:bullet-char="●"><style:list-level-properties text:space-before="3cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="7" text:bullet-char="●"><style:list-level-properties text:space-before="3.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="8" text:bullet-char="●"><style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="9" text:bullet-char="●"><style:list-level-properties text:space-before="4.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="10" text:bullet-char="●"><style:list-level-properties text:space-before="5.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet></text:list-style></style:graphic-properties><style:paragraph-properties fo:text-align="center"/><style:text-properties fo:font-size="24pt"/></style:style><style:style style:name="title2" style:family="graphic" style:parent-style-name="standard"><style:graphic-properties svg:stroke-width="0.05cm" draw:fill-color="#ffcc99" draw:shadow="visible" draw:shadow-offset-x="0.2cm" draw:shadow-offset-y="0.2cm" draw:shadow-color="#808080"><text:list-style><text:list-level-style-bullet text:level="1" text:bullet-char="●"><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="2" text:bullet-char="●"><style:list-level-properties text:space-before="0.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="3" text:bullet-char="●"><style:list-level-properties text:space-before="1.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="4" text:bullet-char="●"><style:list-level-properties text:space-before="1.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="5" text:bullet-char="●"><style:list-level-properties text:space-before="2.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="6" text:bullet-char="●"><style:list-level-properties text:space-before="3cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="7" text:bullet-char="●"><style:list-level-properties text:space-before="3.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="8" text:bullet-char="●"><style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="9" text:bullet-char="●"><style:list-level-properties text:space-before="4.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="10" text:bullet-char="●"><style:list-level-properties text:space-before="5.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet></text:list-style></style:graphic-properties><style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-align="center" fo:text-indent="0cm"/><style:text-properties fo:font-size="36pt"/></style:style><style:style style:name="headline" style:family="graphic" style:parent-style-name="standard"><style:graphic-properties draw:stroke="none" draw:fill="none"><text:list-style><text:list-level-style-bullet text:level="1" text:bullet-char="●"><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="2" text:bullet-char="●"><style:list-level-properties text:space-before="0.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="3" text:bullet-char="●"><style:list-level-properties text:space-before="1.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="4" text:bullet-char="●"><style:list-level-properties text:space-before="1.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="5" text:bullet-char="●"><style:list-level-properties text:space-before="2.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="6" text:bullet-char="●"><style:list-level-properties text:space-before="3cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="7" text:bullet-char="●"><style:list-level-properties text:space-before="3.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="8" text:bullet-char="●"><style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="9" text:bullet-char="●"><style:list-level-properties text:space-before="4.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="10" text:bullet-char="●"><style:list-level-properties text:space-before="5.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet></text:list-style></style:graphic-properties><style:text-properties fo:font-size="24pt"/></style:style><style:style style:name="headline1" style:family="graphic" style:parent-style-name="standard"><style:graphic-properties draw:stroke="none" draw:fill="none"><text:list-style><text:list-level-style-bullet text:level="1" text:bullet-char="●"><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="2" text:bullet-char="●"><style:list-level-properties text:space-before="0.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="3" text:bullet-char="●"><style:list-level-properties text:space-before="1.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="4" text:bullet-char="●"><style:list-level-properties text:space-before="1.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="5" text:bullet-char="●"><style:list-level-properties text:space-before="2.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="6" text:bullet-char="●"><style:list-level-properties text:space-before="3cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="7" text:bullet-char="●"><style:list-level-properties text:space-before="3.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="8" text:bullet-char="●"><style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="9" text:bullet-char="●"><style:list-level-properties text:space-before="4.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="10" text:bullet-char="●"><style:list-level-properties text:space-before="5.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet></text:list-style></style:graphic-properties><style:text-properties fo:font-size="18pt" fo:font-weight="bold"/></style:style><style:style style:name="headline2" style:family="graphic" style:parent-style-name="standard"><style:graphic-properties draw:stroke="none" draw:fill="none"><text:list-style><text:list-level-style-bullet text:level="1" text:bullet-char="●"><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="2" text:bullet-char="●"><style:list-level-properties text:space-before="0.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="3" text:bullet-char="●"><style:list-level-properties text:space-before="1.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="4" text:bullet-char="●"><style:list-level-properties text:space-before="1.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="5" text:bullet-char="●"><style:list-level-properties text:space-before="2.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="6" text:bullet-char="●"><style:list-level-properties text:space-before="3cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="7" text:bullet-char="●"><style:list-level-properties text:space-before="3.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="8" text:bullet-char="●"><style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="9" text:bullet-char="●"><style:list-level-properties text:space-before="4.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="10" text:bullet-char="●"><style:list-level-properties text:space-before="5.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet></text:list-style></style:graphic-properties><style:text-properties fo:font-size="14pt" fo:font-style="italic" fo:font-weight="bold"/></style:style><style:style style:name="measure" style:family="graphic" style:parent-style-name="standard"><style:graphic-properties draw:stroke="solid" draw:marker-start="Linienende_20_2" draw:marker-start-width="0.2cm" draw:marker-end="Linienende_20_3" draw:marker-end-width="0.2cm" draw:fill="none"><text:list-style><text:list-level-style-bullet text:level="1" text:bullet-char="●"><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="2" text:bullet-char="●"><style:list-level-properties text:space-before="0.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="3" text:bullet-char="●"><style:list-level-properties text:space-before="1.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="4" text:bullet-char="●"><style:list-level-properties text:space-before="1.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="5" text:bullet-char="●"><style:list-level-properties text:space-before="2.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="6" text:bullet-char="●"><style:list-level-properties text:space-before="3cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="7" text:bullet-char="●"><style:list-level-properties text:space-before="3.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="8" text:bullet-char="●"><style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="9" text:bullet-char="●"><style:list-level-properties text:space-before="4.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="10" text:bullet-char="●"><style:list-level-properties text:space-before="5.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet></text:list-style></style:graphic-properties><style:text-properties fo:font-size="12pt"/></style:style><style:style style:name="lyt-darkblue-title" style:family="presentation"><style:graphic-properties draw:stroke="none" draw:fill="none" draw:textarea-vertical-align="middle"><text:list-style><text:list-level-style-bullet text:level="1" text:bullet-char=""><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="2" text:bullet-char=""><style:list-level-properties text:space-before="1cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="3" text:bullet-char=""><style:list-level-properties text:space-before="2cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="4" text:bullet-char=""><style:list-level-properties text:space-before="3cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="5" text:bullet-char=""><style:list-level-properties text:space-before="4cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="6" text:bullet-char=""><style:list-level-properties text:space-before="5cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="7" text:bullet-char=""><style:list-level-properties text:space-before="6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="8" text:bullet-char=""><style:list-level-properties text:space-before="7cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="9" text:bullet-char=""><style:list-level-properties text:space-before="8cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet></text:list-style></style:graphic-properties><style:paragraph-properties fo:text-align="start" text:enable-numbering="false"/><style:text-properties fo:color="#ff9966" style:text-outline="false" style:text-line-through-style="none" fo:font-family="Albany" style:font-style-name="Fett Kursiv" style:font-family-generic="swiss" style:font-pitch="variable" fo:font-size="40pt" fo:font-style="italic" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="bold"/></style:style><style:style style:name="lyt-darkblue-subtitle" style:family="presentation"><style:graphic-properties draw:stroke="none" draw:fill="none" draw:textarea-vertical-align="middle"><text:list-style><text:list-level-style-bullet text:level="1" text:bullet-char="●"><style:list-level-properties text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="2" text:bullet-char="●"><style:list-level-properties text:space-before="0.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="3" text:bullet-char="●"><style:list-level-properties text:space-before="1.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="4" text:bullet-char="●"><style:list-level-properties text:space-before="1.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="5" text:bullet-char="●"><style:list-level-properties text:space-before="2.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="6" text:bullet-char="●"><style:list-level-properties text:space-before="3cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="7" text:bullet-char="●"><style:list-level-properties text:space-before="3.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="8" text:bullet-char="●"><style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="9" text:bullet-char="●"><style:list-level-properties text:space-before="4.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#000000" fo:font-size="45%"/></text:list-level-style-bullet></text:list-style></style:graphic-properties><style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-align="center" text:enable-numbering="false" fo:text-indent="-0.6cm"/><style:text-properties fo:color="#cccccc" style:text-outline="false" style:text-line-through-style="none" fo:font-family="Thorndale" style:font-family-generic="roman" style:font-pitch="variable" fo:font-size="32pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal"/></style:style><style:style style:name="lyt-darkblue-background" style:family="presentation"><style:graphic-properties draw:stroke="none" draw:fill="solid" draw:fill-color="#003366" draw:fill-gradient-name="Gradient_20_1" draw:fill-image-width="1cm" draw:fill-image-height="1cm"/></style:style><style:style style:name="lyt-darkblue-backgroundobjects" style:family="presentation"><style:graphic-properties draw:shadow="hidden" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:shadow-color="#808080"/><style:text-properties fo:font-family="Thorndale" style:font-family-generic="roman" style:font-pitch="variable"/></style:style><style:style style:name="lyt-darkblue-notes" style:family="presentation"><style:graphic-properties draw:stroke="none" draw:fill="none"/><style:paragraph-properties text:enable-numbering="false"/><style:text-properties fo:color="#000000" style:text-outline="false" style:text-line-through-style="none" fo:font-family="Thorndale" style:font-family-generic="roman" style:font-pitch="variable" fo:font-size="24pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal"/></style:style><style:style style:name="lyt-darkblue-outline1" style:family="presentation"><style:graphic-properties draw:stroke="none" draw:fill="none"><text:list-style><text:list-level-style-bullet text:level="1" text:bullet-char="●"><style:list-level-properties text:space-before="0.3cm" text:min-label-width="0.9cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#e6e6e6" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="2" text:bullet-char="–"><style:list-level-properties text:space-before="1.6cm" text:min-label-width="0.8cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#e6e6e6" fo:font-size="75%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="3" text:bullet-char="●"><style:list-level-properties text:space-before="3cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#e6e6e6" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="4" text:bullet-char="–"><style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#e6e6e6" fo:font-size="75%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="5" text:bullet-char="●"><style:list-level-properties text:space-before="5.4cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#e6e6e6" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="6" text:bullet-char="●"><style:list-level-properties text:space-before="6.6cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#e6e6e6" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="7" text:bullet-char="●"><style:list-level-properties text:space-before="7.8cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#e6e6e6" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="8" text:bullet-char="●"><style:list-level-properties text:space-before="9cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#e6e6e6" fo:font-size="45%"/></text:list-level-style-bullet><text:list-level-style-bullet text:level="9" text:bullet-char="●"><style:list-level-properties text:space-before="10.2cm" text:min-label-width="0.6cm"/><style:text-properties fo:font-family="StarSymbol" style:font-charset="x-symbol" fo:color="#e6e6e6" fo:font-size="45%"/></text:list-level-style-bullet></text:list-style></style:graphic-properties><style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-align="start" text:enable-numbering="true" fo:text-indent="-0.9cm"/><style:text-properties fo:color="#e6e6e6" style:text-outline="false" style:text-line-through-style="none" fo:font-family="Thorndale" style:font-family-generic="roman" style:font-pitch="variable" fo:font-size="32pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal"/></style:style><style:style style:name="lyt-darkblue-outline2" style:family="presentation" style:parent-style-name="lyt-darkblue-outline1"><style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="-0.8cm"/><style:text-properties fo:font-size="28pt"/></style:style><style:style style:name="lyt-darkblue-outline3" style:family="presentation" style:parent-style-name="lyt-darkblue-outline2"><style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="-0.6cm"/><style:text-properties fo:font-size="24pt"/></style:style><style:style style:name="lyt-darkblue-outline4" style:family="presentation" style:parent-style-name="lyt-darkblue-outline3"><style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="-0.6cm"/><style:text-properties fo:font-size="20pt"/></style:style><style:style style:name="lyt-darkblue-outline5" style:family="presentation" style:parent-style-name="lyt-darkblue-outline4"><style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="-0.6cm"/><style:text-properties fo:font-size="20pt"/></style:style><style:style style:name="lyt-darkblue-outline6" style:family="presentation" style:parent-style-name="lyt-darkblue-outline5"><style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="-0.6cm"/><style:text-properties fo:font-size="20pt"/></style:style><style:style style:name="lyt-darkblue-outline7" style:family="presentation" style:parent-style-name="lyt-darkblue-outline6"><style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="-0.6cm"/><style:text-properties fo:font-size="20pt"/></style:style><style:style style:name="lyt-darkblue-outline8" style:family="presentation" style:parent-style-name="lyt-darkblue-outline7"><style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="-0.6cm"/><style:text-properties fo:font-size="20pt"/></style:style><style:style style:name="lyt-darkblue-outline9" style:family="presentation" style:parent-style-name="lyt-darkblue-outline8"><style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="-0.6cm"/><style:text-properties fo:font-size="20pt"/></style:style><style:presentation-page-layout style:name="AL0T25"><presentation:placeholder presentation:object="handout" svg:x="2.058cm" svg:y="1.743cm" svg:width="10.556cm" svg:height="0.703cm"/><presentation:placeholder presentation:object="handout" svg:x="15.414cm" svg:y="1.743cm" svg:width="10.556cm" svg:height="0.703cm"/><presentation:placeholder presentation:object="handout" svg:x="2.058cm" svg:y="4.546cm" svg:width="10.556cm" svg:height="0.703cm"/><presentation:placeholder presentation:object="handout" svg:x="15.414cm" svg:y="4.546cm" svg:width="10.556cm" svg:height="0.703cm"/></style:presentation-page-layout><style:presentation-page-layout style:name="AL1T0"><presentation:placeholder presentation:object="title" svg:x="2.058cm" svg:y="1.743cm" svg:width="23.912cm" svg:height="3.507cm"/><presentation:placeholder presentation:object="subtitle" svg:x="2.058cm" svg:y="5.838cm" svg:width="23.912cm" svg:height="13.23cm"/></style:presentation-page-layout><style:presentation-page-layout style:name="AL2T1"><presentation:placeholder presentation:object="title" svg:x="2.058cm" svg:y="1.743cm" svg:width="23.912cm" svg:height="3.507cm"/><presentation:placeholder presentation:object="outline" svg:x="2.058cm" svg:y="5.838cm" svg:width="23.912cm" svg:height="13.23cm"/></style:presentation-page-layout></office:styles><office:automatic-styles><style:page-layout style:name="PM0"><style:page-layout-properties fo:margin-top="0cm" fo:margin-bottom="0cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:page-width="29.7cm" fo:page-height="21cm" style:print-orientation="landscape"/></style:page-layout><style:page-layout style:name="PM1"><style:page-layout-properties fo:margin-top="0cm" fo:margin-bottom="0cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:page-width="28cm" fo:page-height="21cm" style:print-orientation="landscape"/></style:page-layout><style:page-layout style:name="PM2"><style:page-layout-properties fo:margin-top="0cm" fo:margin-bottom="0cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:page-width="21cm" fo:page-height="29.7cm" style:print-orientation="portrait"/></style:page-layout><style:style style:name="dp1" style:family="drawing-page"><style:drawing-page-properties draw:background-size="border" draw:fill="solid" draw:fill-color="#003366" draw:fill-gradient-name="Gradient_20_1" draw:fill-image-width="1cm" draw:fill-image-height="1cm"/></style:style><style:style style:name="dp2" style:family="drawing-page"><style:drawing-page-properties presentation:display-header="true" presentation:display-footer="true" presentation:display-page-number="false" presentation:display-date-time="true"/></style:style><style:style style:name="gr1" style:family="graphic" style:parent-style-name="standard"><style:graphic-properties draw:stroke="none" draw:fill-color="#ff9966" draw:fill-image-width="1cm" draw:fill-image-height="1cm" draw:textarea-horizontal-align="center" draw:textarea-vertical-align="middle"/></style:style><style:style style:name="P1" style:family="paragraph"><style:paragraph-properties fo:text-align="center"/></style:style></office:automatic-styles><office:master-styles><draw:layer-set><draw:layer draw:name="layout"/><draw:layer draw:name="background"/><draw:layer draw:name="backgroundobjects"/><draw:layer draw:name="controls"/><draw:layer draw:name="measurelines"/></draw:layer-set><style:handout-master presentation:presentation-page-layout-name="AL0T25" style:page-layout-name="PM0" draw:style-name="dp2"><draw:page-thumbnail draw:layer="backgroundobjects" svg:width="8.819cm" svg:height="6.614cm" svg:x="3.757cm" svg:y="2.94cm" draw:page-number="1"/><draw:page-thumbnail draw:layer="backgroundobjects" svg:width="8.819cm" svg:height="6.614cm" svg:x="17.122cm" svg:y="2.94cm" draw:page-number="2"/><draw:page-thumbnail draw:layer="backgroundobjects" svg:width="8.819cm" svg:height="6.614cm" svg:x="3.757cm" svg:y="11.445cm" draw:page-number="3"/><draw:page-thumbnail draw:layer="backgroundobjects" svg:width="8.819cm" svg:height="6.614cm" svg:x="17.122cm" svg:y="11.445cm"/></style:handout-master><style:master-page style:name="lyt-darkblue" style:page-layout-name="PM1" draw:style-name="dp1"><draw:frame presentation:style-name="lyt-darkblue-title" draw:layer="backgroundobjects" svg:width="23.912cm" svg:height="3.507cm" svg:x="2.058cm" svg:y="0.784cm" presentation:class="title" presentation:placeholder="true"><draw:text-box/></draw:frame><draw:frame presentation:style-name="lyt-darkblue-outline1" draw:layer="backgroundobjects" svg:width="24.369cm" svg:height="13.715cm" svg:x="2.058cm" svg:y="5.453cm" presentation:class="outline" presentation:placeholder="true"><draw:text-box draw:corner-radius="0.001cm"/></draw:frame><draw:rect draw:style-name="gr1" draw:text-style-name="P1" draw:layer="backgroundobjects" svg:width="25.987cm" svg:height="0.269cm" svg:x="2.012cm" svg:y="19.658cm"><text:p/></draw:rect><draw:rect draw:style-name="gr1" draw:text-style-name="P1" draw:layer="backgroundobjects" svg:width="22.479cm" svg:height="0.269cm" svg:x="5.52cm" svg:y="20.248cm"><text:p/></draw:rect><presentation:notes style:page-layout-name="PM2"><draw:page-thumbnail presentation:style-name="lyt-darkblue-title" draw:layer="backgroundobjects" svg:width="13.706cm" svg:height="10.28cm" svg:x="3.647cm" svg:y="2.853cm" presentation:class="page"/><draw:frame presentation:style-name="lyt-darkblue-notes" draw:layer="backgroundobjects" svg:width="14.518cm" svg:height="11.41cm" svg:x="3.249cm" svg:y="14.13cm" presentation:class="notes" presentation:placeholder="true"><draw:text-box/></draw:frame></presentation:notes></style:master-page></office:master-styles></office:document-styles>
\ No newline at end of file
diff --git a/exportxhtmldialog.cpp b/exportxhtmldialog.cpp
new file mode 100644 (file)
index 0000000..faa06bc
--- /dev/null
@@ -0,0 +1,416 @@
+#include "exportxhtmldialog.h"
+
+#include <QFileDialog>
+#include <QMessageBox>
+#include <QTextStream>
+
+#include "options.h"
+#include "settings.h"
+
+
+extern Options options;
+extern QDir vymBaseDir;
+extern Settings settings;
+extern bool debug;
+
+ExportXHTMLDialog::ExportXHTMLDialog(QWidget* parent) : QDialog(parent)
+{
+    ui.setupUi(this);
+
+       filepath="";
+       settingsChanged=false;
+       scriptProc=new Process;
+
+    // signals and slots connections
+    connect(ui.browseExportDirButton, SIGNAL(pressed()), this, SLOT(browseDirectoryPressed()));
+    connect(ui.outputButton, SIGNAL(toggled(bool)), this, SLOT(outputButtonPressed(bool)));
+    connect(ui.browseXSLButton, SIGNAL(pressed()), this, SLOT(browseXSLPressed()));
+    connect(ui.browseCSSButton, SIGNAL(pressed()), this, SLOT(browseCSSPressed()));
+    connect(ui.imageButton, SIGNAL(toggled(bool)), this, SLOT(imageButtonPressed(bool)));
+    connect(ui.textColorButton, SIGNAL(toggled(bool)), this, SLOT(textcolorButtonPressed(bool)));
+    connect(ui.lineEditDir, SIGNAL(textChanged(const QString&)), this, SLOT(dirChanged()));
+    connect(ui.lineEditCSS, SIGNAL(textChanged(const QString&)), this, SLOT(cssChanged()));
+    connect(ui.lineEditXSL, SIGNAL(textChanged(const QString&)), this, SLOT(xslChanged()));
+    connect(ui.warningsButton, SIGNAL(toggled(bool)), this, SLOT(warningsButtonPressed(bool)));
+    connect(ui.saveSettingsInMapButton, SIGNAL(toggled(bool)), this, SLOT(saveSettingsInMapButtonPressed(bool)));
+    connect(ui.browsePreExportButton, SIGNAL(pressed()), this, SLOT(browsePreExportButtonPressed()));
+    connect(ui.lineEditPreScript, SIGNAL(textChanged(const QString&)), this, SLOT(prescriptChanged()));
+    connect(ui.lineEditPostScript, SIGNAL(textChanged(const QString&)), this, SLOT(postscriptChanged()));
+    connect(ui.browsePostExportButton, SIGNAL(pressed()), this, SLOT(browsePostExportButtonPressed()));
+}      
+
+
+void ExportXHTMLDialog::readSettings()
+{
+
+       dir=settings.readLocalEntry (filepath,"/export/xhtml/exportDir",vymBaseDir.currentDirPath() );
+       ui.lineEditDir->setText(dir);
+       
+    if ( settings.readLocalEntry (filepath,"/export/xhtml/useImage","yes")=="yes")
+               useImage=true;
+       else    
+               useImage=false;
+       ui.imageButton->setChecked(useImage);
+               
+       if ( settings.readLocalEntry (filepath,"/export/xhtml/useTextColor","no")=="yes")
+               useTextColor=true;
+       else    
+               useTextColor=false;
+       ui.textColorButton->setChecked(useTextColor);
+       
+/* TODO this was used in old html export, is not yet in new stylesheet
+       if ( settings.readEntry ("/export/html/useHeading","no")=="yes")
+               useHeading=true;
+       else    
+               useHeading=false;
+       checkBox4_2->setChecked(useHeading);
+*/             
+
+       if ( settings.readLocalEntry (filepath,"/export/xhtml/saveSettingsInMap","no")=="yes")
+               saveSettingsInMap=true;
+       else    
+               saveSettingsInMap=false;
+       ui.saveSettingsInMapButton->setChecked(saveSettingsInMap);
+
+       if ( settings.readEntry ("/export/xhtml/showWarnings","yes")=="yes")
+               showWarnings=true;
+       else    
+               showWarnings=false;
+       ui.warningsButton->setChecked(showWarnings);
+       
+       if ( settings.readEntry ("/export/xhtml/showOutput","no")=="yes")
+               showOutput=true;
+       else    
+               showOutput=false;
+       ui.outputButton->setChecked(showOutput);
+
+       // For testing better use local styles
+    const QString defxsl(vymBaseDir.path() + "/styles/vym2xhtml.xsl");
+    const QString defcss(vymBaseDir.path() + "/styles/vym.css");
+       if (options.isOn ("local"))
+       {
+               xsl=defxsl;
+               css=defcss;
+       } else
+       {
+               xsl=settings.readLocalEntry 
+                       (filepath,"/export/xhtml/xsl",defxsl);
+               css=settings.readLocalEntry 
+                       (filepath,"/export/xhtml/css",defcss);  
+       }
+       ui.lineEditXSL->setText(xsl);
+       ui.lineEditCSS->setText(css);
+       
+       prescript=settings.readLocalEntry
+               (filepath,"/export/xhtml/prescript","");
+       ui.lineEditPreScript->setText (prescript);      
+       
+       postscript=settings.readLocalEntry
+               (filepath,"/export/xhtml/postscript","");
+       ui.lineEditPostScript->setText (postscript);    
+
+       if (!prescript.isEmpty() || !postscript.isEmpty())
+       {
+               QMessageBox::warning( 0, tr( "Warning" ),tr(
+               "The settings saved in the map "
+               "would like to run scripts:\n\n"
+               "%1\n\n"
+               "Please check, if you really\n"
+               "want to allow this in your system!").arg(prescript+"  "+postscript));
+               
+       }
+}
+
+void ExportXHTMLDialog::setDir(const QString &d)
+{
+       dir=d;
+       if (dir.right(1)!="/") dir+="/";
+}
+
+void ExportXHTMLDialog::dirChanged()
+{
+       setDir (ui.lineEditDir->text());
+       settingsChanged=true;
+}
+
+void ExportXHTMLDialog::browseDirectoryPressed()
+{
+       QFileDialog fd( this);
+       fd.setMode (QFileDialog::DirectoryOnly);
+       fd.setCaption(tr("VYM - Export HTML to directory"));
+       fd.setModal (true);
+       fd.setDirectory (QDir::current());
+       fd.show();
+
+       if ( fd.exec() == QDialog::Accepted )
+       {
+               dir=fd.selectedFile();
+               ui.lineEditDir->setText (dir );
+               settingsChanged=true;
+       }
+}
+
+void ExportXHTMLDialog::imageButtonPressed(bool b)
+{
+       useImage=b;
+       settingsChanged=true;
+}
+
+void ExportXHTMLDialog::textcolorButtonPressed(bool b)
+{
+       useTextColor=b; 
+       settingsChanged=true;
+}
+
+void ExportXHTMLDialog::saveSettingsInMapButtonPressed(bool b)
+{
+       saveSettingsInMap=b;    
+       settingsChanged=true;
+}
+
+void ExportXHTMLDialog::warningsButtonPressed(bool b)
+{
+       showWarnings=b;
+       settingsChanged=true;
+}
+
+
+void ExportXHTMLDialog::outputButtonPressed(bool b)
+{
+       showOutput=b;
+       settingsChanged=true;
+}
+
+void ExportXHTMLDialog::cssChanged()
+{
+       css=ui.lineEditCSS->text();
+       settingsChanged=true;
+}
+
+void ExportXHTMLDialog::browseCSSPressed()
+{
+       QFileDialog fd( this);
+       fd.setModal (true);
+       fd.setFilter ("Cascading Stylesheet (*.css)");
+       fd.setDirectory (QDir::current());
+       fd.show();
+
+       if ( fd.exec() == QDialog::Accepted )
+       {
+               css=fd.selectedFile();
+               ui.lineEditCSS->setText (css );
+               settingsChanged=true;
+       }
+}
+
+void ExportXHTMLDialog::xslChanged()
+{
+       xsl=ui.lineEditXSL->text();
+       settingsChanged=true;
+}
+
+void ExportXHTMLDialog::prescriptChanged()
+{
+       prescript=ui.lineEditPreScript->text();
+       settingsChanged=true;
+}
+
+void ExportXHTMLDialog::browseXSLPressed()
+{
+       QFileDialog fd( this);
+       fd.setModal (true);
+       fd.setFilter ("Extensible Stylesheet Language (*.xsl)");
+       fd.setDirectory (QDir::current());
+       fd.show();
+
+       if ( fd.exec() == QDialog::Accepted )
+       {
+               xsl=fd.selectedFile();
+               ui.lineEditXSL->setText (xsl );
+               settingsChanged=true;
+       }
+}
+
+void ExportXHTMLDialog::postscriptChanged()
+{
+       postscript=ui.lineEditPostScript->text();
+       settingsChanged=true;
+}
+
+void ExportXHTMLDialog::browsePreExportButtonPressed()
+{
+       QFileDialog fd( this);
+       fd.setModal (true);
+       fd.setFilter ("Scripts (*.sh *.pl *.py *.php)");
+       fd.setDirectory (QDir::current());
+       fd.show();
+
+       if ( fd.exec() == QDialog::Accepted )
+       {
+               prescript=fd.selectedFile();
+               ui.lineEditPreScript->setText (prescript );
+               settingsChanged=true;
+       }
+
+}
+
+void ExportXHTMLDialog::browsePostExportButtonPressed()
+{
+       QFileDialog fd( this);
+       fd.setModal (true);
+       fd.setFilter ("Scripts (*.sh *.pl *.py *.php)");
+       fd.setDirectory (QDir::current());
+       fd.show();
+
+       if ( fd.exec() == QDialog::Accepted )
+       {
+               postscript=fd.selectedFile();
+               ui.lineEditPostScript->setText (postscript );
+               settingsChanged=true;
+       }
+}
+
+
+void ExportXHTMLDialog::doExport (const QString &mapname)
+{
+       // Save options to settings file 
+       // (but don't save at destructor, which
+       // is called for "cancel", too)
+       settings.setLocalEntry (filepath,"/export/xhtml/exportDir",dir);
+       settings.setLocalEntry (filepath,"/export/xhtml/prescript",prescript);
+       settings.setLocalEntry (filepath,"/export/xhtml/postscript",postscript);
+
+    if (useImage)
+               settings.setLocalEntry (filepath,"/export/xhtml/useImage","yes");
+    else
+               settings.setLocalEntry (filepath,"/export/xhtml/useImage","no");        
+       
+  if (useTextColor)
+               settings.setLocalEntry (filepath,"/export/xhtml/useTextColor","yes");
+    else
+               settings.setLocalEntry (filepath,"/export/xhtml/useTextColor","no");    
+       
+   if (showWarnings)
+               settings.writeEntry ("/export/xhtml/showWarnings","yes");
+    else
+               settings.writeEntry ("/export/xhtml/showWarnings","no");        
+                       
+       if (showOutput)
+               settings.writeEntry ("/export/xhtml/showOutput","yes");
+       else
+               settings.writeEntry ("/export/xhtml/showOutput","no");  
+
+       QString ipath;  
+       ipath=vymBaseDir.path()+"/flags/flag-url-16x16.png";
+       if (!options.isOn ("local"))
+       {
+               settings.setLocalEntry 
+                       (filepath,"/export/xhtml/xsl",xsl);
+               settings.setLocalEntry 
+                       (filepath,"/export/xhtml/css",css);     
+       }
+
+       // Provide a smaller URL-icon to improve Layout
+       QPixmap pm;
+       if (!pm.load(ipath,"PNG") )
+               QMessageBox::warning( 0, tr( "Warning" ),tr("Could not open %1").arg(ipath));
+               
+               
+       if(!pm.save (dir + "flags/flag-url-16x16.png","PNG"))
+               QMessageBox::warning( 0, tr( "Warning" ),tr("Could not write %1").arg(ipath));
+       if (!saveSettingsInMap)
+               settings.clearLocal("/export/xhtml");
+       else    
+               settings.setLocalEntry 
+                       (filepath,"/export/xhtml/saveSettingsInMap","yes");
+
+       // Copy CSS file
+       QFile css_src (css);
+       QFile css_dst (dir+"vym.css");
+       if (!css_src.open ( QIODevice::ReadOnly))
+               QMessageBox::warning( 0, tr( "Warning" ),tr("Could not open %1").arg(css));
+       else
+       {
+               if (!css_dst.open( QIODevice::WriteOnly))
+                       QMessageBox::warning( 0, tr( "Warning" ), tr("Could not open %1").arg(dir+"vym.css"));
+               else
+               {       
+               
+                       QTextStream tsout( &css_dst);
+                       QTextStream tsin ( &css_src);
+                       QString s= tsin.read();
+                       tsout << s;
+                       css_dst.close();
+               }       
+               css_src.close();
+       }
+
+       if (!prescript.isEmpty()) runScript (prescript,dir+mapname+".xml");
+       
+       if (useImage)
+               p.addStringParam ("imagemap","images/"+mapname+".png");
+       if (useTextColor)
+               p.addStringParam ("use.textcolor","1");
+       p.addStringParam ("mapname",mapname+".vym");
+       
+       p.setOutputFile (dir+mapname+".html");
+       p.setInputFile (dir+mapname+".xml");
+       p.setXSLFile (xsl);
+       p.process();
+
+       if (!postscript.isEmpty()) runScript (postscript,dir+mapname+".html");
+
+}
+
+void ExportXHTMLDialog::setFilePath(const QString &s)
+{
+       filepath=s;
+}
+
+void ExportXHTMLDialog::setMapName(const QString &s)
+{
+       mapname=s;
+}
+
+QString ExportXHTMLDialog::getDir()
+{
+       return dir;
+}
+
+bool ExportXHTMLDialog::warnings()
+{
+       return showWarnings;
+}
+
+bool ExportXHTMLDialog::hasChanged()
+{
+       return settingsChanged;
+}
+
+
+void ExportXHTMLDialog::runScript(QString spath, QString fpath)
+{
+       spath.replace ("%f",fpath);
+       QStringList args=QStringList::split (' ',spath,false);
+               
+       p.addOutput ("vym is executing: \n" + spath+" "+args.join(" ") );       
+       scriptProc->start (spath,args);
+       if (!scriptProc->waitForStarted() )
+       {
+               QMessageBox::critical( 0, tr( "Critical Error" ),
+                                          tr("Could not start %1").arg(spath) );
+       } else
+       {
+               if (!scriptProc->waitForFinished())
+                       QMessageBox::critical( 0, tr( "Critical Error" ),
+                          tr("%1 didn't exit normally").arg(spath) +
+                          scriptProc->getErrout() );
+               else
+                       if (scriptProc->exitStatus()>0) showOutput=true;
+                       
+       }       
+       p.addOutput ("\n");
+       p.addOutput (scriptProc->getErrout());
+       p.addOutput (scriptProc->getStdout());
+}
+
diff --git a/exportxhtmldialog.h b/exportxhtmldialog.h
new file mode 100644 (file)
index 0000000..c448e5e
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef EXPORTXHTMLDIALOG_H
+#define EXPORTXHTMLDIALOG_H
+
+#include "ui_exportxhtmldialog.h"
+
+/*! \brief Dialog to export a map as XHTML document
+
+This is an overloaded QDialog with various settings needed to call
+convert the vym.xml to a XHTML document. 
+The conversion itself is done by calling xsltproc.
+*/
+
+class ExportXHTMLDialog:public QDialog
+{
+       Q_OBJECT
+public:
+    ExportXHTMLDialog(QWidget* parent = 0);
+
+    virtual QString getDir();
+    virtual bool warnings();
+    virtual bool hasChanged();
+
+public slots:
+    virtual void readSettings();
+    virtual void setDir (const QString&);
+    virtual void dirChanged();
+    virtual void browseDirectoryPressed();
+    virtual void imageButtonPressed( bool b );
+    virtual void textcolorButtonPressed( bool b );
+    virtual void saveSettingsInMapButtonPressed( bool b );
+    virtual void warningsButtonPressed( bool b );
+    virtual void outputButtonPressed( bool b );
+    virtual void cssChanged();
+    virtual void browseCSSPressed();
+    virtual void xslChanged();
+    virtual void prescriptChanged();
+    virtual void browseXSLPressed();
+    virtual void postscriptChanged();
+    virtual void browsePreExportButtonPressed();
+    virtual void browsePostExportButtonPressed();
+    virtual void doExport( const QString & mapname );
+    virtual void setFilePath( const QString & s );
+    virtual void setMapName( const QString & s );
+
+protected:
+    bool useTextColor;
+    bool showWarnings;
+    QString xsl;
+    QString css;
+    bool useImage;
+    bool showOutput;
+    QString dir;
+    QString filepath;
+    QString prescript;
+    QString postscript;
+    bool settingsChanged;
+    QString mapname;
+    bool saveSettingsInMap;
+    XSLTProc p;
+    Process *scriptProc;
+
+private:
+       Ui::ExportXHTMLDialog ui;
+    void init();
+    void destroy();
+    void runScript( QString spath, QString fpath );
+
+};
+
+#endif // EXPORTXHTMLDIALOG_H
diff --git a/exportxhtmldialog.ui b/exportxhtmldialog.ui
new file mode 100644 (file)
index 0000000..601a45c
--- /dev/null
@@ -0,0 +1,574 @@
+<ui version="4.0" >
+ <class>ExportXHTMLDialog</class>
+ <widget class="QDialog" name="ExportXHTMLDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>588</width>
+    <height>523</height>
+   </rect>
+  </property>
+  <property name="minimumSize" >
+   <size>
+    <width>0</width>
+    <height>130</height>
+   </size>
+  </property>
+  <property name="windowTitle" >
+   <string>Export XHTML</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <item>
+    <layout class="QHBoxLayout" >
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <property name="leftMargin" >
+      <number>0</number>
+     </property>
+     <property name="topMargin" >
+      <number>0</number>
+     </property>
+     <property name="rightMargin" >
+      <number>0</number>
+     </property>
+     <property name="bottomMargin" >
+      <number>0</number>
+     </property>
+     <item>
+      <widget class="QLabel" name="textLabel1" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="Preferred" hsizetype="Minimum" >
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="text" >
+        <string>Export to directory:</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QLineEdit" name="lineEditDir" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="browseExportDirButton" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="text" >
+        <string>Browse</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="Q3ButtonGroup" name="buttonGroup2" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize" >
+      <size>
+       <width>0</width>
+       <height>160</height>
+      </size>
+     </property>
+     <property name="title" >
+      <string>Options</string>
+     </property>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <widget class="QCheckBox" name="outputButton" >
+      <property name="geometry" >
+       <rect>
+        <x>22</x>
+        <y>156</y>
+        <width>521</width>
+        <height>21</height>
+       </rect>
+      </property>
+      <property name="sizePolicy" >
+       <sizepolicy vsizetype="Fixed" hsizetype="Minimum" >
+        <horstretch>0</horstretch>
+        <verstretch>0</verstretch>
+       </sizepolicy>
+      </property>
+      <property name="text" >
+       <string>show output of external scripts</string>
+      </property>
+     </widget>
+     <widget class="QWidget" name="layoutWidget" >
+      <property name="geometry" >
+       <rect>
+        <x>20</x>
+        <y>30</y>
+        <width>511</width>
+        <height>104</height>
+       </rect>
+      </property>
+      <layout class="QVBoxLayout" >
+       <property name="spacing" >
+        <number>6</number>
+       </property>
+       <property name="leftMargin" >
+        <number>0</number>
+       </property>
+       <property name="topMargin" >
+        <number>0</number>
+       </property>
+       <property name="rightMargin" >
+        <number>0</number>
+       </property>
+       <property name="bottomMargin" >
+        <number>0</number>
+       </property>
+       <item>
+        <widget class="QCheckBox" name="imageButton" >
+         <property name="text" >
+          <string>Include image</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QCheckBox" name="textColorButton" >
+         <property name="text" >
+          <string>Colored headings in text</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QCheckBox" name="saveSettingsInMapButton" >
+         <property name="text" >
+          <string>Save settings in map</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QCheckBox" name="warningsButton" >
+         <property name="text" >
+          <string>show warnings of xslt processor</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+    </widget>
+   </item>
+   <item>
+    <widget class="Q3GroupBox" name="groupBox2" >
+     <property name="title" >
+      <string>Stylesheets</string>
+     </property>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <layout class="QGridLayout" >
+      <property name="leftMargin" >
+       <number>11</number>
+      </property>
+      <property name="topMargin" >
+       <number>11</number>
+      </property>
+      <property name="rightMargin" >
+       <number>11</number>
+      </property>
+      <property name="bottomMargin" >
+       <number>11</number>
+      </property>
+      <property name="horizontalSpacing" >
+       <number>6</number>
+      </property>
+      <property name="verticalSpacing" >
+       <number>6</number>
+      </property>
+      <item row="1" column="0" >
+       <layout class="QHBoxLayout" >
+        <property name="spacing" >
+         <number>6</number>
+        </property>
+        <property name="leftMargin" >
+         <number>0</number>
+        </property>
+        <property name="topMargin" >
+         <number>0</number>
+        </property>
+        <property name="rightMargin" >
+         <number>0</number>
+        </property>
+        <property name="bottomMargin" >
+         <number>0</number>
+        </property>
+        <item>
+         <widget class="QLabel" name="textLabel2" >
+          <property name="sizePolicy" >
+           <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="minimumSize" >
+           <size>
+            <width>125</width>
+            <height>0</height>
+           </size>
+          </property>
+          <property name="text" >
+           <string>XSL:</string>
+          </property>
+          <property name="alignment" >
+           <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QLineEdit" name="lineEditXSL" />
+        </item>
+        <item>
+         <widget class="QPushButton" name="browseXSLButton" >
+          <property name="sizePolicy" >
+           <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="text" >
+           <string>Browse</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+      <item row="0" column="0" >
+       <layout class="QHBoxLayout" >
+        <property name="spacing" >
+         <number>6</number>
+        </property>
+        <property name="leftMargin" >
+         <number>0</number>
+        </property>
+        <property name="topMargin" >
+         <number>0</number>
+        </property>
+        <property name="rightMargin" >
+         <number>0</number>
+        </property>
+        <property name="bottomMargin" >
+         <number>0</number>
+        </property>
+        <item>
+         <widget class="QLabel" name="textLabel1_2" >
+          <property name="sizePolicy" >
+           <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="minimumSize" >
+           <size>
+            <width>125</width>
+            <height>0</height>
+           </size>
+          </property>
+          <property name="text" >
+           <string>CSS:</string>
+          </property>
+          <property name="alignment" >
+           <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QLineEdit" name="lineEditCSS" />
+        </item>
+        <item>
+         <widget class="QPushButton" name="browseCSSButton" >
+          <property name="sizePolicy" >
+           <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="text" >
+           <string>Browse</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="Q3GroupBox" name="groupBox1" >
+     <property name="title" >
+      <string>Scripts</string>
+     </property>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <layout class="QGridLayout" >
+      <property name="leftMargin" >
+       <number>11</number>
+      </property>
+      <property name="topMargin" >
+       <number>11</number>
+      </property>
+      <property name="rightMargin" >
+       <number>11</number>
+      </property>
+      <property name="bottomMargin" >
+       <number>11</number>
+      </property>
+      <property name="horizontalSpacing" >
+       <number>6</number>
+      </property>
+      <property name="verticalSpacing" >
+       <number>6</number>
+      </property>
+      <item row="0" column="0" >
+       <layout class="QHBoxLayout" >
+        <property name="spacing" >
+         <number>6</number>
+        </property>
+        <property name="leftMargin" >
+         <number>0</number>
+        </property>
+        <property name="topMargin" >
+         <number>0</number>
+        </property>
+        <property name="rightMargin" >
+         <number>0</number>
+        </property>
+        <property name="bottomMargin" >
+         <number>0</number>
+        </property>
+        <item>
+         <widget class="QLabel" name="textLabel1_3" >
+          <property name="sizePolicy" >
+           <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="minimumSize" >
+           <size>
+            <width>125</width>
+            <height>0</height>
+           </size>
+          </property>
+          <property name="text" >
+           <string>Before export:</string>
+          </property>
+          <property name="alignment" >
+           <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QLineEdit" name="lineEditPreScript" />
+        </item>
+        <item>
+         <widget class="QPushButton" name="browsePreExportButton" >
+          <property name="sizePolicy" >
+           <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="text" >
+           <string>Browse</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+      <item row="1" column="0" >
+       <layout class="QHBoxLayout" >
+        <property name="spacing" >
+         <number>6</number>
+        </property>
+        <property name="leftMargin" >
+         <number>0</number>
+        </property>
+        <property name="topMargin" >
+         <number>0</number>
+        </property>
+        <property name="rightMargin" >
+         <number>0</number>
+        </property>
+        <property name="bottomMargin" >
+         <number>0</number>
+        </property>
+        <item>
+         <widget class="QLabel" name="textLabel2_2" >
+          <property name="sizePolicy" >
+           <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="minimumSize" >
+           <size>
+            <width>125</width>
+            <height>0</height>
+           </size>
+          </property>
+          <property name="frameShape" >
+           <enum>QFrame::NoFrame</enum>
+          </property>
+          <property name="text" >
+           <string>After Export:</string>
+          </property>
+          <property name="alignment" >
+           <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QLineEdit" name="lineEditPostScript" />
+        </item>
+        <item>
+         <widget class="QPushButton" name="browsePostExportButton" >
+          <property name="sizePolicy" >
+           <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="text" >
+           <string>Browse</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeType" >
+      <enum>QSizePolicy::MinimumExpanding</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>20</width>
+       <height>41</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" >
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType" >
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>61</width>
+         <height>21</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="cancelButton" >
+       <property name="text" >
+        <string>Cancel</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="exportButton" >
+       <property name="text" >
+        <string>Export</string>
+       </property>
+       <property name="default" >
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11" />
+ <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
+ <customwidgets>
+  <customwidget>
+   <class>Q3GroupBox</class>
+   <extends>QGroupBox</extends>
+   <header>Qt3Support/Q3GroupBox</header>
+   <container>1</container>
+  </customwidget>
+  <customwidget>
+   <class>Q3ButtonGroup</class>
+   <extends>Q3GroupBox</extends>
+   <header>Qt3Support/Q3ButtonGroup</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <includes>
+  <include location="local" >xsltproc.h</include>
+  <include location="local" >process.h</include>
+ </includes>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>cancelButton</sender>
+   <signal>clicked()</signal>
+   <receiver>ExportXHTMLDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>459</x>
+     <y>443</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>256</x>
+     <y>233</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>exportButton</sender>
+   <signal>clicked()</signal>
+   <receiver>ExportXHTMLDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>368</x>
+     <y>443</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>256</x>
+     <y>233</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/extrainfodialog.cpp b/extrainfodialog.cpp
new file mode 100644 (file)
index 0000000..314f31c
--- /dev/null
@@ -0,0 +1,39 @@
+#include "extrainfodialog.h"
+
+
+ExtraInfoDialog::ExtraInfoDialog(QWidget *parent):QDialog (parent)
+{
+       ui.setupUi (this);
+}
+
+
+void ExtraInfoDialog::setMapName(const QString &s)
+{
+       ui.mapNameLE->setText (s);
+}
+
+void ExtraInfoDialog::setComment (const QString &s)
+{
+       ui.commentTE->setText (s);
+}
+
+QString ExtraInfoDialog::getComment()
+{
+       return ui.commentTE->text();
+}      
+
+
+void ExtraInfoDialog::setAuthor(const QString &s)
+{
+       ui.authorLE->setText (s);
+}
+
+QString ExtraInfoDialog::getAuthor()
+{
+       return ui.authorLE->text();
+}
+
+void ExtraInfoDialog::setStats(const QString &s)
+{
+       ui.statsTE->setText (s);
+}
diff --git a/extrainfodialog.h b/extrainfodialog.h
new file mode 100644 (file)
index 0000000..a868954
--- /dev/null
@@ -0,0 +1,30 @@
+#ifndef EXTRAINFODIALOG_H
+#define EXTRAINFODIALOG_H
+
+#include "ui_extrainfodialog.h"
+
+/* \brief Dialog to display and edit map specific information like author, comment, etc. 
+*/
+
+class ExtraInfoDialog : public QDialog
+{
+    Q_OBJECT
+
+public:
+    ExtraInfoDialog(QWidget* parent = 0);
+
+    virtual QString getComment();
+    virtual QString getAuthor();
+    virtual void setStats( const QString & s );
+
+public slots:
+    virtual void setMapName( const QString & s );
+    virtual void setComment( const QString & s );
+    virtual void setAuthor( const QString & s );
+
+private:
+       Ui::ExtraInfoDialog ui;
+
+};
+
+#endif // EXTRAINFODIALOG_H
diff --git a/extrainfodialog.ui b/extrainfodialog.ui
new file mode 100644 (file)
index 0000000..89d53ae
--- /dev/null
@@ -0,0 +1,198 @@
+<ui version="4.0" >
+ <author>Uwe Drechsel</author>
+ <comment></comment>
+ <exportmacro></exportmacro>
+ <class>ExtraInfoDialog</class>
+ <widget class="QDialog" name="ExtraInfoDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>376</width>
+    <height>403</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>VYM - Info</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <property name="margin" >
+    <number>11</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item>
+    <widget class="QLabel" name="textLabel1_2" >
+     <property name="text" >
+      <string>Map:</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLineEdit" name="mapNameLE" >
+     <property name="readOnly" >
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="textLabel1" >
+     <property name="text" >
+      <string>Author:</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLineEdit" name="authorLE" />
+   </item>
+   <item>
+    <widget class="QLabel" name="textLabel2" >
+     <property name="text" >
+      <string>Comment:</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="Q3TextEdit" name="commentTE" >
+     <property name="sizePolicy" >
+      <sizepolicy>
+       <hsizetype>7</hsizetype>
+       <vsizetype>4</vsizetype>
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="maximumSize" >
+      <size>
+       <width>32767</width>
+       <height>76</height>
+      </size>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="textLabel2_2" >
+     <property name="text" >
+      <string>Statistics:</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="Q3TextEdit" name="statsTE" >
+     <property name="font" >
+      <font>
+       <family>Courier</family>
+       <pointsize>12</pointsize>
+       <weight>50</weight>
+       <italic>false</italic>
+       <bold>false</bold>
+       <underline>false</underline>
+       <strikeout>false</strikeout>
+      </font>
+     </property>
+     <property name="textFormat" >
+      <enum>Qt::PlainText</enum>
+     </property>
+     <property name="readOnly" >
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType" >
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>160</width>
+         <height>21</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="cancelButton" >
+       <property name="text" >
+        <string>Cancel</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="closeButton" >
+       <property name="text" >
+        <string>Close</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11" />
+ <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
+ <customwidgets>
+  <customwidget>
+   <class>Q3TextEdit</class>
+   <extends></extends>
+   <header>q3textedit.h</header>
+   <container>0</container>
+   <pixmap></pixmap>
+  </customwidget>
+ </customwidgets>
+ <tabstops>
+  <tabstop>authorLE</tabstop>
+  <tabstop>commentTE</tabstop>
+  <tabstop>closeButton</tabstop>
+  <tabstop>cancelButton</tabstop>
+  <tabstop>mapNameLE</tabstop>
+  <tabstop>statsTE</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>closeButton</sender>
+   <signal>clicked(bool)</signal>
+   <receiver>ExtraInfoDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>321</x>
+     <y>377</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>187</x>
+     <y>201</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>cancelButton</sender>
+   <signal>clicked()</signal>
+   <receiver>ExtraInfoDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>230</x>
+     <y>377</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>187</x>
+     <y>201</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/file.cpp b/file.cpp
new file mode 100644 (file)
index 0000000..01fecb2
--- /dev/null
+++ b/file.cpp
@@ -0,0 +1,500 @@
+#include <QDir>
+#include <QMessageBox>
+#include <QPixmap>
+#include <QLabel>
+#include <QTextStream>
+#include <iostream>
+#include <QUrl>
+
+#include "file.h"
+#include "process.h"
+
+#if defined(Q_OS_WIN32)
+#include "mkdtemp.h"
+#include <windows.h>
+#endif
+
+QString maskPath(QString p)
+{
+       // Change " " to "\ " to enable blanks in filenames
+       p=p.replace(QChar('&'),"\\&");
+       return p.replace(QChar(' '),"\\ ");
+}
+
+QString convertToRel (const QString &src, const QString &dst)
+{
+       QString s=src;
+       QString d=dst;
+       int i;
+
+       if (s==d) 
+       {
+               // Special case, we just need the name of the file,
+               // not the complete path
+               i=d.findRev ("/");
+               d=d.right (d.length()-i-1);
+       } else
+       {
+               // Find relative path from src to dst
+
+               // Remove the first "/"
+               if (s.section ("/",0,0).isEmpty()) 
+               {
+                       s=s.right (s.length()-1);
+                       d=d.right (d.length()-1);
+               }
+               
+               // remove identical left parts
+               while (s.section("/",0,0) == d.section("/",0,0) ) 
+               {
+                       i=s.find ("/");
+                       s=s.right (s.length()-i-1);
+                       d=d.right (d.length()-i-1);
+               }
+
+               // Now take care of paths where we have to go back first
+               int srcsep=s.count("/");
+               int dstsep=d.count("/");
+               if (srcsep <=  dstsep )
+               {
+                       // find path to go up first and then back to dst
+                       i=1;
+                       while (i<=srcsep) 
+                       {
+                               d="../"+d;
+                               i++;
+                       }       
+               }
+       }       
+       return d;
+}
+
+#include <QFileDialog>
+extern QString vymName;
+extern QDir lastFileDir;
+
+QString browseDirectory (QWidget *parent,const QString &caption)
+{
+       QFileDialog fd(parent,caption);
+       fd.setMode (QFileDialog::DirectoryOnly);
+       fd.setCaption(vymName+ " - "+caption);
+       fd.setDir (lastFileDir);
+       fd.show();
+       
+       if ( fd.exec() == QDialog::Accepted )
+               return fd.selectedFile();
+       else
+               return "";
+}
+
+
+
+bool reallyWriteDirectory(const QString &dir)
+{
+       QStringList eList = QDir(dir).entryList();
+       if (eList.first() ==".")  eList.pop_front();    // remove "."
+       if (eList.first() =="..") eList.pop_front();    // remove "."
+       if (!eList.isEmpty())
+       {
+               QMessageBox mb( vymName,
+                       QObject::tr("The directory %1 is not empty.\nDo you risk to overwrite its contents?","write directory").arg(dir),
+               QMessageBox::Warning,
+               QMessageBox::Yes ,
+               QMessageBox::Cancel | QMessageBox::Default,
+               QMessageBox::NoButton );
+
+               mb.setButtonText( QMessageBox::Yes, QObject::tr("Overwrite") );
+               mb.setButtonText( QMessageBox::No, QObject::tr("Cancel"));
+               switch( mb.exec() ) 
+               {
+                       case QMessageBox::Yes:
+                               // save 
+                               return true;
+                       case QMessageBox::Cancel:
+                               // do nothing
+                               return false;
+               }
+       }
+       return true;
+}
+
+QString makeTmpDir (bool &ok, QString prefix)
+{
+       bool b;
+       QString path=makeUniqueDir (b,QDir::tempPath()+"/"+prefix+"-XXXXXX");
+       ok=b;
+       return path;
+}
+
+bool isInTmpDir(QString fn)
+{
+       QString temp=QDir::tempPath();
+       int l=temp.length();
+       return fn.left(l)==temp;
+}
+
+QString makeUniqueDir (bool &ok,QString s)
+{
+       // Create unique directory e.g. for s="/tmp/vym-XXXXXX"
+
+       // Convert Separators
+       s=QDir::convertSeparators(s);
+
+       // Convert QString to string 
+       ok=true;
+       char *p;
+       int bytes=s.length();
+       p=(char*) malloc (bytes+1);
+       int i;
+       for (i=0;i<bytes;i++)
+               p[i]=s.at(i).latin1();
+       p[bytes]=0;     
+
+       QString r=mkdtemp (p);
+       if (r.isEmpty()) ok=false;
+       free (p);
+       return r;
+}
+
+void removeDir(QDir d)
+{
+       // This check should_ not be necessary, but proved to be useful ;-)
+       if (!isInTmpDir(d.path()))
+       {
+               qWarning ("file.cpp::removeDir should remove "+d.path()+" - aborted.");
+               return;
+       }
+
+       // Traverse directories
+       d.setFilter( QDir::Dirs| QDir::Hidden | QDir::NoSymLinks );
+       QFileInfoList list = d.entryInfoList();
+       QFileInfo fi;
+
+       for (int i = 0; i < list.size(); ++i) 
+       {
+               fi=list.at(i);
+               if (fi.fileName() != "." && fi.fileName() != ".." )
+               {
+                       if ( !d.cd(fi.fileName()) ) 
+                               qWarning ("removeDir() cannot find the directory "+fi.fileName());
+                       else 
+                       {
+                               // Recursively remove subdirs
+                               removeDir (d);
+                               d.cdUp();
+                       }
+               }       
+       }
+
+       // Traverse files
+       d.setFilter( QDir::Files| QDir::Hidden | QDir::NoSymLinks );
+       list = d.entryInfoList();
+
+       for (int i = 0; i < list.size(); ++i) 
+       {
+               fi=list.at(i);
+               QFile (fi.filePath()).remove(); 
+       }       
+
+       if (!d.rmdir(d.path()))
+               qWarning ("removeDir("+d.path()+") failed!");
+}              
+
+void copyDir (QDir src, QDir dst)
+{
+       system ("cp -r "+src.path()+"/* "+dst.path());
+
+       /*
+       ErrorCode err=success;
+
+       Process *cpProc=new Process ();
+       QStringList args;
+       cpProc->setWorkingDirectory (src.path());
+       args <<"-r";
+       args <<src.path();
+       args <<dst.path();
+
+       cpProc->start ("cp",args);
+       if (!cpProc->waitForStarted() )
+       {       
+               // zip could not be started
+               QMessageBox::critical( 0, QObject::tr( "Critical Error" ),
+                                          QObject::tr("Couldn't start zip to compress data."));
+               err=aborted;
+       } else
+       {
+               // zip could be started
+               cpProc->waitForFinished();
+               if (cpProc->exitStatus()!=QProcess::NormalExit )
+               {
+                       QMessageBox::critical( 0, QObject::tr( "Critical Error" ),
+                                                  QObject::tr("cp didn't exit normally")+
+                                                  "\n" + cpProc->getErrout());
+                       err=aborted;
+               } else
+               {
+                       if (cpProc->exitCode()>0)
+                       {
+                               QMessageBox::critical( 0, QObject::tr( "Critical Error" ),
+                                                  QString("cp exit code:  %1").arg(cpProc->exitCode() )+
+                                                  "\n" + cpProc->getErrout() );
+                               err=aborted;
+                       }
+               }
+       }       // cp could be started
+       */
+}
+
+void makeSubDirs (const QString &s)
+{
+       QDir d(s);
+       d.mkdir(s);
+       d.mkdir ("images");     
+       d.mkdir ("flags");      
+}
+
+ErrorCode zipDir (const QDir &zipDir, const QString &zipName)
+{
+       ErrorCode err=success;
+       
+       // zip the temporary directory
+       QStringList args;
+       Process *zipProc=new Process ();
+       zipProc->setWorkingDirectory (zipDir.path());
+       args <<"-r";
+       args <<zipName;
+       args <<".";
+
+       zipProc->start ("zip",args);
+       if (!zipProc->waitForStarted() )
+       {       
+               // zip could not be started
+               QMessageBox::critical( 0, QObject::tr( "Critical Error" ),
+                                          QObject::tr("Couldn't start zip to compress data."));
+               err=aborted;
+       } else
+       {
+               // zip could be started
+               zipProc->waitForFinished();
+               if (zipProc->exitStatus()!=QProcess::NormalExit )
+               {
+                       QMessageBox::critical( 0, QObject::tr( "Critical Error" ),
+                                                  QObject::tr("zip didn't exit normally")+
+                                                  "\n" + zipProc->getErrout());
+                       err=aborted;
+               } else
+               {
+                       if (zipProc->exitCode()>0)
+                       {
+                               QMessageBox::critical( 0, QObject::tr( "Critical Error" ),
+                                                  QString("zip exit code:  %1").arg(zipProc->exitCode() )+
+                                                  "\n" + zipProc->getErrout() );
+                               err=aborted;
+                       }
+               }
+       }       // zip could be started
+       return err;     
+}
+
+ErrorCode unzipDir (const QDir &zipDir, const QString &zipName)
+{
+       ErrorCode err=success;
+
+       // Try to unzip file
+#if !defined(Q_OS_WIN32)
+       QStringList args;
+       Process *zipProc=new Process ();
+       zipProc->setWorkingDirectory (zipDir.path());
+       args << "-o";   // overwrite existing files!
+       args << zipName ;
+       args << "-d";
+       args << zipDir.path();
+
+       zipProc->start ("unzip",args);
+       if (!zipProc->waitForStarted() )
+       {
+               QMessageBox::critical( 0, QObject::tr( "Critical Error" ),
+                                          QObject::tr("Couldn't start unzip to decompress data."));
+               err=aborted;
+               
+       } else
+       {
+               zipProc->waitForFinished();
+               if (zipProc->exitStatus()!=QProcess::NormalExit )
+               {
+                       QMessageBox::critical( 0,QObject::tr( "Critical Error" ),
+                                                  QObject::tr("unzip didn't exit normally") +
+                                                  zipProc->getErrout() );
+                       err=aborted;
+               } else
+               {
+                       if (zipProc->exitCode()>0)
+                       {
+                               if (zipProc->exitCode()==9)
+                                       // no zipped file, but maybe .xml or old version? Try again.
+                                       err=nozip;
+                               else    
+                               {
+                                       QMessageBox::critical( 0, QObject::tr( "Critical Error" ),
+                                                                  QString("unzip exit code:  %1").arg(zipProc->exitCode() ) +
+                                                                  zipProc->getErrout() );
+                                       err=aborted;
+                               }
+                       } 
+               }
+       }
+#else
+    // Do this process creation using Win32 API.
+    //! Create process.
+    PROCESS_INFORMATION piProcInfo;
+    STARTUPINFO siStartInfo;
+
+    // Initialize members of the PROCESS_INFORMATION structure.
+    ::ZeroMemory( &piProcInfo, sizeof(PROCESS_INFORMATION) );
+
+    // Set up members of the STARTUPINFO structure.
+    ::ZeroMemory( &siStartInfo, sizeof(STARTUPINFO) );
+    siStartInfo.cb = sizeof(STARTUPINFO);
+
+    // Create command line.
+    QString argv("unzip -o ");
+    argv.append(QDir::convertSeparators(zipName));
+    argv.append(" -d ");
+    argv.append(QDir::convertSeparators(zipDir.path()));
+
+    // Create the child process.
+    if( !::CreateProcess(NULL, 
+        (LPWSTR)argv.unicode(), // command line
+        NULL, // process security attributes
+        NULL, // primary thread security attributes
+        TRUE, // handles are inherited
+        0, // creation flags
+        NULL, // use parent's environment
+        NULL, // use parent's current directory
+        &siStartInfo, // STARTUPINFO pointer
+        &piProcInfo) ) // receives PROCESS_INFORMATION
+    {
+        err = aborted;
+    }
+    else
+    {
+        // Wait for it to finish.
+        ::WaitForSingleObject( piProcInfo.hProcess, 10000 );
+    }
+#endif
+       return err;     
+}
+
+bool loadStringFromDisk (const QString &fname, QString &s)
+{
+       s="";
+       QFile file ( fname);
+       if ( !file.open( QIODevice::ReadOnly ) ) return false;
+
+       QTextStream ts( &file );
+       ts.setEncoding (QTextStream::UnicodeUTF8);
+       while ( !ts.atEnd() ) 
+               s+=ts.readLine()+"\n"; 
+       file.close();
+       return true;
+}
+
+bool saveStringToDisk (const QString &fname, const QString &s)
+{
+       QFile file( fname);
+
+       file.setName ( fname);
+       if ( !file.open( QIODevice::WriteOnly ) ) 
+       {
+               file.close();
+               return false;
+       }       
+
+       // Write it finally, and write in UTF8, no matter what 
+       QTextStream ts( &file );
+       ts.setEncoding (QTextStream::UnicodeUTF8);
+       ts << s;
+       file.close();
+       return true;
+}
+
+
+ImagePreview::ImagePreview (QWidget *par=0): QLabel (par)
+{
+        fdia=(QFileDialog*)par;
+}
+
+void ImagePreview::previewUrl( const QUrl &u )
+{
+    QString path = u.path();
+    QPixmap pix( path );
+    if ( pix.isNull() )
+       {
+               // Strange: If we have fd->setMode (QFileDialog::ExistingFiles)
+               // in the filedialog, then there are 3 calls to previewURL 
+               // for each selection. And only the first is the actual selected file
+               // while the following 2 point to the directory above the current one.
+               // So here's my workaround:
+               
+               if (fdia && fdia->selectedFiles().count()==0)
+                       setText( QObject::tr("This is not an image.") );
+               if (fdia &&fdia->selectedFiles().count()>1)
+                       setText( QObject::tr("Sorry, no preview for\nmultiple selected files.") );
+       }       
+    else
+       {
+               float max_w=300;
+               float max_h=300;
+               float r;
+               if (pix.width()>max_w)
+               {
+                       r=max_w / pix.width();
+                       pix.resize(qRound(pix.width()*r), qRound(pix.height()*r));
+                       // TODO not a resize, but a shrink/enlarge is needed here...
+               }
+               if (pix.height()>max_h)
+               {
+                       r=max_h / pix.height();
+                       pix.resize(qRound(pix.width()*r), qRound(pix.height()*r));
+                       // TODO not a resize, but a shrink/enlarge is needed here...
+               }
+        setPixmap( pix );
+       }       
+}
+
+ImageIO::ImageIO ()
+{
+       // Create list with supported image types
+       // foreach (QByteArray format, QImageWriter::supportedImageFormats()) 
+       // imageTypes.append( tr("%1...").arg(QString(format).toUpper()));
+       imageFilters.append ("Images (*.png *.jpg *.jpeg *.bmp *.bmp *.ppm *.xpm *.xbm)");
+       imageTypes.append ("PNG");
+       imageFilters.append ("Portable Network Graphics (*.png)");
+       imageTypes.append ("PNG");
+       imageFilters.append ("Joint Photographic Experts Group (*.jpg)");
+       imageTypes.append ("JPG");
+       imageFilters.append ("Joint Photographic Experts Group (*.jpeg)");
+       imageTypes.append ("JPG");
+       imageFilters.append ("Windows Bitmap (*.bmp)");
+       imageTypes.append ("BMP");
+       imageFilters.append ("Portable Pixmap (*.ppm)");
+       imageTypes.append ("PPM");
+       imageFilters.append ("X11 Bitmap (*.xpm)");
+       imageTypes.append ("XPM");
+       imageFilters.append ("X11 Bitmap (*.xbm)");
+       imageTypes.append ("XBM");
+}
+
+QStringList ImageIO::getFilters()
+{
+       return imageFilters;
+}
+
+QString ImageIO::getType(QString filter)
+{
+       for (int i=0;i<imageFilters.count()+1;i++)
+               if (imageFilters.at(i)==filter) return imageTypes.at(i);
+       return QString();       
+}
+
+
diff --git a/file.h b/file.h
new file mode 100644 (file)
index 0000000..a5a0f74
--- /dev/null
+++ b/file.h
@@ -0,0 +1,61 @@
+#ifndef FILE_H
+#define FILE_H
+
+#include <QDir>
+
+enum LoadMode {NewMap,ImportAdd,ImportReplace};
+enum SaveMode {PartOfMap,CompleteMap,UndoCommand};
+enum FileType {VymMap, FreemindMap};
+enum ErrorCode {success,aborted,nozip};
+
+
+/////////////////////////////////////////////////////////////////////////////
+QString maskPath (QString );
+QString convertToRel (const QString &,const QString &);
+
+QString browseDirectory (QWidget *parent=NULL, const QString &caption="");
+bool reallyWriteDirectory(const QString &dir);
+
+QString makeTmpDir (bool &ok, QString prefix);
+bool isInTmpDir (QString fn);
+QString makeUniqueDir (bool &ok, QString);
+void removeDir(QDir);
+void copyDir (QDir src,QDir dst);
+void makeSubDirs (const QString &);
+ErrorCode zipDir (const QDir &,const QString&);
+ErrorCode unzipDir (const QDir &,const QString&);
+bool loadStringFromDisk (const QString &, QString &);
+bool saveStringToDisk (const QString &, const QString &s);
+
+/////////////////////////////////////////////////////////////////////////////
+#include <QLabel>
+//#include <q3filedialog.h>
+#include <QFileDialog>
+#include <QPixmap>
+
+class ImagePreview : public QLabel //, public Q3FilePreview
+{
+public:
+    ImagePreview( QWidget * );
+    void previewUrl( const QUrl & );
+protected:
+        QFileDialog *fdia;
+};
+
+
+//////////////////////////////////////////////////////////
+// Helper function to select image format while in SaveDialogs
+
+class ImageIO
+{
+public:
+       ImageIO ();
+       QStringList getFilters();
+       QString getType ( QString );
+
+private:       
+       QStringList imageFilters;
+       QStringList imageTypes;
+};
+
+#endif
diff --git a/findwindow.cpp b/findwindow.cpp
new file mode 100644 (file)
index 0000000..284584d
--- /dev/null
@@ -0,0 +1,90 @@
+#include <QLineEdit>
+#include <QVBoxLayout>
+#include <QLabel>
+
+#include "findwindow.h"
+
+
+extern QString vymName;
+
+FindWindow::FindWindow(QWidget* parent)
+       : QGroupBox( tr("Find"), parent )
+
+{
+       setWindowTitle(vymName + " - " +tr("Find Text"));
+
+    QVBoxLayout* mainLayout = new QVBoxLayout;
+    
+    QHBoxLayout *row1Layout = new QHBoxLayout;
+    // Create a Label
+    QLabel* label = new QLabel;
+    label->setText( tr("Text to find:"));
+    row1Layout->addWidget( label );
+
+
+       // Create LineEdit (here QComboBox)
+    QHBoxLayout *row2Layout = new QHBoxLayout;
+    findcombo = new QComboBox;
+       findcombo->setMinimumWidth(150);
+       findcombo->setEditable(true);
+       connect ( findcombo, SIGNAL( highlighted(int) ), 
+               this, SLOT( findPressed() ) );
+       connect ( findcombo, SIGNAL( textChanged(const QString &) ), 
+               this, SLOT( findTextChanged(const QString&) ) );
+
+       row2Layout->addWidget(findcombo);
+
+       // Create Buttons
+    QHBoxLayout *row3Layout = new QHBoxLayout;
+       clearbutton = new QPushButton;
+       clearbutton->setText(tr("Clear"));
+       connect ( clearbutton, SIGNAL( clicked() ), this, SLOT( clearLineEdit() ) );
+       row3Layout->addWidget (clearbutton);
+       
+       cancelbutton = new QPushButton;
+       cancelbutton->setText(tr("Cancel"));
+       cancelbutton->setShortcut (Qt::Key_Escape);
+       connect ( cancelbutton, SIGNAL( clicked() ), this, SLOT( cancelPressed() ) );
+       row3Layout->addWidget (cancelbutton);
+       
+       findbutton = new QPushButton;
+       findbutton->setText (tr("Find"));
+       findbutton->setDefault (true);
+       findbutton->setShortcut (Qt::Key_Return);
+       connect ( findbutton, SIGNAL( clicked() ), this, SLOT( findPressed() ) );
+
+       row3Layout->addStretch(2);
+       row3Layout->addWidget(findbutton);
+
+       mainLayout->addLayout (row1Layout);
+       mainLayout->addLayout (row2Layout);
+       mainLayout->addLayout (row3Layout);
+       setLayout (mainLayout);
+}
+
+void FindWindow::popup()
+{
+       show();
+       findcombo->lineEdit()->selectAll();
+       findcombo->setFocus();
+}
+
+void FindWindow::cancelPressed()
+{
+       hide();
+}
+
+void FindWindow::findPressed()
+{
+       emit (findButton(findcombo->currentText() ) );
+}
+
+void FindWindow::findTextChanged(const QString&)
+{
+       emit (somethingChanged() );
+}
+
+void FindWindow::clearLineEdit()
+{
+       findcombo->lineEdit()->clear();
+}
diff --git a/findwindow.h b/findwindow.h
new file mode 100644 (file)
index 0000000..413ad34
--- /dev/null
@@ -0,0 +1,39 @@
+#ifndef FINDWINDOW_H 
+#define FINDWINDOW_H
+
+#include <QMainWindow>
+#include <QComboBox>
+#include <QPushButton>
+#include <QGroupBox>
+#include <QLayout>
+#include <QLabel>
+
+
+class FindWindow : public QGroupBox
+{
+       Q_OBJECT
+
+public:
+       FindWindow (QWidget* parent=0);
+
+public slots:  
+       void popup();
+       void cancelPressed();
+       void findPressed();
+       void findTextChanged(const QString&);
+       void clearLineEdit();
+
+signals:
+       void findButton(QString);               // emit to mainwindow
+       void somethingChanged();        // emit to mainwindow
+
+private:
+       QGroupBox *findbox;
+       QComboBox *findcombo;
+       QPushButton *clearbutton;
+       QPushButton *findbutton;
+       QPushButton *cancelbutton;
+};
+
+
+#endif
diff --git a/flagobj.cpp b/flagobj.cpp
new file mode 100644 (file)
index 0000000..75ab022
--- /dev/null
@@ -0,0 +1,229 @@
+#include "flagobj.h"
+
+/////////////////////////////////////////////////////////////////
+// FlagObj
+/////////////////////////////////////////////////////////////////
+FlagObj::FlagObj()
+{
+//     cout << "Const FlagObj ()\n";
+    init ();
+}
+
+FlagObj::FlagObj(QGraphicsScene* s):MapObj(s) 
+{
+//     cout << "Const FlagObj  this="<<this<<"  scene="<<s<<endl;
+    init ();
+}
+
+FlagObj::FlagObj (FlagObj* io)
+{
+    copy (io);
+}
+
+FlagObj::~FlagObj()
+{
+//   cout << "Destr FlagObj  this="<<this <<"  " << qPrintable(name) << "\n";
+       if (icon) delete (icon);
+}
+
+
+void FlagObj::init ()
+{
+       name="undefined";
+       unsetGroup();
+
+       icon=new ImageObj (scene);
+       icon->setPos (absPos.x(), absPos.y() );
+       state=false;
+       used=false;
+       avis=true;
+       action=NULL;
+}
+
+void FlagObj::copy (FlagObj* other)
+{
+    MapObj::copy(other);
+       name=other->name;
+       group=other->group;
+       tooltip=other->tooltip;
+       state=other->state;
+       avis=other->avis;
+       used=other->used;
+       icon->copy(other->icon);
+       action=other->action;
+       setVisibility (other->isVisibleObj() );
+}
+
+void FlagObj::move(double x, double y)
+{
+    MapObj::move(x,y);
+       icon->setPos(x,y);
+       positionBBox();
+}
+
+void FlagObj::moveBy(double x, double y)
+{
+    move (x+absPos.x(),y+absPos.y() );
+}
+
+void FlagObj::setVisibility (bool v)
+{
+    MapObj::setVisibility(v);
+       if (v && state)
+           icon->setVisibility(true);
+       else
+           icon->setVisibility(false);
+}
+
+void FlagObj::load (const QString &fn)
+{
+       icon->load(fn);
+       calcBBoxSize();
+       positionBBox();
+}
+
+void FlagObj::load (const QPixmap &pm)
+{
+       icon->load(pm);
+       calcBBoxSize();
+       positionBBox();
+}
+
+void FlagObj::setName(const QString &n)
+{
+       name=n;
+}
+
+const QString FlagObj::getName()
+{
+       return name;
+}
+
+void FlagObj::setGroup (const QString &n)
+{
+       group=n;
+}
+
+const QString FlagObj::getGroup()
+{
+       return group;
+}
+
+void FlagObj::unsetGroup()
+{
+       group="undefined";
+}
+
+void FlagObj::setToolTip(const QString &n)
+{
+       tooltip=n;
+}
+
+const QString FlagObj::getToolTip()
+{
+       return tooltip;
+}
+
+QPixmap FlagObj::getPixmap()
+{
+       return icon->pixmap();
+}
+
+void FlagObj::setAction (QAction* a)
+{
+       action=a;
+}
+
+void FlagObj::updateAction ()
+{
+       if (action) 
+       {
+               action->setChecked(state);
+               if (!avis)
+                       action->setVisible(state);
+       }
+}
+
+void FlagObj::setAlwaysVisible(bool b)
+{
+       avis=b;
+}
+
+bool FlagObj::isAlwaysVisible()
+{
+       return avis;
+}
+
+bool FlagObj::isActive()
+{
+       return state;
+}
+
+void FlagObj::toggle()
+{
+       if (state)
+               deactivate();
+       else
+               activate();
+}
+
+void FlagObj::activate()
+{
+       state=true;
+       // only show icon, if flag itself is visible 
+       if (visible) 
+       {
+               icon->setVisibility (true);
+               //icon->setPos (100,100);
+               //icon->setPos (rand()%100,rand()%130);
+               calcBBoxSize();
+       }       
+}
+
+void FlagObj::deactivate()
+{
+       state=false;
+       // if flag itself is invisible we don't need to call 
+       if (visible) 
+       {
+               icon->setVisibility (false);
+               calcBBoxSize();
+       }       
+}
+
+void FlagObj::setUsed (bool b)
+{
+       used=b;
+}
+
+bool FlagObj::isUsed()
+{
+       return used;
+}
+
+void FlagObj::saveToDir (const QString &tmpdir, const QString &prefix)
+{
+       QString fn=tmpdir + prefix + name + ".png";
+       icon->save (fn,"PNG");
+}
+
+void FlagObj::positionBBox()
+{
+    bbox.moveTopLeft (absPos );
+    clickBox.moveTopLeft (absPos );
+}
+
+void FlagObj::calcBBoxSize()
+{
+       if (visible && state)
+       {
+               bbox.setSize (  QSizeF(
+                       icon->boundingRect().width(), 
+                       icon->boundingRect().height() ) );
+       } else
+       {
+               bbox.setSize (QSizeF(0,0));
+       }
+       clickBox.setSize (bbox.size());
+}
+
diff --git a/flagobj.h b/flagobj.h
new file mode 100644 (file)
index 0000000..6f29def
--- /dev/null
+++ b/flagobj.h
@@ -0,0 +1,65 @@
+#ifndef FLAGOBJ_H
+#define FLAGOBJ_H
+
+
+#include <QAction>
+#include <QPixmap>
+
+#include "mapobj.h"
+#include "imageobj.h"
+
+/*! \brief One flag which is visible in the map. 
+
+    Flags are aligned in a row. 
+*/
+
+
+/////////////////////////////////////////////////////////////////////////////
+class FlagObj:public MapObj {
+public:
+    FlagObj ();
+    FlagObj (QGraphicsScene*);
+    FlagObj (FlagObj*);
+    ~FlagObj ();
+    virtual void init ();
+    virtual void copy (FlagObj*);
+    virtual void move (double x,double y);      // move to absolute Position
+    virtual void moveBy (double x,double y);    // move to relative Position
+    virtual void setVisibility(bool);
+       void load (const QString&);
+       void load (const QPixmap&);
+       void setName (const QString&);
+       const QString getName ();
+       void setGroup (const QString&);
+       const QString getGroup();
+       void unsetGroup ();
+       void setToolTip(const QString&);
+       const QString getToolTip();
+       QPixmap getPixmap();
+       void setAction(QAction*);
+       void updateAction ();
+       void setAlwaysVisible (bool b);
+       bool isAlwaysVisible ();
+       bool isActive();
+       void toggle();
+       void activate();
+       void deactivate();
+       void setUsed (bool);
+       bool isUsed();
+       void saveToDir (const QString&, const QString&);
+       
+protected:     
+       QString name;
+       QString group;
+       QString tooltip;
+       bool state;
+       bool avis;
+       bool used;
+    virtual void positionBBox();
+    virtual void calcBBoxSize();
+private:
+       ImageObj* icon;
+       QAction* action;
+};
+
+#endif
diff --git a/flagrowobj.cpp b/flagrowobj.cpp
new file mode 100644 (file)
index 0000000..d481b88
--- /dev/null
@@ -0,0 +1,327 @@
+#include "flagrowobj.h"
+#include "geometry.h"
+
+#include <QToolBar>
+
+/////////////////////////////////////////////////////////////////
+// FlagRowObj
+/////////////////////////////////////////////////////////////////
+FlagRowObj::FlagRowObj()
+{
+//    cout << "Const FlagRowObj ()\n";
+    init ();
+}
+
+FlagRowObj::FlagRowObj(QGraphicsScene* s):MapObj(s) 
+{
+//    cout << "Const FlagRowObj (s)\n";
+    init ();
+}
+
+FlagRowObj::~FlagRowObj()
+{
+       //cout << "Destr FlagRowObj\n";
+       while (!flag.isEmpty())
+               delete (flag.takeFirst() );
+}
+
+void FlagRowObj::init ()
+{
+       parentRow=NULL;
+       showFlags=true;
+}
+
+void FlagRowObj::copy (FlagRowObj* other)
+{
+    MapObj::copy(other);
+       parentRow=other->parentRow;
+       flag.clear();
+       for (int i=0; i<flag.size(); ++i)
+               addFlag (flag.at(i));
+}
+
+void FlagRowObj::clone (FlagRowObj* pr)
+{
+       // Difference to copy:
+       // We don't copy the flags here, they
+       // are created on the fly by toggle and activate
+       // This saves lots of canvas objects.
+       MapObj::copy(pr);
+       flag.clear();
+       parentRow=pr;
+}
+
+void FlagRowObj::move(double x, double y)
+{
+    MapObj::move(x,y);
+       qreal dx=0;
+       for (int i=0; i<flag.size(); ++i)
+       {
+               flag.at(i)->move(x+dx,y);
+               dx+=QSizeF(flag.at(i)->getSize() ).width();
+       }
+}
+
+void FlagRowObj::moveBy(double x, double y)
+{
+    move (x+absPos.x(),y+absPos.y() );
+}
+
+void FlagRowObj::setVisibility (bool v)
+{
+       MapObj::setVisibility(v);
+       for (int i=0; i<flag.size(); ++i)
+               flag.at(i)->setVisibility (v);
+}
+
+FlagObj* FlagRowObj::addFlag (FlagObj *fo)
+{
+       FlagObj *newfo=new FlagObj (scene);
+       newfo->copy (fo);       // create a deep copy of fo
+       newfo->move (absPos.x() + bbox.width(), absPos.y() );
+       flag.append(newfo);
+       calcBBoxSize();
+       positionBBox();
+       return newfo;
+}
+
+void FlagRowObj::positionBBox()
+{
+    bbox.moveTopLeft(absPos );
+    clickBox.moveTopLeft(absPos );
+}
+
+void FlagRowObj::calcBBoxSize()
+{
+       QSizeF size(0,0);
+       QSizeF boxsize(0,0);
+       for (int i=0; i<flag.size(); ++i)
+       {
+               size=flag.at(i)->getSize();
+               // add widths
+               boxsize.setWidth(boxsize.width() + size.width() );
+               // maximize height
+               if (size.height() > boxsize.height() ) 
+                       boxsize.setHeight(size.height() );
+       }
+       bbox.setSize (boxsize);
+       clickBox.setSize (boxsize);
+}
+
+QString FlagRowObj::getFlagName (const QPointF &p)
+{
+       if (!inBox (p,clickBox)) return "";
+       for (int i=0; i<flag.size(); ++i)
+               if (inBox (p,flag.at(i)->getClickBox ())) return flag.at(i)->getName();
+       return "";      
+
+       
+}
+
+bool FlagRowObj::isActive (const QString &foname)
+{
+       FlagObj *fo=findFlag (foname);
+       if (parentRow && fo)
+               return fo->isActive();
+       else
+               if (fo) return true;
+       return false;
+}
+
+void FlagRowObj::toggle (const QString &foname, bool exclusive)
+{
+       FlagObj *fo=findFlag (foname);
+       if (fo)
+       {
+               // FlagObj is here, it will be active, too.
+               // Deactivate it by removing it from this row.
+               flag.remove (fo);
+               delete (fo);
+       } else
+       {
+               // FlagObj is not present in this row.
+               // Copy it from parentRow
+               fo=parentRow->findFlag (foname);
+               if (fo)
+               {
+                       fo=addFlag (fo);
+                       fo->activate();
+                       if (exclusive) 
+                       {
+                               deactivateGroup (fo);
+                               updateToolbar();
+                       }
+               } else
+                       qWarning ("FlagRowObj ("+name+")::toggle ("+foname+")  failed - could not find it in parentRow");
+       }       
+       calcBBoxSize();
+       positionBBox(); 
+}
+
+void FlagRowObj::activate (const QString &foname)
+{
+       // Note: "activate" is also called during loading of a map
+       // Here we do not check for exclusive flags!
+       FlagObj *fo=findFlag (foname);
+       if (parentRow)
+       {
+               if (!fo)
+               {
+                       // FlagObj is not present in this row.
+                       // Copy it from parentRow and activate there
+                       fo=parentRow->findFlag (foname);
+                       if (fo)
+                       {
+                               fo=addFlag (fo);
+                               fo->activate();
+                               if (showFlags) 
+                                       fo->setVisibility (visible);
+                               else
+                                       fo->setVisibility (false);
+                               calcBBoxSize();
+                       } else
+                               qWarning ("FlagRowObj ("+name+")::activate ("+foname+")  failed - could not find it in parentRow");
+               }       
+       } else
+       {
+               // I am the parentRow, mark flag as used
+               if (fo)
+               {
+                       fo->setUsed(true);
+                       fo->activate();
+               }       
+               else
+                       qWarning ("FlagRowObj::activate no FlagObj \""+foname+"\" found in parentRow");
+       }
+}
+
+
+void FlagRowObj::deactivate (const QString &foname)
+{
+       FlagObj *fo=findFlag (foname);
+       if (fo) 
+       {
+               flag.remove(fo);
+               delete (fo);
+       }       
+       calcBBoxSize();
+       positionBBox();
+}
+
+void FlagRowObj::deactivateAll ()
+{
+       if (!parentRow)
+       {
+               for (int i=0; i<flag.size(); ++i)
+                       if (flag.at(i)->isActive()) flag.at(i)->deactivate();
+       } else
+       {
+               while (!flag.isEmpty())
+                       delete flag.takeFirst();
+               calcBBoxSize();
+               positionBBox();
+       }
+}
+
+void FlagRowObj::deactivateGroup (FlagObj *keepfo)
+{
+       // deactivate all flags in keepof, but keep keepfo [sic!]
+       if (keepfo)
+       {
+               QString g=keepfo->getGroup();
+               if (g!="undefined")
+               {
+                       for (int i=0; i<flag.size(); ++i)
+                               if (g==flag.at(i)->getGroup() && keepfo!=flag.at(i)) 
+                               {
+                                       FlagObj *fo=flag.at(i);
+                                       flag.remove (fo);
+                                       delete (fo);
+                               }       
+               }               
+       }       
+}
+
+void FlagRowObj::setToolBar(QToolBar *tb)
+{
+       toolbar=tb;
+}
+
+void FlagRowObj::setEnabled (bool b)
+{
+       if (toolbar)
+       {
+               toolbar->setEnabled (b);
+       }
+}
+
+void FlagRowObj::setShowFlags (bool b)
+{
+       showFlags=b;
+}
+
+void FlagRowObj::resetUsedCounter()
+{
+       for (int i=0; i<flag.size(); ++i)
+               flag.at(i)->setUsed (false);
+}
+
+QString FlagRowObj::saveToDir (const QString &tmpdir,const QString &prefix, bool writeflags)
+{
+       // Build xml string
+       QString s;
+       if (parentRow)
+               for (int i=0; i<flag.size(); ++i)
+               {
+                       // save flag to xml, if flag is set 
+                       s+=valueElement("standardflag",flag.at(i)->getName() );
+
+                       // and tell parentRow, that this flag is used
+                       parentRow->activate(flag.at(i)->getName() );
+               }       
+       else
+               // Save icons to dir, if verbose is set (xml export)
+               // and I am a parentRow 
+               // and this flag is really used somewhere
+               if (writeflags)
+                       for (int i=0; i<flag.size(); ++i)
+                               if (flag.at(i)->isUsed()) flag.at(i)->saveToDir (tmpdir,prefix);
+       return s;               
+
+}
+
+void FlagRowObj::setName (const QString &n)
+{
+       name=n;
+}
+
+void  FlagRowObj::updateToolbar()
+{
+       if (parentRow)
+       {
+               // We are just a branch, not the toolbar default
+               // but state has to be copied from ourselves to parentrow!
+               parentRow->deactivateAll();
+               // In parentRow activate all existing (==active) flags
+               for (int i=0; i<flag.size(); ++i)
+                       parentRow->activate(flag.at(i)->getName());
+               parentRow->updateToolbar();     
+       } else
+       {
+               // We are the toolbar default
+               if (toolbar)
+               {
+                       // Update state of actions in toolbar
+                       for (int i=0; i<flag.size(); ++i)
+                               flag.at(i)->updateAction();
+               }       
+       }
+}
+
+FlagObj* FlagRowObj::findFlag (const QString &name)
+{
+       for (int i=0; i<flag.size(); ++i)
+               if (flag.at(i)->getName()==name) return flag.at(i);
+       return NULL;
+}
+
diff --git a/flagrowobj.h b/flagrowobj.h
new file mode 100644 (file)
index 0000000..317e44c
--- /dev/null
@@ -0,0 +1,52 @@
+#ifndef FLAGROWOBJ_H
+#define FLAGROWOBJ_H
+
+#include <QMainWindow>
+
+#include "mapobj.h"
+#include "flagobj.h"
+
+/*! \brief A collection of flags (FlagObj). 
+
+   The flags are aligned horizontally  in a row on the map. 
+   A toolbar can be created from the flags in this row.
+ */
+
+class FlagRowObj:public MapObj {
+public:
+    FlagRowObj ();
+    FlagRowObj (QGraphicsScene *);
+    ~FlagRowObj ();
+    virtual void init ();
+    virtual void copy (FlagRowObj*);
+    virtual void clone(FlagRowObj*);
+    virtual void move   (double,double);
+    virtual void moveBy (double,double);
+    virtual void setVisibility(bool);
+    virtual FlagObj* addFlag (FlagObj *fo);                    // make deep copy of FlagObj
+    virtual void positionBBox();
+    virtual void calcBBoxSize();
+       virtual QString getFlagName (const QPointF &p); // Find flag by position
+       bool isActive(const QString&);
+       void toggle (const QString&,bool);
+       void activate(const QString&);
+       void deactivate(const QString&);
+       void deactivateAll();
+       void deactivateGroup(FlagObj *);
+       void setToolBar (QToolBar *);
+       void setEnabled (bool);
+       void setShowFlags (bool);
+       void resetUsedCounter();
+       QString saveToDir (const QString &,const QString &,bool);
+       void setName (const QString&);                  // prefix for exporting flags to dir
+       void makeToolbar (QMainWindow*, const QString &);       // Create Toolbar buttons
+       void updateToolbar();                                   // Update Toolbar buttons       
+private:       
+       FlagRowObj* parentRow;                                  // look for flags in this row
+       FlagObj* findFlag (const QString&);
+    QList <FlagObj*> flag; 
+       QToolBar *toolbar;
+       QString name;
+       bool showFlags;                                                 // FloatObjects want to hide their flags
+};
+#endif
diff --git a/flags/flag-arrow-2down.png b/flags/flag-arrow-2down.png
new file mode 100644 (file)
index 0000000..4354fa0
Binary files /dev/null and b/flags/flag-arrow-2down.png differ
diff --git a/flags/flag-arrow-2up.png b/flags/flag-arrow-2up.png
new file mode 100644 (file)
index 0000000..b166c7a
Binary files /dev/null and b/flags/flag-arrow-2up.png differ
diff --git a/flags/flag-arrow-down.png b/flags/flag-arrow-down.png
new file mode 100644 (file)
index 0000000..ea9c00c
Binary files /dev/null and b/flags/flag-arrow-down.png differ
diff --git a/flags/flag-arrow-up.png b/flags/flag-arrow-up.png
new file mode 100644 (file)
index 0000000..d6c2b99
Binary files /dev/null and b/flags/flag-arrow-up.png differ
diff --git a/flags/flag-cross-red.png b/flags/flag-cross-red.png
new file mode 100644 (file)
index 0000000..8074159
Binary files /dev/null and b/flags/flag-cross-red.png differ
diff --git a/flags/flag-exclamationmark.png b/flags/flag-exclamationmark.png
new file mode 100644 (file)
index 0000000..c15b7b9
Binary files /dev/null and b/flags/flag-exclamationmark.png differ
diff --git a/flags/flag-flash.png b/flags/flag-flash.png
new file mode 100644 (file)
index 0000000..e4574d3
Binary files /dev/null and b/flags/flag-flash.png differ
diff --git a/flags/flag-heart.png b/flags/flag-heart.png
new file mode 100644 (file)
index 0000000..084c454
Binary files /dev/null and b/flags/flag-heart.png differ
diff --git a/flags/flag-hideexport.png b/flags/flag-hideexport.png
new file mode 100644 (file)
index 0000000..725b240
Binary files /dev/null and b/flags/flag-hideexport.png differ
diff --git a/flags/flag-hook-green.png b/flags/flag-hook-green.png
new file mode 100644 (file)
index 0000000..3252a16
Binary files /dev/null and b/flags/flag-hook-green.png differ
diff --git a/flags/flag-info.png b/flags/flag-info.png
new file mode 100644 (file)
index 0000000..bb4a944
Binary files /dev/null and b/flags/flag-info.png differ
diff --git a/flags/flag-kalarm.png b/flags/flag-kalarm.png
new file mode 100644 (file)
index 0000000..e2e1745
Binary files /dev/null and b/flags/flag-kalarm.png differ
diff --git a/flags/flag-lamp.png b/flags/flag-lamp.png
new file mode 100644 (file)
index 0000000..5dd5860
Binary files /dev/null and b/flags/flag-lamp.png differ
diff --git a/flags/flag-lifebelt.png b/flags/flag-lifebelt.png
new file mode 100644 (file)
index 0000000..71f5906
Binary files /dev/null and b/flags/flag-lifebelt.png differ
diff --git a/flags/flag-note.png b/flags/flag-note.png
new file mode 100644 (file)
index 0000000..294f528
Binary files /dev/null and b/flags/flag-note.png differ
diff --git a/flags/flag-phone.png b/flags/flag-phone.png
new file mode 100644 (file)
index 0000000..e680956
Binary files /dev/null and b/flags/flag-phone.png differ
diff --git a/flags/flag-present.png b/flags/flag-present.png
new file mode 100644 (file)
index 0000000..76b65c0
Binary files /dev/null and b/flags/flag-present.png differ
diff --git a/flags/flag-questionmark.png b/flags/flag-questionmark.png
new file mode 100644 (file)
index 0000000..2b87fa8
Binary files /dev/null and b/flags/flag-questionmark.png differ
diff --git a/flags/flag-rose.png b/flags/flag-rose.png
new file mode 100644 (file)
index 0000000..6bdabc8
Binary files /dev/null and b/flags/flag-rose.png differ
diff --git a/flags/flag-scrolled-right.png b/flags/flag-scrolled-right.png
new file mode 100644 (file)
index 0000000..b0533fa
Binary files /dev/null and b/flags/flag-scrolled-right.png differ
diff --git a/flags/flag-smiley-good.png b/flags/flag-smiley-good.png
new file mode 100644 (file)
index 0000000..49d678d
Binary files /dev/null and b/flags/flag-smiley-good.png differ
diff --git a/flags/flag-smiley-omg.png b/flags/flag-smiley-omg.png
new file mode 100644 (file)
index 0000000..9e16d53
Binary files /dev/null and b/flags/flag-smiley-omg.png differ
diff --git a/flags/flag-smiley-sad.png b/flags/flag-smiley-sad.png
new file mode 100644 (file)
index 0000000..34ecdb8
Binary files /dev/null and b/flags/flag-smiley-sad.png differ
diff --git a/flags/flag-stopsign.png b/flags/flag-stopsign.png
new file mode 100644 (file)
index 0000000..355b0d6
Binary files /dev/null and b/flags/flag-stopsign.png differ
diff --git a/flags/flag-thumb-down.png b/flags/flag-thumb-down.png
new file mode 100644 (file)
index 0000000..cb963d2
Binary files /dev/null and b/flags/flag-thumb-down.png differ
diff --git a/flags/flag-thumb-up.png b/flags/flag-thumb-up.png
new file mode 100644 (file)
index 0000000..78a15e4
Binary files /dev/null and b/flags/flag-thumb-up.png differ
diff --git a/flags/flag-tmpUnscrolled-right.png b/flags/flag-tmpUnscrolled-right.png
new file mode 100644 (file)
index 0000000..86020b5
Binary files /dev/null and b/flags/flag-tmpUnscrolled-right.png differ
diff --git a/flags/flag-url-16x16.png b/flags/flag-url-16x16.png
new file mode 100644 (file)
index 0000000..a59d135
Binary files /dev/null and b/flags/flag-url-16x16.png differ
diff --git a/flags/flag-url.png b/flags/flag-url.png
new file mode 100644 (file)
index 0000000..75ca5ac
Binary files /dev/null and b/flags/flag-url.png differ
diff --git a/flags/flag-vymlink.png b/flags/flag-vymlink.png
new file mode 100644 (file)
index 0000000..5acc92b
Binary files /dev/null and b/flags/flag-vymlink.png differ
diff --git a/flags/flags.xcf b/flags/flags.xcf
new file mode 100644 (file)
index 0000000..c7675c6
Binary files /dev/null and b/flags/flags.xcf differ
diff --git a/flags/freemind/attach.png b/flags/freemind/attach.png
new file mode 100644 (file)
index 0000000..56ad0a8
Binary files /dev/null and b/flags/freemind/attach.png differ
diff --git a/flags/freemind/back.png b/flags/freemind/back.png
new file mode 100644 (file)
index 0000000..d1ac1ea
Binary files /dev/null and b/flags/freemind/back.png differ
diff --git a/flags/freemind/bell.png b/flags/freemind/bell.png
new file mode 100644 (file)
index 0000000..8afab9d
Binary files /dev/null and b/flags/freemind/bell.png differ
diff --git a/flags/freemind/bookmark.png b/flags/freemind/bookmark.png
new file mode 100644 (file)
index 0000000..67f1832
Binary files /dev/null and b/flags/freemind/bookmark.png differ
diff --git a/flags/freemind/clanbomber.png b/flags/freemind/clanbomber.png
new file mode 100644 (file)
index 0000000..16679ba
Binary files /dev/null and b/flags/freemind/clanbomber.png differ
diff --git a/flags/freemind/desktopnew.png b/flags/freemind/desktopnew.png
new file mode 100644 (file)
index 0000000..366368f
Binary files /dev/null and b/flags/freemind/desktopnew.png differ
diff --git a/flags/freemind/flag.png b/flags/freemind/flag.png
new file mode 100644 (file)
index 0000000..133e393
Binary files /dev/null and b/flags/freemind/flag.png differ
diff --git a/flags/freemind/forward.png b/flags/freemind/forward.png
new file mode 100644 (file)
index 0000000..ffe11d2
Binary files /dev/null and b/flags/freemind/forward.png differ
diff --git a/flags/freemind/gohome.png b/flags/freemind/gohome.png
new file mode 100644 (file)
index 0000000..30fbda2
Binary files /dev/null and b/flags/freemind/gohome.png differ
diff --git a/flags/freemind/help.png b/flags/freemind/help.png
new file mode 100644 (file)
index 0000000..aa35b28
Binary files /dev/null and b/flags/freemind/help.png differ
diff --git a/flags/freemind/idea.png b/flags/freemind/idea.png
new file mode 100644 (file)
index 0000000..df2a2cc
Binary files /dev/null and b/flags/freemind/idea.png differ
diff --git a/flags/freemind/kaddressbook.png b/flags/freemind/kaddressbook.png
new file mode 100644 (file)
index 0000000..8bfe4ae
Binary files /dev/null and b/flags/freemind/kaddressbook.png differ
diff --git a/flags/freemind/knotify.png b/flags/freemind/knotify.png
new file mode 100644 (file)
index 0000000..0104e72
Binary files /dev/null and b/flags/freemind/knotify.png differ
diff --git a/flags/freemind/korn.png b/flags/freemind/korn.png
new file mode 100644 (file)
index 0000000..a4e9107
Binary files /dev/null and b/flags/freemind/korn.png differ
diff --git a/flags/freemind/licq.png b/flags/freemind/licq.png
new file mode 100644 (file)
index 0000000..34f8cce
Binary files /dev/null and b/flags/freemind/licq.png differ
diff --git a/flags/freemind/mail.png b/flags/freemind/mail.png
new file mode 100644 (file)
index 0000000..beea00e
Binary files /dev/null and b/flags/freemind/mail.png differ
diff --git a/flags/freemind/password.png b/flags/freemind/password.png
new file mode 100644 (file)
index 0000000..5e86bbb
Binary files /dev/null and b/flags/freemind/password.png differ
diff --git a/flags/freemind/pencil.png b/flags/freemind/pencil.png
new file mode 100644 (file)
index 0000000..a815a24
Binary files /dev/null and b/flags/freemind/pencil.png differ
diff --git a/flags/freemind/penguin.png b/flags/freemind/penguin.png
new file mode 100644 (file)
index 0000000..0f61ec5
Binary files /dev/null and b/flags/freemind/penguin.png differ
diff --git a/flags/freemind/priority-1.png b/flags/freemind/priority-1.png
new file mode 100644 (file)
index 0000000..3130126
Binary files /dev/null and b/flags/freemind/priority-1.png differ
diff --git a/flags/freemind/priority-2.png b/flags/freemind/priority-2.png
new file mode 100644 (file)
index 0000000..9dd6b2e
Binary files /dev/null and b/flags/freemind/priority-2.png differ
diff --git a/flags/freemind/priority-3.png b/flags/freemind/priority-3.png
new file mode 100644 (file)
index 0000000..be1440c
Binary files /dev/null and b/flags/freemind/priority-3.png differ
diff --git a/flags/freemind/priority-4.png b/flags/freemind/priority-4.png
new file mode 100644 (file)
index 0000000..161c9fb
Binary files /dev/null and b/flags/freemind/priority-4.png differ
diff --git a/flags/freemind/priority-5.png b/flags/freemind/priority-5.png
new file mode 100644 (file)
index 0000000..18ef1ce
Binary files /dev/null and b/flags/freemind/priority-5.png differ
diff --git a/flags/freemind/priority-6.png b/flags/freemind/priority-6.png
new file mode 100644 (file)
index 0000000..3e93a56
Binary files /dev/null and b/flags/freemind/priority-6.png differ
diff --git a/flags/freemind/priority-7.png b/flags/freemind/priority-7.png
new file mode 100644 (file)
index 0000000..caee91d
Binary files /dev/null and b/flags/freemind/priority-7.png differ
diff --git a/flags/freemind/stop.png b/flags/freemind/stop.png
new file mode 100644 (file)
index 0000000..981c4cf
Binary files /dev/null and b/flags/freemind/stop.png differ
diff --git a/flags/freemind/warning.png b/flags/freemind/warning.png
new file mode 100644 (file)
index 0000000..afc9c9c
Binary files /dev/null and b/flags/freemind/warning.png differ
diff --git a/flags/freemind/wizard.png b/flags/freemind/wizard.png
new file mode 100644 (file)
index 0000000..93a1d91
Binary files /dev/null and b/flags/freemind/wizard.png differ
diff --git a/flags/freemind/xmag.png b/flags/freemind/xmag.png
new file mode 100644 (file)
index 0000000..32a4a15
Binary files /dev/null and b/flags/freemind/xmag.png differ
diff --git a/floatimageobj.cpp b/floatimageobj.cpp
new file mode 100644 (file)
index 0000000..99f4e9c
--- /dev/null
@@ -0,0 +1,245 @@
+#include <QImageReader>
+#include <QPixmap>
+
+#include "floatimageobj.h"
+#include "branchobj.h"
+
+/////////////////////////////////////////////////////////////////
+// FloatImageObj
+/////////////////////////////////////////////////////////////////
+
+uint FloatImageObj::saveCounter=0;             // make instance 
+
+
+FloatImageObj::FloatImageObj ():FloatObj()
+{
+//    cout << "Const FloatImageObj ()\n";
+    setParObj (this);  
+    init();
+    depth=-1;
+}
+
+FloatImageObj::FloatImageObj (QGraphicsScene* s):FloatObj(s)
+{
+ //   cout << "Const FloatImageObj (s)  called from MapCenterObj (s)\n";
+    setParObj (this);  
+    init();
+    depth=-1;
+}
+
+FloatImageObj::FloatImageObj (QGraphicsScene *s, OrnamentedObj* p):FloatObj(s,p)
+{
+ //   cout << "Const FloatImageObj (c,p)\n";
+    init();
+}
+
+FloatImageObj::~FloatImageObj ()
+{
+//     cout << "Destr FloatImageObj "<<this<<"\n";
+       delete(icon);
+}
+
+void FloatImageObj::init () 
+{
+       icon=new ImageObj (scene);
+       icon->setPos (absPos.x(), absPos.y() );
+       icon->setVisibility (true);
+       setZValue (Z_FLOATIMG);
+       bbox.setSize (QSizeF(icon->boundingRect().width(), icon->boundingRect().height()));
+       clickBox.setSize (QSizeF(icon->boundingRect().width(), icon->boundingRect().height()));filename="";
+       originalFilename="no original name available";
+       filetype="";
+       saveInMap=true;
+       useRelPos=true;
+
+       //Hide flags
+       systemFlags->setShowFlags(false);
+}
+
+void FloatImageObj::copy (FloatImageObj* other)
+{                                      
+       FloatObj::copy (other);
+       icon->copy (other->icon);
+       filetype=other->filetype;
+       filename=other->filename;
+       originalFilename=other->originalFilename;
+       saveInMap=other->saveInMap;
+    positionBBox();
+}
+
+void FloatImageObj::setZValue (const int &i)
+{
+       icon->setZValue (i);
+       zPlane=i;
+}
+
+int FloatImageObj::z ()
+{
+       return qRound (icon->zValue());
+}
+
+void FloatImageObj::load (const QPixmap &pixmap)
+{
+       icon->load(pixmap);
+       bbox.setSize (QSizeF(icon->boundingRect().width()+8, icon->boundingRect().height()+8));
+       clickBox.setSize (QSizeF(icon->boundingRect().width()+8, icon->boundingRect().height()+8));
+       positionBBox();
+       filetype="PNG";
+       filename="No filename given";
+}
+
+bool FloatImageObj::load (const QString &fn)
+{      
+       QImageReader reader (fn);
+       QImage img;
+
+       if( reader.read (&img))
+       {
+               icon->setPixmap(QPixmap::fromImage(img));
+               bbox.setSize (QSizeF(icon->boundingRect().width()+8, icon->boundingRect().height()+8));
+               positionBBox();
+               filename=fn;
+               filetype=reader.format();
+               setOriginalFilename (fn);
+               return true;
+       } else
+               return false;
+       
+}
+
+void FloatImageObj::save (const QString &fn, const QString &format)
+{      
+       icon->save (fn,qPrintable (format));
+}
+
+void FloatImageObj::setOriginalFilename(const QString & fn)
+{
+       originalFilename=fn;
+
+       // Set short name, too. Search from behind:
+       int i=originalFilename.findRev("/");
+       if (i>=0) originalFilename=originalFilename.remove (0,i+1);
+}
+
+QString FloatImageObj::getOriginalFilename()
+{
+       return originalFilename;
+}
+
+void FloatImageObj::setVisibility(bool v)
+{
+    OrnamentedObj::setVisibility(v);
+       if (v)
+           icon->setVisibility(true);
+       else
+           icon->setVisibility(false);
+}
+
+void FloatImageObj::move (double x, double y)
+{
+       FloatObj::move(x,y);
+       icon->setPos (x+4,y+4);
+    positionBBox();
+}
+
+void FloatImageObj::move (QPointF p)
+{
+       OrnamentedObj::move (p.x(),p.y());
+}
+
+void FloatImageObj::positionBBox()
+{
+       clickBox=bbox;
+}
+
+void FloatImageObj::calcBBoxSize()
+{
+       // TODO
+}
+
+QString FloatImageObj::saveToDir (const QString &tmpdir,const QString &prefix)
+{
+       if (hidden) return "";
+
+       saveCounter++;
+       
+       QString useOrientAttr;
+       if (useOrientation)
+               useOrientAttr=attribut ("useOrientation","true");
+       else    
+               useOrientAttr=attribut ("useOrientation","false");
+               
+       QString saveInMapAttr;
+       if (saveInMap)
+               saveInMapAttr=attribut ("saveInMap","true");
+       else    
+               
+               saveInMapAttr=attribut ("saveInMap","false");
+
+       QString exportAttr;
+       if (floatExport)
+               exportAttr=attribut ("floatExport","true");
+       else    
+               exportAttr=attribut ("floatExport","false");
+
+       QString zAttr=attribut ("zPlane",QString().setNum(zPlane));
+       QString url;
+
+       url="images/"+prefix+"image-" + QString().number(saveCounter,10) + ".png" ;
+
+       // And really save the image
+       icon->save (tmpdir +"/"+ url, "PNG");
+       QString nameAttr=attribut ("orgName",originalFilename);
+
+    return singleElement ("floatimage",  
+               getOrnXMLAttr() 
+               +useOrientAttr 
+               +saveInMapAttr 
+               +exportAttr  
+               +zAttr  
+               +attribut ("href",QString ("file:")+url)
+               +nameAttr
+       );      
+}
+
+void FloatImageObj::resetSaveCounter()
+{
+       saveCounter=0;
+}
+
+
+QRectF FloatImageObj::getTotalBBox()
+{
+       return bbox;
+}
+
+QRectF FloatImageObj::getBBoxSizeWithChilds()
+{
+       //TODO abstract in linkablemapobj.h, not calculated
+       return bboxTotal;
+}
+
+void FloatImageObj::calcBBoxSizeWithChilds()
+{
+       //TODO abstract in linkablemapobj.h
+}
+
+/*
+QString FloatImageObj::getSelectString()  //FIXME move to selection
+{
+       QString s;
+       if (parObj)
+       {
+               if (parObj->getDepth()==0)
+                       s= "fi:" + QString("%1").arg( ((BranchObj*)(parObj))->getFloatImageNum(this));
+               else    
+                       s= ((BranchObj*)(parObj))->getSelectString() + ",fi:" + QString("%1").arg( ((BranchObj*)(parObj))->getFloatImageNum(this));
+       } else
+               s="mc:";
+       
+       return s;
+
+}
+*/
+
diff --git a/floatimageobj.h b/floatimageobj.h
new file mode 100644 (file)
index 0000000..2f4af3d
--- /dev/null
@@ -0,0 +1,49 @@
+#ifndef FLOATIMAGEOBJ_H
+#define FLOATIMAGEOBJ_H
+
+#include "floatobj.h"
+//Added by qt3to4:
+#include <QPixmap>
+
+/*! \brief A pixmap which can be positioned freely as FlagObj  on the map.  */
+
+
+/////////////////////////////////////////////////////////////////////////////
+class FloatImageObj:public FloatObj {
+public:
+    FloatImageObj ();
+    FloatImageObj (QGraphicsScene*);
+    FloatImageObj (QGraphicsScene*, OrnamentedObj* parent);
+    ~FloatImageObj ();
+    virtual void init ();
+    virtual void copy (FloatImageObj*);
+       virtual void setZValue (const int&);
+       virtual int z();
+
+       virtual void load (const QPixmap &);
+       virtual bool load (const QString &);
+       virtual void save (const QString &, const QString&);
+       virtual void setOriginalFilename(const QString &);
+       virtual QString getOriginalFilename();
+    virtual void setVisibility(bool);      // set vis. for w
+    virtual void move (double x,double y);
+    virtual void move (QPointF);
+       virtual void positionBBox();
+       virtual void calcBBoxSize();
+       virtual QRectF getTotalBBox();                  // return BBox including childs                 
+       virtual QRectF getBBoxSizeWithChilds(); // return size of BBox including childs  
+       virtual void calcBBoxSizeWithChilds();  // calc size of  BBox including childs recursivly
+       virtual QString saveToDir(const QString &,const QString&);
+       virtual void resetSaveCounter();
+
+
+protected:
+       ImageObj *icon;
+       bool saveInMap;
+       static uint saveCounter;        // numerate the files during saveToDir
+       QString filetype;
+       QString filename;
+       QString originalFilename;
+};
+
+#endif
diff --git a/floatobj.cpp b/floatobj.cpp
new file mode 100644 (file)
index 0000000..6f9715f
--- /dev/null
@@ -0,0 +1,115 @@
+#include "floatobj.h"
+
+extern QAction* actionEditToggleFloatExport;
+
+/////////////////////////////////////////////////////////////////
+// FloatObj
+/////////////////////////////////////////////////////////////////
+
+FloatObj::FloatObj ():OrnamentedObj() 
+{
+//    cout << "Const FloatObj ()\n";
+    setParObj (this);  
+    init();
+    depth=-1;
+}
+
+FloatObj::FloatObj (QGraphicsScene* s):OrnamentedObj(s)
+{
+//     cout << "Const FloatObj (s)  called from MapCenterObj (s)\n";
+    setParObj (this);  
+    init();
+    depth=-1;
+}
+
+FloatObj::FloatObj (QGraphicsScene* s, LinkableMapObj* p):OrnamentedObj (s)
+{
+//    cout << "Const FloatObj (s,p)\n";
+    setParObj (p);     
+    depth=p->getDepth()+1;
+    init();
+}
+
+FloatObj::~FloatObj ()
+{
+//   cout << "Destr FloatObj\n";
+}
+
+void FloatObj::init () 
+{
+    setChildObj(this);
+       floatExport=true;
+       zPlane=Z_ICON;
+       setLinkStyle (LinkableMapObj::Parabel);
+       setHideLinkUnselected(true);
+}
+
+void FloatObj::copy (FloatObj* other)
+{
+       LinkableMapObj::copy (other);
+       setVisibility (other->visible);
+}
+
+void FloatObj::setZValue(const int &i)
+{
+       zPlane=i;
+}
+
+int FloatObj::zValue()
+{
+       return zPlane;
+}
+
+void FloatObj::setFloatExport(const bool& b)
+{
+       floatExport=b;
+}
+
+bool FloatObj::getFloatExport()
+{
+       return floatExport;
+}
+
+void FloatObj::move (double x, double y)
+{
+       MapObj::move(x,y);
+}
+
+void FloatObj::move (QPointF p)
+{
+       MapObj::move (p);
+}
+
+void FloatObj::setDockPos()
+{
+       parPos=absPos;
+       childPos=absPos;
+}
+
+void FloatObj::reposition()
+{
+       move2RelPos (relPos);
+       updateLink();   
+}
+
+QRectF FloatObj::getTotalBBox()
+{
+       return bbox;
+}
+
+QRectF FloatObj::getBBoxSizeWithChilds()
+{
+       return bboxTotal;
+}
+
+void FloatObj::select()
+{
+    LinkableMapObj::select();
+       LinkableMapObj::setLinkColor(parObj->getLinkColor());
+}
+
+void FloatObj::unselect()
+{
+       LinkableMapObj::unselect();
+}
+
diff --git a/floatobj.h b/floatobj.h
new file mode 100644 (file)
index 0000000..00410d8
--- /dev/null
@@ -0,0 +1,42 @@
+#ifndef FLOATOBJ_H
+#define FLOATOBJ_H
+
+#include "ornamentedobj.h"
+
+/*! \brief Base class for objects floating in the map, which means they can be positioned freely. */
+
+
+/////////////////////////////////////////////////////////////////////////////
+class FloatObj:public OrnamentedObj {
+public:
+    FloatObj ();
+    FloatObj (QGraphicsScene*);
+    FloatObj (QGraphicsScene*, LinkableMapObj* parent);
+    ~FloatObj ();
+    virtual void init ();
+    virtual void copy (FloatObj*);
+       virtual bool load (const QString&)=0;
+       virtual void setZValue(const int&);             // set zPlane
+       virtual int zValue();
+       virtual void setFloatExport (const bool &);
+       virtual bool getFloatExport ();
+
+       virtual void move (double,double);
+       virtual void move (QPointF);
+       virtual void setDockPos();
+       virtual void reposition();
+                                                                                       
+       virtual QRectF getTotalBBox();                  // return BBox including childs                 
+       virtual QRectF getBBoxSizeWithChilds(); // return size of BBox including childs  
+
+       virtual void resetSaveCounter()=0;
+
+       virtual void select();
+       virtual void unselect();
+
+protected:
+       bool floatExport;
+       int zPlane;
+};
+
+#endif
diff --git a/frameobj.cpp b/frameobj.cpp
new file mode 100644 (file)
index 0000000..c6bde5b
--- /dev/null
@@ -0,0 +1,258 @@
+#include "frameobj.h"
+
+#include <qcolor.h>
+
+/////////////////////////////////////////////////////////////////
+// FrameObj
+/////////////////////////////////////////////////////////////////
+FrameObj::FrameObj() : MapObj()
+{
+//    cout << "Const FrameObj ()\n";
+    init ();
+}
+
+FrameObj::FrameObj(QGraphicsScene *s) :MapObj(s)
+{
+//    cout << "Const FrameObj\n";
+    init ();
+}
+
+FrameObj::~FrameObj()
+{
+       clear();
+}
+
+void FrameObj::init()
+{
+    type=NoFrame;
+    padding=10;
+       borderWidth=1;
+       penColor=QColor (Qt::black);
+       brushColor=QColor (Qt::white);
+}
+
+void FrameObj::clear()
+{
+    switch (type)
+    {
+               case NoFrame:
+                       break;
+               case Rectangle:
+                       delete rectFrame;
+                       break;
+               case Ellipse:
+                       delete ellipseFrame;
+                       break;
+    }
+       type=NoFrame;
+       padding=0;
+}
+
+void FrameObj::move(double x, double y)
+{
+    switch (type)
+    {
+               case NoFrame:
+                       break;
+               case Rectangle:
+                       rectFrame->setPos (x,y);
+                       break;
+               case Ellipse:
+                       ellipseFrame->setPos (x,y);
+                       break;
+    }
+}
+
+void FrameObj::moveBy(double x, double y)
+{
+       MapObj::moveBy (x,y);
+}
+
+void FrameObj::positionBBox()
+{
+}
+
+void FrameObj::calcBBoxSize()
+{
+}
+
+void FrameObj::setRect(const QRectF &r)
+{
+       bbox=r;
+    switch (type)
+    {
+               case NoFrame:
+                       break;
+               case Rectangle:
+       //              rectFrame->prepareGeometryChange();
+                       rectFrame->setRect (QRectF(bbox.x(),bbox.y(),bbox.width(),bbox.height() ));
+                       break;
+               case Ellipse:
+       //              ellipseFrame->prepareGeometryChange();
+                       ellipseFrame->setRect (QRectF(bbox.x(),bbox.y(),bbox.width(),bbox.height() ));
+                       break;
+    }
+}
+
+void FrameObj::setPadding (const int &i)
+{
+       padding=i;
+       repaint();
+}
+
+int FrameObj::getPadding()
+{
+       if (type==NoFrame) 
+               return 0;
+       else    
+               return padding;
+}
+
+void FrameObj::setBorderWidth (const int &i)
+{
+       borderWidth=i;
+       repaint();
+}
+
+int FrameObj::getBorderWidth()
+{
+       return borderWidth;
+}
+
+FrameObj::FrameType FrameObj::getFrameType()
+{
+       return type;
+}
+
+QString FrameObj::getFrameTypeName()
+{
+    switch (type)
+    {
+               case Rectangle:
+                       return "Rectangle";
+                       break;
+               case Ellipse:
+                       return "Ellipse";
+                       break;
+               default:
+                       return "NoFrame";
+    }
+}
+
+void FrameObj::setFrameType(const FrameType &t)
+{
+       if (t!=type)
+       {
+               clear();
+               type=t;
+               switch (type)
+               {
+                       case NoFrame:
+                               break;
+                       case Rectangle:
+                               rectFrame = scene->addRect(QRectF(0,0,0,0), QPen(penColor), brushColor);
+                               rectFrame->setZValue(Z_FRAME);
+                               rectFrame->show();
+                               break;
+                       case Ellipse:
+                               ellipseFrame = scene->addEllipse(QRectF(0,0,0,0), QPen(penColor), brushColor);
+                               ellipseFrame->setZValue(Z_FRAME);
+                               ellipseFrame->show();
+                               break;
+               }
+       }
+       setVisibility (visible);
+}
+
+void FrameObj::setFrameType(const QString &t)
+{
+       if (t=="Rectangle")
+               FrameObj::setFrameType (Rectangle);
+       else if (t=="Ellipse")  
+               FrameObj::setFrameType (Ellipse);
+       else    
+               FrameObj::setFrameType (NoFrame);
+}
+
+void FrameObj::setPenColor (QColor col)
+{
+       penColor=col;
+       repaint();
+}
+
+QColor FrameObj::getPenColor ()
+{
+       return penColor;
+}
+
+void FrameObj::setBrushColor (QColor col)
+{
+       brushColor=col;
+       repaint();
+}
+
+QColor FrameObj::getBrushColor ()
+{
+       return brushColor;
+}
+
+void FrameObj::repaint()
+{
+       QPen pen;
+       pen.setColor (penColor);
+       pen.setWidth (borderWidth);
+       QBrush brush (brushColor);
+       switch (type)
+       {
+               case Rectangle:
+                       rectFrame->setPen   (pen);
+                       rectFrame->setBrush (brush);
+                       break;
+               case Ellipse:
+                       ellipseFrame->setPen   (pen);
+                       ellipseFrame->setBrush (brush);
+                       break;
+               default:
+                       break;
+       }
+}
+
+
+void FrameObj::setVisibility (bool v)
+{
+    MapObj::setVisibility(v);
+       switch (type)
+       {
+               case NoFrame:
+                       break;
+               case Rectangle:
+                       if (visible)
+                               rectFrame->show();
+                       else    
+                               rectFrame->hide();
+                       break;
+               case Ellipse:
+                       if (visible)
+                               ellipseFrame->show();
+                       else    
+                               ellipseFrame->hide();
+                       break;
+       }
+}
+
+QString FrameObj::saveToDir ()
+{
+       if (type==NoFrame) return QString();
+       QString frameTypeAttr=attribut ("frameType",getFrameTypeName());
+       QString penColAttr=attribut ("penColor",penColor.name() );
+       QString brushColAttr=attribut ("brushColor",brushColor.name() );
+       QString paddingAttr=attribut ("padding",QString::number (padding) );
+       QString borderWidthAttr=attribut ("borderWidth",QString::number (borderWidth) );
+       return singleElement (
+               "frame",frameTypeAttr + 
+               penColAttr + 
+               brushColAttr +
+               paddingAttr +
+               borderWidthAttr);
+}
+
diff --git a/frameobj.h b/frameobj.h
new file mode 100644 (file)
index 0000000..23d02de
--- /dev/null
@@ -0,0 +1,52 @@
+#ifndef FRAMEOBJ_H
+#define FRAMEOBJ_H
+
+#include "mapobj.h"
+
+
+/*! \brief This class adds a frame to a MapObj. 
+*/
+
+class FrameObj:public MapObj {
+public:
+
+       /*! \brief Supported frame types */
+       enum FrameType {NoFrame,Rectangle,Ellipse};
+
+    FrameObj();
+    FrameObj(QGraphicsScene*);
+    ~FrameObj();
+    void init();
+    void clear();
+    void move (double x,double y);    // move to absolute Position
+    void moveBy (double x,double y);  // move to relative Position
+       void positionBBox();                     
+       void calcBBoxSize();                    
+       void setRect (const QRectF &);    // set dimensions                     
+    void setPadding(const int &);
+    int getPadding();
+    void setBorderWidth (const int &);
+    int getBorderWidth ();
+    FrameType getFrameType ();
+    QString getFrameTypeName ();
+    void setFrameType (const FrameType &);
+    void setFrameType (const QString &);
+       void setPenColor (QColor);
+       QColor getPenColor ();
+       void setBrushColor (QColor);
+       QColor getBrushColor ();
+       void repaint();
+    void setVisibility(bool);
+       QString saveToDir ();
+
+private:
+    FrameType type;                    //!< Frame type
+    QGraphicsRectItem * rectFrame;
+    QGraphicsEllipseItem * ellipseFrame;
+    int padding;                                       // distance text - frame
+       int borderWidth;
+       QColor penColor;
+       QColor brushColor;
+};
+#endif
+
diff --git a/geometry.cpp b/geometry.cpp
new file mode 100644 (file)
index 0000000..14e5b1c
--- /dev/null
@@ -0,0 +1,257 @@
+#include "geometry.h"
+
+#include <math.h>
+#include <iostream>
+#include "misc.h"
+
+using namespace std;
+
+QRectF addBBox(QRectF r1, QRectF r2)
+{      
+       // Find smallest QRectF containing given rectangles
+
+       QRectF n;
+       // Set left border
+       if (r1.left() <= r2.left() )
+               n.setLeft(r1.left() );
+       else
+               n.setLeft(r2.left() );
+               
+       // Set top border               
+       if (r1.top() <= r2.top() )
+               n.setTop(r1.top() );
+       else
+               n.setTop(r2.top() );
+               
+       // Set right border
+       if (r1.right() <= r2.right() )
+               n.setRight(r2.right() );
+       else
+               n.setRight(r1.right() );
+               
+       // Set bottom 
+       if (r1.bottom() <= r2.bottom() )
+               n.setBottom(r2.bottom() );
+       else
+               n.setBottom(r1.bottom() );
+       return n;
+}
+
+bool inBox(const QPointF &p, const QRectF &box)
+{
+    if (p.x() >= box.left() && p.x() <= box.right()  
+       && p.y() <= box.bottom() && p.y() >= box.top() )
+               return true;
+    return false;      
+}
+
+QPointF normalize (const QPointF &p)
+{
+       if (p==QPointF(0,0)) return p;
+       qreal l=sqrt ( p.x()*p.x() + p.y()*p.y() );
+       return QPointF (p.x()/l,p.y()/l);
+}
+
+// Dot product of two vectors
+qreal dotProduct (const QPointF &a, const QPointF &b)
+{
+       return a.x()*b.x() + a.y()*b.y();
+}
+
+
+/* Calculate the projection of a polygon on an axis
+   and returns it as a [min, max] interval
+*/
+void ProjectPolygon(QPointF axis, QPolygonF polygon, qreal &min, qreal &max) 
+{
+    // To project a point on an axis use the dot product
+
+    qreal d = dotProduct(axis,polygon.at(0));
+    min = d;
+    max = d;
+    for (int i = 0; i < polygon.size(); i++) {
+        d= dotProduct (polygon.at(i),axis);
+        if (d < min) 
+            min = d;
+        else 
+               {
+            if (d> max) max = d;
+        }
+    }
+}
+
+/* Calculate the signed distance between [minA, maxA] and [minB, maxB]
+   The distance will be negative if the intervals overlap
+*/
+
+
+qreal intervalDistance(qreal minA, qreal maxA, qreal minB, qreal maxB) {
+    if (minA < minB) {
+        return minB - maxA;
+    } else {
+        return minA - maxB;
+    }
+}
+/*
+ Check if polygon A is going to collide with polygon B.
+ The last parameter is the *relative* velocity 
+ of the polygons (i.e. velocityA - velocityB)
+
+*/
+PolygonCollisionResult PolygonCollision(QPolygonF polygonA, 
+                              QPolygonF polygonB, QPointF velocity) {
+    PolygonCollisionResult result;
+    result.intersect = true;
+    result.willIntersect = true;
+
+    int edgeCountA = polygonA.size();
+    int edgeCountB = polygonB.size();
+    qreal minIntervalDistance = 1000000000;
+    QPointF translationAxis;
+    QPointF edge;
+
+       cout << "\nA: ";
+       for (int k=0; k<edgeCountA;k++)
+               cout <<polygonA.at(k);
+       cout << "\nB: ";
+       for (int k=0; k<edgeCountB;k++)
+               cout <<polygonB.at(k);
+               
+               
+    // Loop through all the edges of both polygons
+       int i=0;
+       int j=0;
+       while (i<edgeCountA && j<edgeCountB)
+       {
+        if (i< edgeCountA) 
+               {
+                       if (i<edgeCountA - 1)
+                               edge = QPointF (
+                                       polygonA.at(i+1).x()-polygonA.at(i).x(), 
+                                       polygonA.at(i+1).y()-polygonA.at(i).y());
+                       else            
+                               edge = QPointF (
+                                       polygonA.at(0).x()-polygonA.at(i).x(), 
+                                       polygonA.at(0).y()-polygonA.at(i).y());
+                       i++;            
+        } else 
+               {
+                       if (i < edgeCountB -1)
+                               edge = QPointF (
+                                       polygonB.at(j+1).x() - polygonA.at(i).x(), 
+                                       polygonB.at(j+1).y() - polygonA.at(i).y());
+                       else    
+                               edge = QPointF (
+                                       polygonB.at(0).x() - polygonA.at(i).x(), 
+                                       polygonB.at(0).y() - polygonA.at(i).y());
+                       j++;
+               }
+
+        // ===== 1. Find if the polygons are currently intersecting =====
+
+
+        // Find the axis perpendicular to the current edge
+
+        QPointF axis (-edge.y(), edge.x());
+        axis=normalize(axis);
+
+        // Find the projection of the polygon on the current axis
+
+        qreal minA = 0; qreal minB = 0; qreal maxA = 0; qreal maxB = 0;
+        ProjectPolygon(axis, polygonA, minA, maxA);
+        ProjectPolygon(axis, polygonB, minB, maxB);
+
+        // Check if the polygon projections are currentlty intersecting
+
+        if (intervalDistance(minA, maxA, minB, maxB) > 0)
+            result.intersect = false;
+               else    
+            result.intersect = true;
+
+        // ===== 2. Now find if the polygons *will* intersect =====
+
+
+        // Project the velocity on the current axis
+
+        qreal velocityProjection = dotProduct(axis,velocity);
+
+        // Get the projection of polygon A during the movement
+
+        if (velocityProjection < 0) 
+            minA += velocityProjection;
+        else 
+            maxA += velocityProjection;
+        
+
+        // Do the same test as above for the new projection
+
+        qreal d = intervalDistance(minA, maxA, minB, maxB);
+        if (d > 0) result.willIntersect = false;
+               /*
+               */
+               cout <<"   ";
+               cout <<"minA="<<minA<<"  ";
+               cout <<"maxA="<<maxA<<"  ";
+               cout <<"minB="<<minB<<"  ";
+               cout <<"maxB="<<maxB<<"  ";
+               cout <<"  d="<<d<<"   ";
+               cout <<"minD="<<minIntervalDistance<<"  ";
+               cout <<"axis="<<axis<<"  ";
+               cout <<"int="<<result.intersect<<"  ";
+               cout <<"wint="<<result.willIntersect<<"  ";
+               //cout <<"velProj="<<velocityProjection<<"  ";
+               cout <<endl;
+
+
+       
+        if (result.intersect || result.willIntersect) 
+               {
+                       // Check if the current interval distance is the minimum one. If so
+                       // store the interval distance and the current distance.  This will
+                       // be used to calculate the minimum translation vector
+
+                       if (d<0) d=-d;
+                       if (d < minIntervalDistance) {
+                               minIntervalDistance = d;
+                               translationAxis = axis;
+                               cout << "tAxix="<<translationAxis<<endl;
+
+                               //QPointF t = polygonA.Center - polygonB.Center;
+                               QPointF t = polygonA.at(0) - polygonB.at(0);
+                               if (dotProduct(t,translationAxis) < 0)
+                                       translationAxis = -translationAxis;
+                       }
+               }
+    }
+
+    // The minimum translation vector
+    // can be used to push the polygons appart.
+
+    if (result.willIntersect)
+        result.minTranslation = 
+               translationAxis * minIntervalDistance;
+    
+    return result;
+}
+
+/* The function can be used this way: 
+   QPointF polygonATranslation = new QPointF();
+*/   
+
+
+/*
+PolygonCollisionResult r = PolygonCollision(polygonA, polygonB, velocity);
+
+if (r.WillIntersect) 
+  // Move the polygon by its velocity, then move
+  // the polygons appart using the Minimum Translation Vector
+  polygonATranslation = velocity + r.minTranslation;
+else 
+  // Just move the polygon by its velocity
+  polygonATranslation = velocity;
+
+polygonA.Offset(polygonATranslation);
+
+*/
+
+
diff --git a/geometry.h b/geometry.h
new file mode 100644 (file)
index 0000000..f863a7c
--- /dev/null
@@ -0,0 +1,34 @@
+#ifndef GEOMETRY_H
+#define GEOMETRY_H
+
+#include <QPointF>
+#include <QRectF>
+#include <QPolygonF>
+
+QRectF addBBox(QRectF r1, QRectF r2);
+bool inBox(const QPointF &p, const QRectF &box);
+
+QPointF normalize (const QPointF &p);
+
+
+qreal dotProduct (const QPointF &a, const QPointF &b);
+
+class PolygonCollisionResult {
+public:
+    // Are the polygons going to intersect forward in time?
+    bool willIntersect;
+
+    // Are the polygons currently intersecting?
+    bool intersect;
+
+    // The translation to apply to the first polygon to push the polygons apart.
+    QPointF minTranslation;
+};
+
+
+void ProjectPolygon(QPointF axis, QPolygonF polygon, qreal &min, qreal &max) ;
+qreal intervalDistance(qreal minA, qreal maxA, qreal minB, qreal maxB);
+PolygonCollisionResult PolygonCollision(QPolygonF polygonA, 
+                              QPolygonF polygonB, QPointF velocity);
+
+#endif
diff --git a/headingobj.cpp b/headingobj.cpp
new file mode 100644 (file)
index 0000000..80d614a
--- /dev/null
@@ -0,0 +1,271 @@
+#include "headingobj.h"
+#include <qregexp.h>
+
+/////////////////////////////////////////////////////////////////
+// HeadingObj
+/////////////////////////////////////////////////////////////////
+HeadingObj::HeadingObj() : MapObj()
+{
+//    cout << "Const HeadingObj ()\n";
+    init ();
+}
+
+HeadingObj::HeadingObj(QGraphicsScene *s) :MapObj(s)
+{
+//    cout << "Const HeadingObj (s)\n";
+    init ();
+}
+
+HeadingObj::~HeadingObj()
+{
+//     cout << "Destr. HeadingObj "<<qPrintable(heading)<<endl;
+       while (!textline.isEmpty())
+               delete textline.takeFirst();
+}
+
+void HeadingObj::init()
+{
+    textwidth=40;
+    color=QColor ("black");
+    font=QFont();
+       heading="";
+}
+
+void HeadingObj::copy(HeadingObj *other)
+{
+    MapObj::copy (other);
+    textwidth=other->textwidth;
+    color=other->color;
+    font=other->font;
+    setText (other->text() );
+}
+
+void HeadingObj::move(double x, double y)
+{
+    MapObj::move(x,y);
+
+    qreal h;   // height of a textline
+    qreal ho;  // offset of height while drawing all lines
+
+    if (!textline.isEmpty() )
+               h=textline.first()->boundingRect().height();
+    else
+               h=2;
+    ho=0;
+       for (int i=0; i<textline.size(); ++i)
+    {
+               textline.at(i)->setPos(x,y+ho);
+               ho=ho+h;
+    }  
+}
+
+
+void HeadingObj::moveBy(double x, double y)
+{
+    move (x+absPos.x(),y+absPos.y() );
+}
+
+void HeadingObj::positionBBox()
+{
+    bbox.setX (absPos.x());
+    bbox.setY (absPos.y());
+}
+
+void HeadingObj::calcBBoxSize()
+{      
+       qreal w=0;
+       qreal h=0;
+       // Using Backspace an empty heading might easily be created, then there
+       // would be textline.first()==NULL This can be worked around by the following, but
+       // then no selection would be visible, thus we prevent it in ::setText()
+       if (!textline.isEmpty() )
+       {
+               for (int i=0; i<textline.size(); i++)
+               {
+                       h+=textline.at(i)->boundingRect().height();
+                       if (w<textline.at(i)->boundingRect().width() )
+                               w=textline.at(i)->boundingRect().width();
+               }       
+       } 
+    bbox.setSize (QSizeF(w,h));
+}
+
+//QGraphicsSimpleTextItem* HeadingObj::newLine(QString s)
+QGraphicsTextItem* HeadingObj::newLine(QString s)
+{
+    //QGraphicsSimpleTextItem *t=new QGraphicsSimpleTextItem (s,0,scene);
+    QGraphicsTextItem *t=new QGraphicsTextItem (s,0,scene);
+    t->setFont (font);
+    t->setZValue(Z_TEXT);
+       // TextItem
+    t->setDefaultTextColor(color);
+       // SimpleTextItem
+    //t->setBrush(color);
+    return t;
+}
+
+void HeadingObj::setText (QString s)
+{
+    heading=s;
+
+    // remove old textlines and prepare generating new ones
+       while (!textline.isEmpty())
+               delete textline.takeFirst();
+
+       if (s.startsWith("<html>"))
+       {
+               QGraphicsTextItem *t=new QGraphicsTextItem ();
+               t->setFont (font);
+               t->setZValue(Z_TEXT);
+               t->setHtml (s);
+               t->setDefaultTextColor(color);
+               scene->addItem (t);
+               textline.append (t);
+               setVisibility (visible);
+               move (absPos.x(),absPos.y());
+               calcBBoxSize();
+               return;
+       }
+
+       // prevent empty textline, so at least a small selection stays
+       // visible for this heading
+       if (s.length()==0) s="  ";
+
+    int i=0;   // index for actual search for ws
+    int j=0;   // index of last ws
+       int k=0;        // index of "<br>" or similar linebreak
+       int br=0;       // width of found break, e.g. for <br> it is 4
+       QRegExp re("<br.*/>");
+       re.setMinimal (true);
+
+    // set the text and wrap lines
+    while (s.length()>0)
+    {
+               // ok, some people wanted manual linebreaks, here we go
+               k=re.search (s,i);
+               if (k>=0)
+               {
+                       br=re.cap(0).length();
+                       i=k;
+               } else
+                       i=s.find (" ",i,false);
+               if (i<0 && j==0)
+               {   // no ws found at all in s
+                       // append whole s
+                       textline.append (newLine(s));
+                       s="";
+               } else
+               {
+                       if (i<0 && j>0)
+                       {       // no ws found in actual search
+                               if (s.length()<=textwidth)
+                               {
+                                       textline.append (newLine(s));
+                                       s="";
+                               } else
+                               {
+                                       textline.append (newLine(s.left(j)));
+                                       s=s.mid(j+1,s.length());
+                                       j=0;
+                               }                   
+                       } else
+                       {
+                               if (i>= 0 && i<=static_cast <int> (textwidth))
+                               {   // there is a ws in textwidth
+                                       if (br>0)
+                                       {
+                                               // here is a linebreak
+                                               textline.append (newLine(s.left(i)));
+                                               s=s.mid(i+br,s.length());
+                                               i=0;
+                                               j=0;
+                                               br=0;
+                                       } else
+                                       {
+                                               j=i;
+                                               i++;
+                                       }
+                               } else
+                               {
+                                       if (i>static_cast <int> (textwidth)  )
+                                       {       
+                                               if (j>0)
+                                               {   // a ws out of textwidth, but we have also one in
+                                                       textline.append (newLine(s.left(j)));
+                                                       s=s.mid(j+1,s.length());
+                                                       i=0;
+                                                       j=0;
+                                               } else
+                                               {   // a ws out of text, but none in
+                                                       textline.append (newLine(s.left(i)));
+                                                       s=s.mid(i+1,s.length());
+                                                       i=0;
+                                               }
+                                       }
+                               } 
+                       }         
+               }                   
+    }
+       setVisibility (visible);
+       move (absPos.x(),absPos.y());
+       calcBBoxSize();
+}
+
+QString HeadingObj::text ()
+{
+    return heading;
+}
+
+void HeadingObj::setFont (QFont f)
+{
+    if (font!=f) 
+    {
+               font=f;
+               setText (text());
+    }
+}
+
+QFont HeadingObj::getFont()
+{
+    return font;
+}    
+       
+       
+void HeadingObj::setColor (QColor c)
+{
+    if (color!=c)
+    {
+               color=c;
+               for (int i=0; i<textline.size(); ++i)
+                       // TextItem
+                       textline.at(i)->setDefaultTextColor(c);
+                       // SimpleTextItem
+                       //textline.at(i)->setBrush(c);
+    }      
+}
+
+QColor HeadingObj::getColor()
+{
+    return color;
+}    
+
+void HeadingObj::setVisibility (bool v)
+{
+    MapObj::setVisibility(v);
+       for (int i=0; i<textline.size(); ++i)
+               if (v)
+                       textline.at(i)->show();
+               else
+                       textline.at(i)->hide();
+}
+
+qreal HeadingObj::getHeight ()
+{
+       return bbox.height();
+}
+
+qreal HeadingObj::getWidth()
+{
+       return bbox.width();
+}
+
diff --git a/headingobj.h b/headingobj.h
new file mode 100644 (file)
index 0000000..096710e
--- /dev/null
@@ -0,0 +1,41 @@
+#ifndef HEADINGOBJ_H
+#define HEADINGOBJ_H
+
+#include "mapobj.h"
+
+/*! \brief The heading of an OrnamentedObj */
+
+class HeadingObj:public MapObj {
+public:
+    HeadingObj();
+    HeadingObj(QGraphicsScene*);
+    virtual ~HeadingObj();
+    virtual void init();
+    virtual void copy(HeadingObj*);
+    virtual void move (double x,double y);      // move to absolute Position
+    virtual void moveBy (double x,double y);    // move to relative Position
+    virtual void positionBBox();
+       virtual void calcBBoxSize();
+private:
+//    QGraphicsSimpleTextItem* newLine(QString);               // generate new textline
+    QGraphicsTextItem* newLine(QString);               // generate new textline
+public:    
+    virtual void setText(QString);
+    virtual QString text();
+    virtual void setFont(QFont);
+    virtual QFont getFont();
+    virtual void setColor(QColor);
+    virtual QColor getColor();
+    virtual void setVisibility(bool);
+       virtual qreal getHeight();
+       virtual qreal getWidth();
+
+protected:
+    QString heading;
+    int textwidth;                                                             // width for formatting text
+//    QList <QGraphicsSimpleTextItem*> textline;       // a part of e.g. the parabel
+    QList <QGraphicsTextItem*> textline;       // a part of e.g. the parabel
+    QColor color;
+    QFont font;
+};
+#endif
diff --git a/highlighter.cpp b/highlighter.cpp
new file mode 100644 (file)
index 0000000..1de9146
--- /dev/null
@@ -0,0 +1,179 @@
+/****************************************************************************
+**
+** Copyright (C) 2005-2006 Trolltech ASA. All rights reserved.
+**
+** This file is part of the example classes of the Qt Toolkit.
+**
+** This file may be used under the terms of the GNU General Public
+** License version 2.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of
+** this file.  Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+** http://www.trolltech.com/products/qt/opensource.html
+**
+** If you are unsure which license is appropriate for your use, please
+** review the following information:
+** http://www.trolltech.com/products/qt/licensing.html or contact the
+** sales department at sales@trolltech.com.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
+
+// highlighting rules have been adapted by Uwe Drechsel to match vym syntax
+
+
+#include <QtGui>
+
+#include "highlighter.h"
+
+Highlighter::Highlighter(QTextDocument *parent)
+    : QSyntaxHighlighter(parent)
+{
+    HighlightingRule rule;
+
+    keywordFormat.setForeground(Qt::darkBlue);
+    keywordFormat.setFontWeight(QFont::Bold);
+    QStringList keywordPatterns;
+    keywordPatterns << "\\baddBranch\\b" 
+                                       << "\\baddBranchBefore\\b" 
+                    << "\\baddMapCenter\\b" 
+                    << "\\baddMapInsert\\b" 
+                                       << "\\baddMapReplace\\b"
+                    << "\\bcolorBranch\\b" 
+                                       << "\\bcolorSubtree\\b"
+                                       << "\\bcopy\\b"
+                    << "\\bcut\\b" 
+                                       << "\\bdelete\\b" 
+                                       << "\\bdeleteKeepChilds\\b" 
+                                       << "\\bdeleteChilds\\b"
+                                       << "\\bexportASCII\\b"
+                                       << "\\bexportImage\\b"
+                                       << "\\bexportXHTML\\b"
+                                       << "\\bexportXML\\b"
+                                       << "\\bimportDir\\b"
+                                       << "\\blinkTo\\b" 
+                                       << "\\bloadImage\\b"
+                                       << "\\bmoveBranchUp\\b" 
+                                       << "\\bmoveBranchDown\\b"
+                                       << "\\bmove\\b" 
+                                       << "\\bmoveRel\\b"
+                                       << "\\bnop\\b"
+                                       << "\\bpaste\\b" 
+                                       << "\\bqa\\b" 
+                                       << "\\bsaveImage\\b" 
+                                       << "\\bscroll\\b" 
+                                       << "\\bselect\\b" 
+                                       << "\\bselectLastBranch\\b" 
+                                       << "\\bselectLastImage\\b"
+                                       << "\\bselectLatestAdded\\b"
+                                       << "\\bsetFrameType\\b" 
+                                       << "\\bsetFramePenColor\\b" 
+                                       << "\\bsetFrameBrushColor\\b" 
+                                       << "\\bsetFramePadding\\b" 
+                                       << "\\bsetFrameBorderWidth\\b" 
+                                       << "\\bsetHideLinkUnselected\\b" 
+                                       << "\\bsetMapAuthor\\b" 
+                                       << "\\bsetMapComment\\b" 
+                                       << "\\bsetMapBackgroundColor\\b" 
+                                       << "\\bsetMapDefLinkColor\\b" 
+                                       << "\\bsetMapDefLinkStyle\\b" 
+                                       << "\\bsetHeading\\b" 
+                                       << "\\bsetHideExport\\b" 
+                                       << "\\bsetIncludeImagesHorizontally\\b" 
+                                       << "\\bsetIncludeImagesVertically\\b" 
+                                       << "\\bsetURL\\b" 
+                                       << "\\bsetVymLink\\b" 
+                                       << "\\bsetFlag\\b" 
+                                       << "\\bsortChildren\\b" 
+                                       << "\\btoggleFlag\\b" 
+                                       << "\\bunscroll\\b" 
+                                       << "\\bunscrollChilds\\b" 
+                                       << "\\bunsetFlag\\b" 
+                                       ;
+    foreach (QString pattern, keywordPatterns) {
+        rule.pattern = QRegExp(pattern);
+        rule.format = keywordFormat;
+        highlightingRules.append(rule);
+    }
+
+       // QT keywords
+       /*
+    classFormat.setFontWeight(QFont::Bold);
+    classFormat.setForeground(Qt::darkMagenta);
+    rule.pattern = QRegExp("\\bQ[A-Za-z]+\\b");
+    rule.format = classFormat;
+    highlightingRules.append(rule);
+       */
+
+       // Single line comments
+    singleLineCommentFormat.setForeground(Qt::red);
+    rule.pattern = QRegExp("#[^\n]*");
+    rule.format = singleLineCommentFormat;
+    highlightingRules.append(rule);
+
+       // multiline comments
+    multiLineCommentFormat.setForeground(Qt::red);
+    commentStartExpression = QRegExp("/\\*");
+    commentEndExpression = QRegExp("\\*/");
+
+       // Quotations
+    quotationFormat.setForeground(Qt::darkGreen);
+    rule.pattern = QRegExp("\".*\"");
+    rule.format = quotationFormat;
+    highlightingRules.append(rule);
+
+    QStringList valuePatterns;
+    valuePatterns << "\\btrue\\b" << "\\bfalse\\b";
+    foreach (QString pattern, valuePatterns) {
+        rule.pattern = QRegExp(pattern);
+        rule.format = quotationFormat;
+        highlightingRules.append(rule);
+    }
+
+
+
+       // Funtions
+       /*
+    functionFormat.setFontItalic(true);
+    functionFormat.setForeground(Qt::blue);
+    rule.pattern = QRegExp("\\b[A-Za-z0-9_]+(?=\\()");
+    rule.format = functionFormat;
+    highlightingRules.append(rule);
+       */
+
+}
+
+void Highlighter::highlightBlock(const QString &text)
+{
+    foreach (HighlightingRule rule, highlightingRules) {
+        QRegExp expression(rule.pattern);
+        int index = text.indexOf(expression);
+        while (index >= 0) {
+            int length = expression.matchedLength();
+            setFormat(index, length, rule.format);
+            index = text.indexOf(expression, index + length);
+        }
+    }
+    setCurrentBlockState(0);
+
+    int startIndex = 0;
+    if (previousBlockState() != 1)
+        startIndex = text.indexOf(commentStartExpression);
+
+    while (startIndex >= 0) {
+        int endIndex = text.indexOf(commentEndExpression, startIndex);
+        int commentLength;
+        if (endIndex == -1) {
+            setCurrentBlockState(1);
+            commentLength = text.length() - startIndex;
+        } else {
+            commentLength = endIndex - startIndex
+                            + commentEndExpression.matchedLength();
+        }
+        setFormat(startIndex, commentLength, multiLineCommentFormat);
+        startIndex = text.indexOf(commentStartExpression,
+                                                startIndex + commentLength);
+    }
+}
diff --git a/highlighter.h b/highlighter.h
new file mode 100644 (file)
index 0000000..b11833d
--- /dev/null
@@ -0,0 +1,63 @@
+/****************************************************************************
+**
+** Copyright (C) 2005-2006 Trolltech ASA. All rights reserved.
+**
+** This file is part of the example classes of the Qt Toolkit.
+**
+** This file may be used under the terms of the GNU General Public
+** License version 2.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of
+** this file.  Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+** http://www.trolltech.com/products/qt/opensource.html
+**
+** If you are unsure which license is appropriate for your use, please
+** review the following information:
+** http://www.trolltech.com/products/qt/licensing.html or contact the
+** sales department at sales@trolltech.com.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
+
+#ifndef HIGHLIGHTER_H
+#define HIGHLIGHTER_H
+
+#include <QSyntaxHighlighter>
+
+#include <QHash>
+#include <QTextCharFormat>
+
+class QTextDocument;
+
+class Highlighter : public QSyntaxHighlighter
+{
+    Q_OBJECT
+
+public:
+    Highlighter(QTextDocument *parent = 0);
+
+protected:
+    void highlightBlock(const QString &text);
+
+private:
+    struct HighlightingRule
+    {
+        QRegExp pattern;
+        QTextCharFormat format;
+    };
+    QVector<HighlightingRule> highlightingRules;
+
+    QRegExp commentStartExpression;
+    QRegExp commentEndExpression;
+
+    QTextCharFormat keywordFormat;
+    QTextCharFormat classFormat;
+    QTextCharFormat singleLineCommentFormat;
+    QTextCharFormat multiLineCommentFormat;
+    QTextCharFormat quotationFormat;
+    QTextCharFormat functionFormat;
+};
+
+#endif
diff --git a/historywindow.cpp b/historywindow.cpp
new file mode 100644 (file)
index 0000000..e5efe48
--- /dev/null
@@ -0,0 +1,174 @@
+#include "historywindow.h"
+#include "mainwindow.h"
+
+
+extern QString iconPath;
+extern Settings settings;
+extern Main *mainWindow;
+
+HistoryWindow::HistoryWindow (QWidget *parent):QDialog (parent)
+{
+       ui.setupUi (this);
+       ui.historyTable->setRowCount (settings.value( "/mapeditor/stepsTotal",75).toInt());
+       ui.historyTable->setColumnCount (3);
+
+       
+       QTableWidgetItem *item;
+
+       item= new QTableWidgetItem(tr("Action","Table with actions"));
+       ui.historyTable->setHorizontalHeaderItem(0, item);
+       
+       item= new QTableWidgetItem(tr("Comment","Table with actions"));
+       ui.historyTable->setHorizontalHeaderItem(1, item);
+       
+       item= new QTableWidgetItem(tr("Undo action","Table with actions"));
+       ui.historyTable->setHorizontalHeaderItem(2, item);
+
+       ui.historyTable->setSelectionBehavior (QAbstractItemView::SelectRows);
+
+       ui.undoButton->setIcon (QIcon(iconPath+"/undo.png"));
+       ui.redoButton->setIcon (QIcon(iconPath+"/redo.png"));
+
+       connect ( ui.undoButton, SIGNAL (clicked()), this, SLOT (undo()));
+       connect ( ui.redoButton, SIGNAL (clicked()), this, SLOT (redo()));
+       connect ( ui.historyTable, SIGNAL (itemSelectionChanged()), this, SLOT (select()));
+
+       // Load Settings
+
+       resize (settings.value ( "/satellite/historywindow/geometry/size", QSize(1000,400)).toSize());
+       move   (settings.value ( "/satellite/historywindow/geometry/pos", QPoint (0,450)).toPoint());
+
+       ui.historyTable->setColumnWidth (0,settings.value("/satellite/historywindow/geometry/columnWidth/0",250).toInt());
+       ui.historyTable->setColumnWidth (1,settings.value("/satellite/historywindow/geometry/columnWidth/1",350).toInt());
+       ui.historyTable->setColumnWidth (2,settings.value("/satellite/historywindow/geometry/columnWidth/2",250).toInt());
+}
+
+HistoryWindow::~HistoryWindow()
+{
+       // Save settings
+       settings.setValue( "/satellite/historywindow/geometry/size", size() );
+       settings.setValue( "/satellite/historywindow/geometry/pos", pos() );
+
+       for (int i=0; i<3; ++i)
+               settings.setValue( QString("/satellite/historywindow/geometry/columnWidth/%1").arg(i), ui.historyTable->columnWidth (i) );
+}
+
+void HistoryWindow::clearRow(int row)
+{
+       QTableWidgetItem *it;
+       it=ui.historyTable->item (row,0);
+       if (it) it->setText ("");
+       it=ui.historyTable->item (row,1);
+       if (it) it->setText ("");
+       it=ui.historyTable->item (row,2);
+       if (it) it->setText ("");
+}
+
+void HistoryWindow::updateRow(int row, int step, SimpleSettings &set)
+{
+       QTableWidgetItem *item;
+
+       item= new QTableWidgetItem(set.readEntry(QString("/history/step-%1/redoCommand").arg(step)));
+       ui.historyTable->setItem(row, 0, item);
+
+       item= new QTableWidgetItem(set.readEntry(QString("/history/step-%1/comment").arg(step)));
+       ui.historyTable->setItem(row, 1, item);
+
+       item=new QTableWidgetItem(set.readEntry(QString("/history/step-%1/undoCommand").arg(step)));
+       ui.historyTable->setItem(row, 2, item);
+}
+
+void HistoryWindow::update(SimpleSettings &set)
+{
+       int undosAvail=set.readNumEntry("/history/undosAvail",0);
+       int redosAvail=set.readNumEntry("/history/redosAvail",0);
+       int stepsTotal=set.readNumEntry("/history/stepsTotal",0);
+       int curStep=set.readNumEntry ("/history/curStep");
+       int i;
+       int s=curStep;
+       int r=undosAvail-1;
+       QTableWidgetItem *item;
+
+       // Update number of rows
+       ui.historyTable->setRowCount (undosAvail + redosAvail +1);
+
+       // Update buttons
+       if (undosAvail<1)
+               ui.undoButton->setEnabled (false);
+       else    
+               ui.undoButton->setEnabled (true);
+
+       if (redosAvail<1)
+               ui.redoButton->setEnabled (false);
+       else    
+               ui.redoButton->setEnabled (true);
+
+       // Update undos in table
+       for (i=undosAvail; i>0; i--)
+       {
+               updateRow (r,s,set);
+               r--;
+               s--;
+               if (s<1) s=stepsTotal;
+       }
+       
+       // Generated the "now" row
+       QColor c(255,200,120);
+       for (i=0;i<=2;i++)
+       {
+               if (i!=1)
+               {
+                       item=new QTableWidgetItem("");
+                       item->setBackgroundColor (c);
+                       ui.historyTable->setItem(undosAvail, i, item);
+               }
+       }
+       item=new QTableWidgetItem(" - " +tr("Current state","Current bar in history hwindow")+ " - ");
+       item->setBackgroundColor (c);
+       ui.historyTable->setItem(undosAvail, 1, item);
+
+       // Show "now" row
+       ui.historyTable->scrollToItem (item);
+
+       // Update Redos in table
+       s=curStep;
+       s++; if (s>stepsTotal) s=1;
+       for (i=1;i<= redosAvail; i++)
+       {
+               updateRow (undosAvail+i,s,set);
+               s++; if (s>stepsTotal) s=1;
+       }
+
+       // Delete the rest
+       for (i=undosAvail+redosAvail+1;i<= stepsTotal; i++)
+               clearRow (i);
+
+       //ui.historyTable->resizeColumnsToContents();
+}
+
+void HistoryWindow::setStepsTotal (int st)
+{
+       // Number of steps + "current" bar
+       ui.historyTable->setRowCount (st+1);
+}
+
+
+void HistoryWindow::closeEvent (QCloseEvent *)
+{
+       emit (windowClosed() );
+}
+
+void HistoryWindow::undo()
+{
+       mainWindow->editUndo();
+}
+
+void HistoryWindow::redo()
+{
+       mainWindow->editRedo();
+}
+
+void HistoryWindow::select()
+{
+       mainWindow->gotoHistoryStep (ui.historyTable->row (ui.historyTable->selectedItems().first()));
+}
diff --git a/historywindow.h b/historywindow.h
new file mode 100644 (file)
index 0000000..914bb7e
--- /dev/null
@@ -0,0 +1,39 @@
+#ifndef HISTORYWINDOW_H
+#define HISTORYWINDOW_H
+
+#include <QDialog>
+
+#include "settings.h"
+#include "ui_historywindow.h"
+
+
+/////////////////////////////////////////////////////////////////////////////
+class HistoryWindow:public QDialog
+{
+       Q_OBJECT
+
+public:
+       HistoryWindow(QWidget* parent = 0);
+       ~HistoryWindow();
+       void update (SimpleSettings &);
+       void setStepsTotal (int);
+
+protected:
+    void closeEvent( QCloseEvent* );
+
+private slots: 
+       void undo();
+       void redo();
+       void select();
+
+signals:
+       void windowClosed();
+
+private:
+       void clearRow (int);
+       void updateRow (int, int, SimpleSettings &);
+       Ui::HistoryWindow ui;
+};
+
+
+#endif
diff --git a/historywindow.ui b/historywindow.ui
new file mode 100644 (file)
index 0000000..fc72c21
--- /dev/null
@@ -0,0 +1,149 @@
+<ui version="4.0" >
+ <class>HistoryWindow</class>
+ <widget class="QDialog" name="HistoryWindow" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1160</width>
+    <height>340</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Dialog</string>
+  </property>
+  <layout class="QGridLayout" >
+   <property name="leftMargin" >
+    <number>9</number>
+   </property>
+   <property name="topMargin" >
+    <number>9</number>
+   </property>
+   <property name="rightMargin" >
+    <number>9</number>
+   </property>
+   <property name="bottomMargin" >
+    <number>9</number>
+   </property>
+   <property name="horizontalSpacing" >
+    <number>6</number>
+   </property>
+   <property name="verticalSpacing" >
+    <number>6</number>
+   </property>
+   <item row="0" column="0" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>20</width>
+       <height>40</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="2" column="0" >
+    <widget class="QPushButton" name="redoButton" >
+     <property name="text" >
+      <string>Redo</string>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="0" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>20</width>
+       <height>61</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item rowspan="4" row="0" column="1" >
+    <widget class="QTableWidget" name="historyTable" >
+     <row/>
+     <column>
+      <property name="text" >
+       <string>Time</string>
+      </property>
+     </column>
+     <column>
+      <property name="text" >
+       <string>Comment</string>
+      </property>
+     </column>
+    </widget>
+   </item>
+   <item row="1" column="0" >
+    <widget class="QPushButton" name="undoButton" >
+     <property name="text" >
+      <string>Undo</string>
+     </property>
+    </widget>
+   </item>
+   <item row="4" column="0" colspan="2" >
+    <layout class="QHBoxLayout" >
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <property name="leftMargin" >
+      <number>0</number>
+     </property>
+     <property name="topMargin" >
+      <number>0</number>
+     </property>
+     <property name="rightMargin" >
+      <number>0</number>
+     </property>
+     <property name="bottomMargin" >
+      <number>0</number>
+     </property>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>131</width>
+         <height>31</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="closeButton" >
+       <property name="text" >
+        <string>Close</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>closeButton</sender>
+   <signal>clicked()</signal>
+   <receiver>HistoryWindow</receiver>
+   <slot>close()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>369</x>
+     <y>253</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>179</x>
+     <y>282</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/icons/cursor.xcf b/icons/cursor.xcf
new file mode 100644 (file)
index 0000000..a7ae5ab
Binary files /dev/null and b/icons/cursor.xcf differ
diff --git a/icons/cursor16.xcf b/icons/cursor16.xcf
new file mode 100644 (file)
index 0000000..6e826e5
Binary files /dev/null and b/icons/cursor16.xcf differ
diff --git a/icons/cursorcolorpicker.png b/icons/cursorcolorpicker.png
new file mode 100644 (file)
index 0000000..277a4da
Binary files /dev/null and b/icons/cursorcolorpicker.png differ
diff --git a/icons/cursorcolorpicker16.png b/icons/cursorcolorpicker16.png
new file mode 100644 (file)
index 0000000..d4a4b59
Binary files /dev/null and b/icons/cursorcolorpicker16.png differ
diff --git a/icons/cursorcopy.png b/icons/cursorcopy.png
new file mode 100644 (file)
index 0000000..879ccb6
Binary files /dev/null and b/icons/cursorcopy.png differ
diff --git a/icons/cursorhandopen.png b/icons/cursorhandopen.png
new file mode 100644 (file)
index 0000000..6c430db
Binary files /dev/null and b/icons/cursorhandopen.png differ
diff --git a/icons/cursorhandopen16.png b/icons/cursorhandopen16.png
new file mode 100644 (file)
index 0000000..bc0dda5
Binary files /dev/null and b/icons/cursorhandopen16.png differ
diff --git a/icons/cursorxlink.png b/icons/cursorxlink.png
new file mode 100644 (file)
index 0000000..d8762d8
Binary files /dev/null and b/icons/cursorxlink.png differ
diff --git a/icons/down.png b/icons/down.png
new file mode 100644 (file)
index 0000000..6dce81c
Binary files /dev/null and b/icons/down.png differ
diff --git a/icons/editcopy.png b/icons/editcopy.png
new file mode 100644 (file)
index 0000000..ae1cd9f
Binary files /dev/null and b/icons/editcopy.png differ
diff --git a/icons/editcut.png b/icons/editcut.png
new file mode 100644 (file)
index 0000000..192b575
Binary files /dev/null and b/icons/editcut.png differ
diff --git a/icons/editpaste.png b/icons/editpaste.png
new file mode 100644 (file)
index 0000000..b8454f9
Binary files /dev/null and b/icons/editpaste.png differ
diff --git a/icons/editsort.png b/icons/editsort.png
new file mode 100644 (file)
index 0000000..0e85ddf
Binary files /dev/null and b/icons/editsort.png differ
diff --git a/icons/edittrash.png b/icons/edittrash.png
new file mode 100644 (file)
index 0000000..810efc4
Binary files /dev/null and b/icons/edittrash.png differ
diff --git a/icons/exit.png b/icons/exit.png
new file mode 100644 (file)
index 0000000..b266020
Binary files /dev/null and b/icons/exit.png differ
diff --git a/icons/fileclose.png b/icons/fileclose.png
new file mode 100644 (file)
index 0000000..7cb9859
Binary files /dev/null and b/icons/fileclose.png differ
diff --git a/icons/filenew.png b/icons/filenew.png
new file mode 100644 (file)
index 0000000..004ca03
Binary files /dev/null and b/icons/filenew.png differ
diff --git a/icons/filenewcopy.png b/icons/filenewcopy.png
new file mode 100644 (file)
index 0000000..7bf6b73
Binary files /dev/null and b/icons/filenewcopy.png differ
diff --git a/icons/fileopen.png b/icons/fileopen.png
new file mode 100644 (file)
index 0000000..a79982e
Binary files /dev/null and b/icons/fileopen.png differ
diff --git a/icons/fileprint.png b/icons/fileprint.png
new file mode 100644 (file)
index 0000000..a71ee28
Binary files /dev/null and b/icons/fileprint.png differ
diff --git a/icons/filesave.png b/icons/filesave.png
new file mode 100644 (file)
index 0000000..3bc2a37
Binary files /dev/null and b/icons/filesave.png differ
diff --git a/icons/filesaveas.png b/icons/filesaveas.png
new file mode 100644 (file)
index 0000000..c8d4816
Binary files /dev/null and b/icons/filesaveas.png differ
diff --git a/icons/find.png b/icons/find.png
new file mode 100644 (file)
index 0000000..20d3668
Binary files /dev/null and b/icons/find.png differ
diff --git a/icons/flag-url-16x16.png b/icons/flag-url-16x16.png
new file mode 100644 (file)
index 0000000..74a00dc
Binary files /dev/null and b/icons/flag-url-16x16.png differ
diff --git a/icons/formatcolorbranch.png b/icons/formatcolorbranch.png
new file mode 100644 (file)
index 0000000..2eb2e63
Binary files /dev/null and b/icons/formatcolorbranch.png differ
diff --git a/icons/formatcolorpicker.png b/icons/formatcolorpicker.png
new file mode 100644 (file)
index 0000000..cc2b369
Binary files /dev/null and b/icons/formatcolorpicker.png differ
diff --git a/icons/formatcolorpicker.xpm b/icons/formatcolorpicker.xpm
new file mode 100644 (file)
index 0000000..53ec969
--- /dev/null
@@ -0,0 +1,29 @@
+/* XPM */
+static const char * formatcolorpicker_xpm[] = {
+"22 22 4 1",
+"      c None",
+".     c #000000",
+"+     c #949194",
+"@     c #FFFFFF",
+"                      ",
+"                      ",
+"                      ",
+"               ...    ",
+"              .....   ",
+"              .....   ",
+"           ........   ",
+"            ......    ",
+"           +@...      ",
+"          +@@@..      ",
+"         +@@@. .      ",
+"        +@@@.         ",
+"       +@@@.          ",
+"      +@@@.           ",
+"     +@@@.            ",
+"    +@@@.             ",
+"    +@@.              ",
+"   +@..               ",
+"    .                 ",
+"                      ",
+"                      ",
+"                      "};
diff --git a/icons/formatcolorsubtree.png b/icons/formatcolorsubtree.png
new file mode 100644 (file)
index 0000000..33cf6b1
Binary files /dev/null and b/icons/formatcolorsubtree.png differ
diff --git a/icons/formatfixedfont.png b/icons/formatfixedfont.png
new file mode 100644 (file)
index 0000000..33959f8
Binary files /dev/null and b/icons/formatfixedfont.png differ
diff --git a/icons/formatvarfont.png b/icons/formatvarfont.png
new file mode 100644 (file)
index 0000000..9471335
Binary files /dev/null and b/icons/formatvarfont.png differ
diff --git a/icons/history.png b/icons/history.png
new file mode 100644 (file)
index 0000000..ea64540
Binary files /dev/null and b/icons/history.png differ
diff --git a/icons/icons.xcf b/icons/icons.xcf
new file mode 100644 (file)
index 0000000..276f6bf
Binary files /dev/null and b/icons/icons.xcf differ
diff --git a/icons/modecolor.png b/icons/modecolor.png
new file mode 100644 (file)
index 0000000..efd8395
Binary files /dev/null and b/icons/modecolor.png differ
diff --git a/icons/modecopy.png b/icons/modecopy.png
new file mode 100644 (file)
index 0000000..f18351a
Binary files /dev/null and b/icons/modecopy.png differ
diff --git a/icons/modelink.png b/icons/modelink.png
new file mode 100644 (file)
index 0000000..c606a2c
Binary files /dev/null and b/icons/modelink.png differ
diff --git a/icons/newbranch.png b/icons/newbranch.png
new file mode 100644 (file)
index 0000000..45bcf85
Binary files /dev/null and b/icons/newbranch.png differ
diff --git a/icons/redo.png b/icons/redo.png
new file mode 100644 (file)
index 0000000..6aacd4f
Binary files /dev/null and b/icons/redo.png differ
diff --git a/icons/text_block.png b/icons/text_block.png
new file mode 100644 (file)
index 0000000..60e79b5
Binary files /dev/null and b/icons/text_block.png differ
diff --git a/icons/text_bold.png b/icons/text_bold.png
new file mode 100644 (file)
index 0000000..19dc645
Binary files /dev/null and b/icons/text_bold.png differ
diff --git a/icons/text_center.png b/icons/text_center.png
new file mode 100644 (file)
index 0000000..acf20f8
Binary files /dev/null and b/icons/text_center.png differ
diff --git a/icons/text_italic.png b/icons/text_italic.png
new file mode 100644 (file)
index 0000000..d21986d
Binary files /dev/null and b/icons/text_italic.png differ
diff --git a/icons/text_left.png b/icons/text_left.png
new file mode 100644 (file)
index 0000000..88c7c7e
Binary files /dev/null and b/icons/text_left.png differ
diff --git a/icons/text_right.png b/icons/text_right.png
new file mode 100644 (file)
index 0000000..7fea4e5
Binary files /dev/null and b/icons/text_right.png differ
diff --git a/icons/text_sub.png b/icons/text_sub.png
new file mode 100644 (file)
index 0000000..8f53bea
Binary files /dev/null and b/icons/text_sub.png differ
diff --git a/icons/text_super.png b/icons/text_super.png
new file mode 100644 (file)
index 0000000..49ca8f7
Binary files /dev/null and b/icons/text_super.png differ
diff --git a/icons/text_under.png b/icons/text_under.png
new file mode 100644 (file)
index 0000000..8fccad3
Binary files /dev/null and b/icons/text_under.png differ
diff --git a/icons/undo.png b/icons/undo.png
new file mode 100644 (file)
index 0000000..d4b682b
Binary files /dev/null and b/icons/undo.png differ
diff --git a/icons/up.png b/icons/up.png
new file mode 100644 (file)
index 0000000..2db1ce6
Binary files /dev/null and b/icons/up.png differ
diff --git a/icons/viewmag+.png b/icons/viewmag+.png
new file mode 100644 (file)
index 0000000..a424b61
Binary files /dev/null and b/icons/viewmag+.png differ
diff --git a/icons/viewmag-.png b/icons/viewmag-.png
new file mode 100644 (file)
index 0000000..fc5364a
Binary files /dev/null and b/icons/viewmag-.png differ
diff --git a/icons/viewmag-reset.png b/icons/viewmag-reset.png
new file mode 100644 (file)
index 0000000..00c57ee
Binary files /dev/null and b/icons/viewmag-reset.png differ
diff --git a/icons/viewshowsel.png b/icons/viewshowsel.png
new file mode 100644 (file)
index 0000000..e08b2a5
Binary files /dev/null and b/icons/viewshowsel.png differ
diff --git a/icons/vym-128x128.png b/icons/vym-128x128.png
new file mode 100644 (file)
index 0000000..914ad50
Binary files /dev/null and b/icons/vym-128x128.png differ
diff --git a/icons/vym-16x16.png b/icons/vym-16x16.png
new file mode 100644 (file)
index 0000000..3ad3849
Binary files /dev/null and b/icons/vym-16x16.png differ
diff --git a/icons/vym-editor.png b/icons/vym-editor.png
new file mode 100644 (file)
index 0000000..f70fe88
Binary files /dev/null and b/icons/vym-editor.png differ
diff --git a/icons/vym.icns b/icons/vym.icns
new file mode 100644 (file)
index 0000000..cd830ce
Binary files /dev/null and b/icons/vym.icns differ
diff --git a/icons/vym.ico b/icons/vym.ico
new file mode 100644 (file)
index 0000000..5ee1dfe
Binary files /dev/null and b/icons/vym.ico differ
diff --git a/icons/vym.png b/icons/vym.png
new file mode 100644 (file)
index 0000000..92afbdf
Binary files /dev/null and b/icons/vym.png differ
diff --git a/icons/vym.xcf b/icons/vym.xcf
new file mode 100644 (file)
index 0000000..a20848a
Binary files /dev/null and b/icons/vym.xcf differ
diff --git a/icons/vym.xpm b/icons/vym.xpm
new file mode 100644 (file)
index 0000000..9943c2b
--- /dev/null
@@ -0,0 +1,24 @@
+/* XPM */
+static char * vym_xpm[] = {
+"16 16 5 1",
+"      c None",
+".     c #0026FF",
+"+     c #001EFF",
+"@     c #FF0000",
+"#     c #1C22E3",
+"                ",
+"       ...+ @@  ",
+"  @@@@@@#@@@    ",
+"     ...@+..@@  ",
+"     ..@@#..    ",
+"  @@ ..@.@@@@@  ",
+"    @@@@....    ",
+"  @@++......    ",
+"      ......    ",
+"      .....     ",
+"      .....     ",
+"       ....     ",
+"       ....     ",
+"                ",
+"                ",
+"                "};
diff --git a/imageobj.cpp b/imageobj.cpp
new file mode 100644 (file)
index 0000000..769e8db
--- /dev/null
@@ -0,0 +1,62 @@
+#include "imageobj.h"
+#include "mapobj.h"
+
+/////////////////////////////////////////////////////////////////
+// ImageObj
+/////////////////////////////////////////////////////////////////
+ImageObj::ImageObj( QGraphicsScene *scene) : QGraphicsPixmapItem (NULL,scene )
+{
+//     cout << "Const ImageObj (scene)\n";
+
+       setShapeMode (QGraphicsPixmapItem::BoundingRectShape);
+    setZValue(Z_ICON); 
+       mapScene=scene;
+       hide();
+}
+
+ImageObj::~ImageObj()
+{
+ //  cout << "Destr ImageObj\n";
+}
+
+void ImageObj::copy(ImageObj* other)
+{
+       prepareGeometryChange();
+       setVisibility (other->isVisible() );
+       setPixmap (other->QGraphicsPixmapItem::pixmap());       
+       setPos (other->pos());
+}
+
+void ImageObj::setVisibility (bool v)
+{
+       if (v)  
+               show();
+       else
+               hide();
+}
+
+void ImageObj::save(const QString &fn, const char *format)
+{
+       pixmap().save (fn,format,100);
+}
+
+bool ImageObj::load (const QString &fn)
+{
+       QPixmap pixmap;
+    if (pixmap.load (fn)) 
+       {
+               prepareGeometryChange();
+               setPixmap (pixmap);
+               return true;
+       }       
+       return false;
+}
+
+bool ImageObj::load (const QPixmap &pm)
+{
+       prepareGeometryChange();
+       setPixmap (pm);
+       return true;
+}
+
+
diff --git a/imageobj.h b/imageobj.h
new file mode 100644 (file)
index 0000000..080722d
--- /dev/null
@@ -0,0 +1,23 @@
+#ifndef IMAGEOBJ_H
+#define IMAGEOBJ_H
+
+#include <QGraphicsScene>
+#include <QGraphicsPixmapItem>
+
+/*! \brief Base class for pixmaps.
+*/
+
+class ImageObj: public QGraphicsPixmapItem
+{
+public:
+    ImageObj( QGraphicsScene *);
+    ~ImageObj();
+       void copy (ImageObj*);
+    void setVisibility(bool);
+       void save (const QString &, const char *);
+       bool load (const QString &);
+       bool load (const QPixmap &);
+private:
+       QGraphicsScene *mapScene;
+};
+#endif
diff --git a/imports.cpp b/imports.cpp
new file mode 100644 (file)
index 0000000..3f0880d
--- /dev/null
@@ -0,0 +1,110 @@
+#include "file.h"
+#include "imports.h"
+#include "linkablemapobj.h"
+#include "misc.h"
+#include "mainwindow.h"
+#include "xsltproc.h"
+
+extern Main *mainWindow;
+extern QDir vymBaseDir;
+
+ImportBase::ImportBase()
+{
+       bool ok;
+    tmpDir.setPath (makeTmpDir(ok,"vym-import"));
+       if (!tmpDir.exists() || !ok)
+               QMessageBox::critical( 0, QObject::tr( "Error" ),
+                                          QObject::tr("Couldn't access temporary directory\n"));
+}
+
+
+ImportBase::~ImportBase()
+{
+       // Remove tmpdir
+       removeDir (tmpDir);
+}
+
+void ImportBase::setDir(const QString &p)
+{
+       inputDir=p;
+}
+
+void ImportBase::setFile (const QString &p)
+{
+       inputFile=p;
+}
+
+void ImportBase::setMapCenter(MapCenterObj *mc)
+{
+       mapCenter=mc;
+}
+
+bool ImportBase::transform()
+{
+       return true;
+}
+
+QString ImportBase::getTransformedFile()
+{
+       return transformedFile;
+}
+
+/////////////////////////////////////////////////
+bool ImportKDEBookmarks::transform()
+{
+       transformedFile=tmpDir.path()+"/bookmarks.xml";
+
+       XSLTProc p;
+       p.setInputFile (tmpDir.home().path()+"/.kde/share/apps/konqueror/bookmarks.xml");
+       p.setOutputFile (transformedFile);
+       p.setXSLFile (vymBaseDir.path()+"/styles/kdebookmarks2vym.xsl");
+       p.process();
+
+       return true;
+}
+
+
+/////////////////////////////////////////////////
+bool ImportFirefoxBookmarks::transform()
+{
+       transformedFile=tmpDir.path()+"/bookmarks.xml";
+
+       QStringList lines;
+       QFile file( inputFile );
+       if ( file.open( QIODevice::ReadOnly ) ) 
+       {
+               QTextStream stream( &file );
+               while ( !stream.atEnd() ) 
+                       lines += stream.readLine(); // line of text excluding '\n'
+               file.close();
+       }
+       // TODO Generate vym from broken bookmarks above...
+
+       return true;
+}
+
+/////////////////////////////////////////////////
+bool ImportMM::transform()
+{
+       // try to unzip 
+       if (success==unzipDir (tmpDir, inputFile))
+       {
+               
+               // Set short name, too. Search from behind:
+               transformedFile=inputFile;
+               int i=transformedFile.findRev("/");
+               if (i>=0) transformedFile=transformedFile.remove (0,i+1);
+               transformedFile.replace(".mmap",".xml");
+               transformedFile=tmpDir.path()+"/"+transformedFile;
+
+               XSLTProc p;
+               p.setInputFile (tmpDir.path()+"/Document.xml");
+               p.setOutputFile (transformedFile);
+               p.setXSLFile (vymBaseDir.path()+"/styles/mmap2vym.xsl");
+               p.process();
+
+               return true;
+       } else
+               return false;
+       
+}
diff --git a/imports.h b/imports.h
new file mode 100644 (file)
index 0000000..5578a70
--- /dev/null
+++ b/imports.h
@@ -0,0 +1,58 @@
+#ifndef IMPORTS_H
+#define IMPORTS_H
+
+#include <qdir.h>
+#include <qstring.h>
+#include <iostream>
+
+#include "mapcenterobj.h"
+#include "settings.h"
+
+
+///////////////////////////////////////////////////////////////////////
+
+class ImportBase
+{
+public:
+       ImportBase();
+       virtual ~ImportBase();
+       virtual void setDir(const QString &);
+       virtual void setFile(const QString &);
+       virtual void setMapCenter (MapCenterObj*);
+       virtual bool transform();
+       virtual QString getTransformedFile();
+protected:
+       QDir tmpDir;
+       QString inputDir;
+       QString inputFile;
+       MapCenterObj *mapCenter;
+       QString transformedFile;
+       
+};
+
+///////////////////////////////////////////////////////////////////////
+class ImportKDEBookmarks:public ImportBase
+{
+public:
+       bool transform();
+};     
+
+
+///////////////////////////////////////////////////////////////////////
+class ImportFirefoxBookmarks:public ImportBase
+{
+public:
+       bool transform();
+};     
+
+
+///////////////////////////////////////////////////////////////////////
+class ImportMM:public ImportBase
+{
+public:
+       bool transform();
+};     
+
+
+
+#endif
diff --git a/lang/vym_de.qm b/lang/vym_de.qm
new file mode 100644 (file)
index 0000000..a393666
Binary files /dev/null and b/lang/vym_de.qm differ
diff --git a/lang/vym_de.ts b/lang/vym_de.ts
new file mode 100644 (file)
index 0000000..5c9b3b4
--- /dev/null
@@ -0,0 +1,5109 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS><TS version="1.1" language="de">
+<defaultcodec></defaultcodec>
+<context>
+    <name>AboutDialog</name>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Ok</source>
+        <translation type="obsolete">Ok</translation>
+    </message>
+    <message>
+        <location filename="../aboutdialog.cpp" line="205"/>
+        <source>Ok</source>
+        <comment>Ok Button</comment>
+        <translation>Ok</translation>
+    </message>
+</context>
+<context>
+    <name>AboutTextBrowser</name>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Warning</source>
+        <translation type="obsolete">Warnung</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Couldn&apos;t find a viewer to open %1.
+</source>
+        <translation type="obsolete">Konnte kein Programm zum Öffnen von %1 finden.</translation>
+    </message>
+    <message>
+        <location filename="../aboutdialog.cpp" line="228"/>
+        <source>Please use Settings-&gt;</source>
+        <translation>Bitte setzen sie einen Pfad in Einstellungen-&gt;</translation>
+    </message>
+    <message>
+        <location filename="../aboutdialog.cpp" line="228"/>
+        <source>Set application to open an URL</source>
+        <translation>Anwendung zum Öffnen von URLs...</translation>
+    </message>
+    <message>
+        <location filename="../aboutdialog.cpp" line="226"/>
+        <source>Warning</source>
+        <comment>About window</comment>
+        <translation>Warnung</translation>
+    </message>
+    <message>
+        <location filename="../aboutdialog.cpp" line="227"/>
+        <source>Couldn&apos;t find a viewer to open %1.
+</source>
+        <comment>About window</comment>
+        <translation>Konnte kein Programm zum Öffnen von %1 finden.</translation>
+    </message>
+</context>
+<context>
+    <name>Attribute Dialog</name>
+    <message>
+        <location filename="../attributedialog.cpp" line="74"/>
+        <source>AttributeDialog - Edit definitions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../attributedialog.cpp" line="76"/>
+        <source>AttributeDialog - Edit %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>AttributeDialog</name>
+    <message>
+        <location filename="../attributedialog.cpp" line="48"/>
+        <source>Attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../attributedialog.cpp" line="49"/>
+        <source>Add key</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../attributedialog.cpp" line="50"/>
+        <source>Close</source>
+        <translation type="unfinished">Schliessen</translation>
+    </message>
+</context>
+<context>
+    <name>AttributeWidget</name>
+    <message>
+        <location filename="../attributewidget.ui" line="13"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>BranchPropertyWindow</name>
+    <message>
+        <location filename="../branchpropwindow.cpp" line="16"/>
+        <source>Property Editor</source>
+        <comment>Window caption</comment>
+        <translation>Eigenschaften</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.cpp" line="32"/>
+        <source>Name</source>
+        <comment>Branchprop window: Attribute name</comment>
+        <translation>Name</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.cpp" line="33"/>
+        <source>Value</source>
+        <comment>Branchprop window: Attribute value</comment>
+        <translation>Wert</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.cpp" line="34"/>
+        <source>Type</source>
+        <comment>Branchprop window: Attribute type</comment>
+        <translation>Typ</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="19"/>
+        <source>Branch Property Editor</source>
+        <translation>Zweig Eigenschaften</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="29"/>
+        <source>Frame</source>
+        <translation>Rahmen</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="50"/>
+        <source>Geometry</source>
+        <translation>Geometrie</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="63"/>
+        <source>No Frame</source>
+        <translation>Kein Rahmen</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="68"/>
+        <source>Rectangle</source>
+        <translation>Rechteck</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="73"/>
+        <source>Ellipse</source>
+        <translation>Ellipse</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="94"/>
+        <source>Padding</source>
+        <translation>Abstand</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="101"/>
+        <source>Borderline width</source>
+        <translation>Stärke Begrenzungslinie</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="151"/>
+        <source>Colors</source>
+        <translation>Farben</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="194"/>
+        <source>Borderline color</source>
+        <translation>Farbe Begrenzungslinie</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="217"/>
+        <source>Background color</source>
+        <translation>Hintergrundfarbe</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="246"/>
+        <source>Layout</source>
+        <translation>Layout</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="254"/>
+        <source>Include images horizontally</source>
+        <translation>Linke und rechte Bildkanten berücksichtigen</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="261"/>
+        <source>Include images vertically</source>
+        <translation>Obere und untere Bildkanten berücksichtigen</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="284"/>
+        <source>Link</source>
+        <translation>Verbindung</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="290"/>
+        <source>Hide link if unselected</source>
+        <translation>Verbindung verbergen, falls nicht selektiert</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="311"/>
+        <source>Attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="337"/>
+        <source>+</source>
+        <translation>+</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="344"/>
+        <source>-</source>
+        <translation>-</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="413"/>
+        <source>Close</source>
+        <translation>Schliessen</translation>
+    </message>
+</context>
+<context>
+    <name>EditXLinkDialog</name>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="24"/>
+        <source>Edit XLink</source>
+        <translation>xLink ändern</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="62"/>
+        <source>XLink width:</source>
+        <translation>xLink Dicke:</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="78"/>
+        <source>Set color of heading</source>
+        <translation>Farbe Heading</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="108"/>
+        <source>XLink color:</source>
+        <translation>Farbe xLink:</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="150"/>
+        <source>Use as default:</source>
+        <translation>Als Standard verwenden:</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Delete XLink</source>
+        <translation type="obsolete">xLink löschen</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="225"/>
+        <source>Ok</source>
+        <translation>Ok</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="202"/>
+        <source>Quit and delete XLink</source>
+        <translation></translation>
+    </message>
+</context>
+<context>
+    <name>ExportHTMLDialog</name>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export HTML</source>
+        <translation type="obsolete">Exportiere HTML</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Directory:</source>
+        <translation type="obsolete">Verzeichnis:</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Browse</source>
+        <translation type="obsolete">Durchsuchen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Options</source>
+        <translation type="obsolete">Optionen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Include image of map</source>
+        <translation type="obsolete">Bild der Map erzeugen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>use WIKI style</source>
+        <translation type="obsolete">WIKI Stil verwenden</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>show output</source>
+        <translation type="obsolete">Ausgabe der Scripte anzeigen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export</source>
+        <translation type="obsolete">Exportieren</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Cancel</source>
+        <translation type="obsolete">Abbrechen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>VYM - Export HTML to directory</source>
+        <translation type="obsolete">VYM - Exportiere HTML in Verzeichnis</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Critcal export error</source>
+        <translation type="obsolete">Kritischer Fehler beim Exportieren</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>create image only</source>
+        <translation type="obsolete">Nur Bild erzeugen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>use heading for URLs (instead of link target)</source>
+        <translation type="obsolete">Verwende Zweigbeschriftung für URL</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>use image of earth to mark URLs in text</source>
+        <translation type="obsolete">Verwende Globus Symbol für URLs</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>show output of external scripts</source>
+        <translation type="obsolete">Zeige Ausgabe der externen Skripte</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>use default CSS file</source>
+        <translation type="obsolete">Default CSS Datei verwenden</translation>
+    </message>
+</context>
+<context>
+    <name>ExportXHTMLDialog</name>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="19"/>
+        <source>Export XHTML</source>
+        <translation>Exportiere XHTML</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Directory:</source>
+        <translation type="obsolete">Verzeichnis:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="455"/>
+        <source>Browse</source>
+        <translation>Durchsuchen</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="92"/>
+        <source>Options</source>
+        <translation>Optionen</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="144"/>
+        <source>Include image</source>
+        <translation>Bild erzeugen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Include text</source>
+        <translation type="obsolete">Text erzeugen</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="113"/>
+        <source>show output of external scripts</source>
+        <translation>Zeige Ausgabe der externen Skripte</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="508"/>
+        <source>Export</source>
+        <translation>Exportieren</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="501"/>
+        <source>Cancel</source>
+        <translation>Abbrechen</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="140"/>
+        <source>VYM - Export HTML to directory</source>
+        <translation>VYM - Exportiere HTML in Verzeichnis</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="405"/>
+        <source>Critical Error</source>
+        <translation>Kritischer Fehler</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Couldn&apos;t start </source>
+        <translation type="obsolete">Konnte nicht starten</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>didn&apos;t exit normally</source>
+        <translation type="obsolete">Exportiere XHTML</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="48"/>
+        <source>Export to directory:</source>
+        <translation>Export Verzeichnis:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="151"/>
+        <source>Colored headings in text</source>
+        <translation>Farbige Headings im Text</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>showWarnings e.g. if directory is not empty</source>
+        <translation type="obsolete">Warnung, falls Verzeichnis nicht leer ist</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="176"/>
+        <source>Stylesheets</source>
+        <translation>Stylesheets</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="289"/>
+        <source>CSS:</source>
+        <translation>CSS:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="232"/>
+        <source>XSL:</source>
+        <translation>XSL:</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>VYM - Path to CSS file</source>
+        <translation type="obsolete">VYM - Pfad zu CSS Datei</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>VYM - Path to XSL file</source>
+        <translation type="obsolete">VYM - Pfad zu XSL Datei</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="335"/>
+        <source>Warning</source>
+        <translation>Warnung</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source> could not be opened!</source>
+        <translation type="obsolete">konnte nicht geöffnet werden!</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="158"/>
+        <source>Save settings in map</source>
+        <translation>Einstellungen in map speichern</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="320"/>
+        <source>Scripts</source>
+        <translation>Skripte</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="376"/>
+        <source>Before export:</source>
+        <translation>Vor Export:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="436"/>
+        <source>After Export:</source>
+        <translation>Nach Export:</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>The settings saved in the map would like to run scripts:
+
+</source>
+        <translation type="obsolete">Die in der Map gespeicherten Einstellungen wollen Skripte starten:
+
+</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Please check, if you really
+want to allow this in your system!</source>
+        <translation type="obsolete">Bitte prüfen Sie, ob Sie das in Ihrem
+System wirklich zulassen wollen!</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>VYM - Path to pre export script</source>
+        <translation type="obsolete">VYM - Pfad für Prä-Export Skript</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>VYM - Path to post export script</source>
+        <translation type="obsolete">VYM -Pfad für Post-Export Skript</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Stylesheets:</source>
+        <translation type="obsolete">Stylesheets:</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Scripts:</source>
+        <translation type="obsolete">Skripte:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="119"/>
+        <source>The settings saved in the map would like to run scripts:
+
+%1
+
+Please check, if you really
+want to allow this in your system!</source>
+        <translation>Die in der Map gespeicherten Einstellungen möchten gerne Skripte starten:
+
+%1
+
+Bitte prüfen Sie, ob Sie das wirklich erlauben wollen!</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="335"/>
+        <source>Could not open %1</source>
+        <translation>%1 konnte nicht geöffnet werden</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="320"/>
+        <source>Could not write %1</source>
+        <translation>%1 konnte nicht geschrieben werden</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="401"/>
+        <source>Could not start %1</source>
+        <translation>Konnte %1 nicht starten</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="406"/>
+        <source>%1 didn&apos;t exit normally</source>
+        <translation>%1 wurde nicht richtig beendet</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Couldn&apos;t start %1</source>
+        <translation type="obsolete">%1 konnte nicht nicht gestartet werden</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="165"/>
+        <source>show warnings of xslt processor</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ExtraInfoDialog</name>
+    <message>
+        <location filename="../extrainfodialog.ui" line="16"/>
+        <source>VYM - Info</source>
+        <translation>VYM - Info</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="28"/>
+        <source>Map:</source>
+        <translation>Map:</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="42"/>
+        <source>Author:</source>
+        <translation>Author:</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="52"/>
+        <source>Comment:</source>
+        <translation>Kommentar:</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="77"/>
+        <source>Statistics:</source>
+        <translation>Statistik:</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="129"/>
+        <source>Cancel</source>
+        <translation>Abbrechen</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="136"/>
+        <source>Close</source>
+        <translation>Schliessen</translation>
+    </message>
+</context>
+<context>
+    <name>FindWindow</name>
+    <message>
+        <location filename="../findwindow.cpp" line="40"/>
+        <source>Clear</source>
+        <translation>Neuer Suchbegriff</translation>
+    </message>
+    <message>
+        <location filename="../findwindow.cpp" line="45"/>
+        <source>Cancel</source>
+        <translation>Abbrechen</translation>
+    </message>
+    <message>
+        <location filename="../findwindow.cpp" line="51"/>
+        <source>Find</source>
+        <translation>Suchen</translation>
+    </message>
+    <message>
+        <location filename="../findwindow.cpp" line="14"/>
+        <source>Find Text</source>
+        <translation>Text suchen</translation>
+    </message>
+    <message>
+        <location filename="../findwindow.cpp" line="21"/>
+        <source>Text to find:</source>
+        <translation>Suchen nach:</translation>
+    </message>
+</context>
+<context>
+    <name>Heading of mapcenter in new map</name>
+    <message>
+        <location filename="../vymmodel.cpp" line="105"/>
+        <source>New map</source>
+        <translation>Neue map</translation>
+    </message>
+</context>
+<context>
+    <name>HistoryWindow</name>
+    <message>
+        <location filename="../historywindow.ui" line="13"/>
+        <source>Dialog</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="50"/>
+        <source>Redo</source>
+        <translation>Wiederherstellen</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="72"/>
+        <source>Time</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="77"/>
+        <source>Comment</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="85"/>
+        <source>Undo</source>
+        <translation>Rückgängig</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="122"/>
+        <source>Close</source>
+        <translation>Schliessen</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.cpp" line="18"/>
+        <source>Action</source>
+        <comment>Table with actions</comment>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../historywindow.cpp" line="21"/>
+        <source>Comment</source>
+        <comment>Table with actions</comment>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../historywindow.cpp" line="24"/>
+        <source>Undo action</source>
+        <comment>Table with actions</comment>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../historywindow.cpp" line="126"/>
+        <source>Current state</source>
+        <comment>Current bar in history hwindow</comment>
+        <translation>Aktueller Zustand</translation>
+    </message>
+</context>
+<context>
+    <name>Main</name>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>&amp;File</source>
+        <translation type="obsolete">&amp;Datei</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>New map</source>
+        <translation type="obsolete">Neu</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>&amp;New...</source>
+        <translation type="obsolete">&amp;Neu...</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Open</source>
+        <translation type="obsolete">Öffnen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>&amp;Open...</source>
+        <translation type="obsolete">&amp;Öffnen...</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Save</source>
+        <translation type="obsolete">Speichern</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>&amp;Save...</source>
+        <translation type="obsolete">&amp;Speichern...</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Save &amp;As...</source>
+        <translation type="obsolete">Speichern &amp;unter...</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Import directory structure (experimental)</source>
+        <translation type="obsolete">Importiere Verzeichnisstruktur (experimentelle Funktion)</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Import Dir</source>
+        <translation type="obsolete">Importiere Verzeichnis</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export (png)</source>
+        <translation type="obsolete">Exportiere als png-Grafik</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>&amp;Export (png)</source>
+        <translation type="obsolete">&amp;Export (png)</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Print</source>
+        <translation type="obsolete">Drucken</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>&amp;Print...</source>
+        <translation type="obsolete">&amp;Drucken...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="429"/>
+        <source>Close Map</source>
+        <translation>Schließen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>&amp;Close Map</source>
+        <translation type="obsolete">Schlie&amp;ßen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Exit VYM</source>
+        <translation type="obsolete">Beenden</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>E&amp;xit VYM</source>
+        <translation type="obsolete">B&amp;eenden</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>&amp;Edit</source>
+        <translation type="obsolete">&amp;Bearbeiten</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="454"/>
+        <source>Undo</source>
+        <translation>Rückgängig</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>&amp;Undo</source>
+        <translation type="obsolete">&amp;Rückgängig</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="471"/>
+        <source>Copy</source>
+        <translation>Kopieren</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>&amp;Copy</source>
+        <translation type="obsolete">&amp;Kopieren</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="480"/>
+        <source>Cut</source>
+        <translation>Ausschneiden</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Cu&amp;t</source>
+        <translation type="obsolete">&amp;Ausschneiden</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="490"/>
+        <source>Paste</source>
+        <translation>Einfügen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>&amp;Paste</source>
+        <translation type="obsolete">Ein&amp;fügen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="614"/>
+        <source>Move branch up</source>
+        <translation>Zweig nach oben bewegen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Move up</source>
+        <translation type="obsolete">Zweig nach oben</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="624"/>
+        <source>Move branch down</source>
+        <translation>Zweig nach unten bewegen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Move down</source>
+        <translation type="obsolete">Zweig nach unten</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="645"/>
+        <source>Scroll branch</source>
+        <translation>Zweig einrollen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Unscroll all</source>
+        <translation type="obsolete">Alles aufrollen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Unscroll all scrolled branches</source>
+        <translation type="obsolete">Alle eingerollten Zweige aufrollen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="669"/>
+        <source>Find</source>
+        <translation>Finde</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="678"/>
+        <source>Open URL</source>
+        <translation>URL öffnen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="699"/>
+        <source>Edit URL</source>
+        <translation>URL ändern</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="717"/>
+        <source>Use heading of selected branch as URL</source>
+        <translation>Beschriftung dieses Zweiges auch als URL verwenden</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Use heading for URL</source>
+        <translation type="obsolete">Beschriftung als URL übernehmen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="738"/>
+        <source>Jump to another vym map, if needed load it first</source>
+        <translation>Gehe zu einer weiteren Map. (Falls nötig wird die Map vorher geöffnet.)</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Jump to map</source>
+        <translation type="obsolete">Gehe zu einer weiteren Map.</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="754"/>
+        <source>Edit link to another vym map</source>
+        <translation>Bearbeite Verbindung zu einer Map</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Edit map link</source>
+        <translation type="obsolete">Bearbeite Verbindung zu einer Map</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="515"/>
+        <source>edit Heading</source>
+        <translation>Bearbeite Zweig-Überschrift</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Edit heading</source>
+        <translation type="obsolete">Bearbeite Zweig-Überschrift</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="524"/>
+        <source>Delete Selection</source>
+        <translation>Entfernen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="545"/>
+        <source>Add a branch as child of selection</source>
+        <translation>Neuer Zweig </translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Add branch as child</source>
+        <translation type="obsolete">Neuer Zweig </translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="588"/>
+        <source>Add a branch above selection</source>
+        <translation>Neuer Zweig - oben</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Add branch above</source>
+        <translation type="obsolete">Neuer Zweig - oben</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="606"/>
+        <source>Add a branch below selection</source>
+        <translation>Neuer Zweig - unten</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Add branch below</source>
+        <translation type="obsolete">Neuer Zweig - unten</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="825"/>
+        <source>Select upper branch</source>
+        <translation>Zweig oben auswählen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="831"/>
+        <source>Select lower branch</source>
+        <translation>Zweig unten auswählen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="837"/>
+        <source>Select left branch</source>
+        <translation>Linken Zweig auswählen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="843"/>
+        <source>Select right branch</source>
+        <translation>Zweig rechts</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Select child branch</source>
+        <translation type="obsolete">Unterzweig auswählen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="849"/>
+        <source>Select first branch</source>
+        <translation>Obersten Zweig auwählen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="859"/>
+        <source>Select last branch</source>
+        <translation>Untersten Zweig auswählen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="870"/>
+        <source>Add Image</source>
+        <translation>Lade Bild</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>&amp;Format</source>
+        <translation type="obsolete">&amp;Format</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="895"/>
+        <source>Set Color</source>
+        <translation>Wähle Farbe</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="894"/>
+        <source>Set &amp;Color</source>
+        <translation>Wähle &amp;Farbe</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="901"/>
+        <source>Pick color
+Hint: You can pick a color from another branch and color using CTRL+Left Button</source>
+        <translation>Farbe übernehmen
+Tipp: Zum Kopieren einer Farbe kann man auch CTRL+linke Maustaste nehmen.</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Pic&amp;k color</source>
+        <translation type="obsolete">Farbe &amp;übernehmen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="911"/>
+        <source>Color branch</source>
+        <translation>Zweig färben</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Color &amp;branch</source>
+        <translation type="obsolete">Zweig &amp;färben</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="921"/>
+        <source>Color Subtree</source>
+        <translation>Unterbaum färben</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Color sub&amp;tree</source>
+        <translation type="obsolete">&amp;Unterbaum färben</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="940"/>
+        <source>Line</source>
+        <translation>Linie</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="933"/>
+        <source>Linkstyle Line</source>
+        <translation>Verbindungsstil Linie</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Linkstyle Parabel</source>
+        <translation type="obsolete">Verbindungsstil Parabel</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="946"/>
+        <source>PolyLine</source>
+        <translation>Polygon</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="945"/>
+        <source>Linkstyle Thick Line</source>
+        <translation>Verbindungsstil gefülltes Polygon</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="952"/>
+        <source>PolyParabel</source>
+        <translation>Polyparabel</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Linkstyle Thick Parabel</source>
+        <translation type="obsolete">Verbindungsstil Gefüllte Parabel</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>No Frame</source>
+        <translation type="obsolete">Kein Rahmen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Rectangle</source>
+        <translation type="obsolete">Rechteck</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="967"/>
+        <source>Use same color for links and headings</source>
+        <translation>Verbindungen haben Farbe der Beschriftungen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>&amp;Use color of heading for link</source>
+        <translation type="obsolete">&amp;Verbindungen haben Farbe der Beschriftungen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="975"/>
+        <source>Set Link Color</source>
+        <translation>Farbe der Verbindungen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="974"/>
+        <source>Set &amp;Link Color</source>
+        <translation>&amp;Farbe der Verbindungen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="987"/>
+        <source>Set Background Color</source>
+        <translation>Hintergrundfarbe</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="986"/>
+        <source>Set &amp;Background Color</source>
+        <translation>&amp;Hintergrundfarbe</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1005"/>
+        <source>&amp;View</source>
+        <translation>&amp;Ansicht</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1009"/>
+        <source>Zoom reset</source>
+        <translation>Keine Vergrösserung</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>reset Zoom</source>
+        <translation type="obsolete">Keine Vergrösserung</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1016"/>
+        <source>Zoom in</source>
+        <translation>Vergrössern</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1023"/>
+        <source>Zoom out</source>
+        <translation>Verkleinern</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Toggle Note Editor</source>
+        <translation type="obsolete">Zeige Notiz Editor</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>&amp;Next Window</source>
+        <translation type="obsolete">&amp;Nächstes Fenster</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Next Window</source>
+        <translation type="obsolete">Nächstes Fenster</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>&amp;Previous Window</source>
+        <translation type="obsolete">&amp;Vorheriges Fenster</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Previous Window</source>
+        <translation type="obsolete">Vorheriges Fenster</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1376"/>
+        <source>&amp;Settings</source>
+        <translation>&amp;Einstellungen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1381"/>
+        <source>Set application to open pdf files</source>
+        <translation>pdf-Dateien öffnen mit...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3253"/>
+        <source>Set application to open an URL</source>
+        <translation>URLs öffnen mit...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1427"/>
+        <source>Edit branch after adding it</source>
+        <translation>Zweig nach dem Einfügen neu beschriften</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1434"/>
+        <source>Select branch after adding it</source>
+        <translation>Zweig nach dem Einfügen auswählen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1441"/>
+        <source>Select heading before editing</source>
+        <translation>Beschriftung vor dem editieren auswählen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Select existing heading</source>
+        <translation type="obsolete">Beschriftung vor dem editieren auswählen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Enable pasting into new branch</source>
+        <translation type="obsolete">Einfügen in neuen Zweig</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Enable Delete key for deleting branches</source>
+        <translation type="obsolete">Delete Taste zum Löschen von Zweigen verwenden</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Enable Delete key</source>
+        <translation type="obsolete">Delete Taste zum Löschen von Zweigen verwenden</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1484"/>
+        <source>&amp;Test</source>
+        <translation>&amp;Test</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Test Flag</source>
+        <translation type="obsolete">Test Flag</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>test flag</source>
+        <translation type="obsolete">test Flag</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Count Canvas Items</source>
+        <translation type="obsolete">Zähle Canvas Items</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Count Items</source>
+        <translation type="obsolete">Zähle Items</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Show Clipboard</source>
+        <translation type="obsolete">Zeige Zwischenablage</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Show clipboard</source>
+        <translation type="obsolete">Zeige Zwischenablage</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export to dir</source>
+        <translation type="obsolete">Exportiere in Verzeichnis</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export to directory</source>
+        <translation type="obsolete">Exportiere in Verzeichnis</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>&amp;Help</source>
+        <translation type="obsolete">&amp;Hilfe</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1510"/>
+        <source>Open VYM Documentation (pdf)</source>
+        <translation>VYM Handbuch (pdf)</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Open VYM Documentation (pdf) </source>
+        <translation type="obsolete">VYM Handbuch (pdf)</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Information about VYM</source>
+        <translation type="obsolete">Information über VYM</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1520"/>
+        <source>About VYM</source>
+        <translation>Über VYM</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1525"/>
+        <source>Information about QT toolkit</source>
+        <translation>Informationen zum QT Toolkit</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>About QT</source>
+        <translation type="obsolete">Über QT</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Save image</source>
+        <translation type="obsolete">Speichere Bild</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>The file </source>
+        <translation type="obsolete">Die Datei</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>
+exists already. Do you want to</source>
+        <translation type="obsolete">gibt es bereits. Wollen Sie sie</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2017"/>
+        <source>Overwrite</source>
+        <translation>Überschreiben</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2018"/>
+        <source>Cancel</source>
+        <translation>Abbrechen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Couldn&apos;t save</source>
+        <translation type="obsolete">Diese Datei konnte nicht gespeichert werden:</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Saved </source>
+        <translation type="obsolete">Datei gespeichert: </translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1982"/>
+        <source>Couldn&apos;t save </source>
+        <translation>Diese Datei konnte nicht gespeichert werden: </translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>The map </source>
+        <translation type="obsolete">Die Map </translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source> has been modified but not saved yet. Do you want to</source>
+        <translation type="obsolete">wurde verändert aber noch nicht gespeichert. Wollen Sie</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2306"/>
+        <source>Save modified map before closing it</source>
+        <translation>Speichern und Map schliessen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2357"/>
+        <source>Discard changes</source>
+        <translation>Änderungen verwerfen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2351"/>
+        <source>This map is not saved yet. Do you want to</source>
+        <translation>Diese Map wurde noch nicht gespeichert. Wollen Sie </translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2356"/>
+        <source>Save map</source>
+        <translation>Speichern</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2790"/>
+        <source>Critical Error</source>
+        <translation>Kritischer Fehler</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Enter path for pdf reader:</source>
+        <translation type="obsolete">Pfad für pdf-Anwendung:</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Enter path for application to open an URL:</source>
+        <translation type="obsolete">Pfad zum Öffnen von URLs:</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Save &amp;As</source>
+        <translation type="obsolete">Speichern &amp;unter...</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Open Recent</source>
+        <translation type="obsolete">Zuletzt geöffnete Dateien</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export</source>
+        <translation type="obsolete">Exportieren</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export map as image</source>
+        <translation type="obsolete">als Bild</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export as ASCII (still experimental)</source>
+        <translation type="obsolete">als ASCII Text (noch experimentell)</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export (ASCII)</source>
+        <translation type="obsolete">als ASCII</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="775"/>
+        <source>Edit Map Info</source>
+        <translation>Bearbeite Map Info</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export XML</source>
+        <translation type="obsolete">Exportiere als XML</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export HTML</source>
+        <translation type="obsolete">Exportiere als HTML</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>The directory </source>
+        <translation type="obsolete">Das Verzeichnis</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source> is not empty. Do you risk to overwrite its contents?</source>
+        <translation type="obsolete">ist nicht leer.Riskieren sie es, das Verzeichnis zu überschreiben?</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>
+ is already opened.Opening the same map in multiple editors may lead 
+to confusion when finishing working with vym.Do you want to</source>
+        <translation type="obsolete">
+ist bereits geöffnet. Die gleiche Map mehrfach in verschiedenen Ansichten zu öffnen 
+kann beim Beenden von vym zu Problemen führen. Wollen Sie</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1783"/>
+        <source>Open anyway</source>
+        <translation>Trotzdem öffnen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export XML to directory</source>
+        <translation type="obsolete">Exportiere XML in Verzeichnis</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3734"/>
+        <source>Critcal error</source>
+        <translation>Kritischer Fehler</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Couldn&apos;t find the documentation
+vym.pdf in various places.</source>
+        <translation type="obsolete">Konnte die Dokumentation vym.pdf
+nirgends finden.</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Couldn&apos;t find a viewer to read vym.pdf.
+Please use Settings-&gt;</source>
+        <translation type="obsolete">Konnte kein Programm zum Anzeigen von vym.pdf
+finden. Bitte benutzen Sie Einstellungen-&gt;</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>The map</source>
+        <translation type="obsolete">Die Map</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source> does not exist.
+ Do you want to create a new one?</source>
+        <translation type="obsolete">gibt es nicht
+Wollen Sie eine neue anlegen?</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1831"/>
+        <source>Create</source>
+        <translation>Anlegen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Create URL to Bugzilla</source>
+        <translation type="obsolete">URL für Bugzilla anlegen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Edit vym link</source>
+        <translation type="obsolete">vym Verknüpfung ändern</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="760"/>
+        <source>Delete link to another vym map</source>
+        <translation>vym Verknüfung löschen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Delete vym link</source>
+        <translation type="obsolete">vym Verknüpfung löschen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Critical Load Error</source>
+        <translation type="obsolete">Kritischer Fehler beim Laden</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Couldn&apos;t start unzip to decompress data.</source>
+        <translation type="obsolete">Konnte unzip nicht starten, um Daten zu dekomprimieren.</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>unzip didn&apos;t exit normally</source>
+        <translation type="obsolete">unzip wurde nicht richtig beendet</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Couldn&apos;t find a map (*.xml) in .vym archive.
+</source>
+        <translation type="obsolete">Konnte keine map (*.xml) in .vym Datei finden.
+</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Critical Save Error</source>
+        <translation type="obsolete">Kritischer Fehler beim Speichern</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Couldn&apos;t start zip to compress data.</source>
+        <translation type="obsolete">Konnte zip nicht starten, um Daten zu komprimieren.</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>zip didn&apos;t exit normally</source>
+        <translation type="obsolete">zip wurde nicht richtig beendet</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Saving the map as </source>
+        <translation type="obsolete">Das Speichern der map als</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>
+will write it uncompressed.
+This will also write the directories for images
+and flags and thus may overwrite files in the given directory
+Do you want to</source>
+        <translation type="obsolete">
+wird die map unkomprimiert schreiben.
+Dabei werden Verzeichnisse für die Bilder und Flags erzeugt
+und dabei evtl. andere Daten im Verzeichnis überschrieben</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Proceed</source>
+        <translation type="obsolete">Weiter</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Saved</source>
+        <translation type="obsolete">Gespeichert: </translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3285"/>
+        <source>VYM -Information:</source>
+        <translation>vym-Information:</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>No matches found for </source>
+        <translation type="obsolete">Keine Treffer gefunden für</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export XHTML</source>
+        <translation type="obsolete">Exportiere XHTML</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>
+did not use the compressed vym file format.
+Writing it uncompressed will also write images 
+and flags and thus may overwrite files in the given directory
+
+Do you want to write the map</source>
+        <translation type="obsolete">
+verwendet nicht das komprimierte vym Dateiformat.
+Wenn die Map unkomprimiert geschrieben werden soll,
+dann werden auch die Flags und Bilder im angegebenen 
+Verzeichnis geschrieben, was evtl. bestehende Daten
+überschreiben kann
+
+Wollen Sie die Map beim Schreiben</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>compressed (vym default)</source>
+        <translation type="obsolete">komprimieren (vym default)</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>uncompressed</source>
+        <translation type="obsolete">unkomprimiert lassen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Use for Export</source>
+        <translation type="obsolete">Benutze für Export</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="782"/>
+        <source>Add map at selection</source>
+        <translation>Map an Auswahl anhängen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Import (add)</source>
+        <translation type="obsolete">Import (hinzufügen)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="790"/>
+        <source>Replace selection with map</source>
+        <translation>Auswahl mit Map ersetzen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Import (replace)</source>
+        <translation type="obsolete">Import (ersetzen)</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Save selction</source>
+        <translation type="obsolete">Auswahl speichern</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="798"/>
+        <source>Save selection</source>
+        <translation>Auswahl speichern</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1907"/>
+        <source>Load vym map</source>
+        <translation>Lade vym Map</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1910"/>
+        <source>Import: Add vym map to selection</source>
+        <translation>Import: Füge Map zu Auswahl hinzu</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1913"/>
+        <source>Import: Replace selection with vym map</source>
+        <translation>Import: Ersetze Auswahl mit Map</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Save Error</source>
+        <translation type="obsolete">Fehler beim Speichern</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>
+could not be removed before saving</source>
+        <translation type="obsolete">
+konnte vor dem Speichern nicht gelöscht werden</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1102"/>
+        <source>Use modifier to color branches</source>
+        <translation>Modifzierer zum Färben verwenden</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>New map</source>
+        <comment>File menu</comment>
+        <translation type="obsolete">Neue Map anlegen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Open</source>
+        <comment>File menu</comment>
+        <translation type="obsolete">Öffnen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Modes when using modifiers</source>
+        <translation type="obsolete">Modes beim Benutzen von Modifizierern</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="570"/>
+        <source>Add a branch by inserting and making selection its child</source>
+        <translation>Neuen Zweig einfügen und die Auswahl als Kind anhängen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Add branch (insert)</source>
+        <translation type="obsolete">Neuen Zweig einfügen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="806"/>
+        <source>Remove only branch and keep its childs</source>
+        <translation>Zweig entfernen, aber Unterzweige behalten</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Remove only branch </source>
+        <translation type="obsolete">Zweig entfernen, Unterzweige behalten</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="816"/>
+        <source>Remove childs of branch</source>
+        <translation>Unterzweige eines Zweiges entfernen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Remove childs</source>
+        <translation type="obsolete">Unterzweige entfernen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1110"/>
+        <source>Use modifier to copy</source>
+        <translation>Modifizierer zum Kopieren verwenden</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1541"/>
+        <source>Add</source>
+        <translation>Hinzufügen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Remove</source>
+        <translation type="obsolete">Entfernen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Edit XLink</source>
+        <translation type="obsolete">xLink ändern</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Goto XLink</source>
+        <translation type="obsolete">xLink folgen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>This map does not exist:
+  </source>
+        <translation type="obsolete">Diese Map gibt es nicht:
+  </translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>
+Do you want to create a new one?</source>
+        <translation type="obsolete">Wollen Sie eine neue anlegen?</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1117"/>
+        <source>Use modifier to draw xLinks</source>
+        <translation>Modifizierer zum Anlegen von xLinks verwenden</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1456"/>
+        <source>Use exclusive flags in flag toolbars</source>
+        <translation>Flags in den Toolbars exklusiv verwenden</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Enable exclusive flags</source>
+        <translation type="obsolete">Exklusive Flags</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1386"/>
+        <source>Set application to open external links</source>
+        <translation>Anwendung zum Öffnen externen Verweise</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Pasting into new branch</source>
+        <translation type="obsolete">In neuen Zweig einfügen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>pasting into new branch</source>
+        <translation type="obsolete">In neuen Zweig einfügen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1448"/>
+        <source>Delete key for deleting branches</source>
+        <translation>Entfernen Taste für das Löschen von Zweigen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Delete key</source>
+        <translation type="obsolete">Entfernen Taste</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Exclusive flags</source>
+        <translation type="obsolete">Exklusive Flags</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>The directory %1 is not empty.
+Do you risk to overwrite its contents?</source>
+        <translation type="obsolete">Das Verzeichnis %1 ist nicht leer.
+Riskieren Sie es dessen Inhalt zu überschreiben?</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1778"/>
+        <source>The map %1
+is already opened.Opening the same map in multiple editors may lead 
+to confusion when finishing working with vym.Do you want to</source>
+        <translation>Die Map %1
+ist bereits in vym geöffnet. Die gleiche Map gleichzeitig in mehreren Editoren
+zu bearbeiten kann beim Beenden von vym zu Verwirrung führen. 
+Wollen Sie</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1825"/>
+        <source>This map does not exist:
+  %1
+Do you want to create a new one?</source>
+        <translation>Diese Map gibt es nicht:
+  %1
+Wollen Sie eine neue anlegen?</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>The map %1
+did not use the compressed vym file format.
+Writing it uncompressed will also write images 
+and flags and thus may overwrite files in the given directory
+
+Do you want to write the map</source>
+        <translation type="obsolete">Die Map %1
+wurde unkomprimiert gespeichert, also nicht im 
+normalerweise von vym verwendeten Format.
+Beim nochmaligen unkomprimierten Speichern
+werden auch Grafiken gespeichert und so evtl.
+Daten im angegeben Verzeichnis überschrieben.
+
+Wollen Sie 
+</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1977"/>
+        <source>Saved  %1</source>
+        <translation>%1 gespeichert</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2012"/>
+        <source>The file %1
+exists already. Do you want to</source>
+        <translation>Die Datei %1 gibt es bereits.
+Wollen Sie sie überschreiben?</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2301"/>
+        <source>The map %1 has been modified but not saved yet. Do you want to</source>
+        <translation>Die Map %1 wurde geändert,
+aber noch nicht gespeichert. Wollen Sie </translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>No matches found for &lt;b&gt;%1&lt;/b&gt;</source>
+        <translation type="obsolete">Kein Treffer gefunden für &lt;b&gt;%1&lt;/b&gt;</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2791"/>
+        <source>Couldn&apos;t open map %1</source>
+        <translation>Konnte die Map %1 nicht öffnen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Set application to open pdf files  ...</source>
+        <translation type="obsolete">Anwendung zum Öffnen von PDF Dateien...</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Set application to open external links...</source>
+        <translation type="obsolete">Anwendung zum Öffnen externer Verweise...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="435"/>
+        <source>Exit</source>
+        <translation>Beenden</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>E&amp;xit</source>
+        <translation type="obsolete">B&amp;eenden</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="462"/>
+        <source>Redo</source>
+        <translation>Wiederherstellen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>&amp;Redo</source>
+        <translation type="obsolete">Wieder&amp;herstellen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Create URL to FATE</source>
+        <translation type="obsolete">URL für FATE anlegen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Include top and bottom position of images into branch</source>
+        <translation type="obsolete">Obere und untere Kante von Bildern für Grösse eines Zweiges berücksichtigen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Include images vertically</source>
+        <translation type="obsolete">Obere und untere Bildkanten berücksichtigen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Include left and right position of images into branch</source>
+        <translation type="obsolete">Linke und rechte Kanten von Bildern für Grösse eines Zweiges berücksichtigen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Include images horizontally</source>
+        <translation type="obsolete">Linke und rechte Bildkanten berücksichtigen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="960"/>
+        <source>Hide link</source>
+        <translation>Verbindung verbergen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Hide link if object is not selected</source>
+        <translation type="obsolete">Verbindung verbergen, falls Objekt nicht selektiert ist</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Note</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Notiz</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>WWW Document (external)</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">WWW Dokument (extern)</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Link to another vym map</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Verweis zu einer anderen Map</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>subtree is scrolled</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Teilbaum ist eingerollt</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>subtree is temporary scrolled</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Teilbaum ist momentan ausgerollt</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1164"/>
+        <source>Take care!</source>
+        <comment>Standardflag</comment>
+        <translation>Vorsicht!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1168"/>
+        <source>Really?</source>
+        <comment>Standardflag</comment>
+        <translation>Wirklich?</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1172"/>
+        <source>ok!</source>
+        <comment>Standardflag</comment>
+        <translation>ok!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1176"/>
+        <source>Not ok!</source>
+        <comment>Standardflag</comment>
+        <translation>Nicht ok!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1180"/>
+        <source>This won&apos;t work!</source>
+        <comment>Standardflag</comment>
+        <translation>Das geht nicht!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1184"/>
+        <source>Good</source>
+        <comment>Standardflag</comment>
+        <translation>Gut</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1188"/>
+        <source>Bad</source>
+        <comment>Standardflag</comment>
+        <translation>Schlecht</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1197"/>
+        <source>Time critical</source>
+        <comment>Standardflag</comment>
+        <translation>Zeitkritisch</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1203"/>
+        <source>Idea!</source>
+        <comment>Standardflag</comment>
+        <translation>Idee!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1207"/>
+        <source>Important</source>
+        <comment>Standardflag</comment>
+        <translation>Wichtig</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1211"/>
+        <source>Unimportant</source>
+        <comment>Standardflag</comment>
+        <translation>Unwichtig</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1224"/>
+        <source>I like this</source>
+        <comment>Standardflag</comment>
+        <translation>Finde ich gut</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1228"/>
+        <source>I do not like this</source>
+        <comment>Standardflag</comment>
+        <translation>Finde ich schlecht</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>I just love... </source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Das liebe ich!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1241"/>
+        <source>Dangerous</source>
+        <comment>Standardflag</comment>
+        <translation>Gefährlich</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1249"/>
+        <source>This will help</source>
+        <comment>Standardflag</comment>
+        <translation>Das könnte helfen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Call test function</source>
+        <translation type="obsolete">Testfunktion aufrufen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Couldn&apos;t save %1</source>
+        <translation type="obsolete">Konnte %1 nicht speichern</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export to Open Office</source>
+        <translation type="obsolete">Export nach Open Office</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export as Image</source>
+        <translation type="obsolete">Exportiere als Bild</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2139"/>
+        <source>Import</source>
+        <translation>Importieren</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="399"/>
+        <source>KDE Bookmarks</source>
+        <translation>KDE Lesezeichen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export in Open Document Format used e.g. in Open Office </source>
+        <translation type="obsolete">Exportiere im Open Document Format, das z.B. in Open Office verwendet wird</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export as XML</source>
+        <translation type="obsolete">Exportiere als XML</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export as HTML</source>
+        <translation type="obsolete">Exporte als HTML</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export as XHTML</source>
+        <translation type="obsolete">Exportiere als XHTML</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export as ASCII</source>
+        <translation type="obsolete">Exportiere als ASCII</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2249"/>
+        <source>(still experimental)</source>
+        <translation>(noch experimentelle Funktion)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2221"/>
+        <source>Export as LaTeX</source>
+        <translation>Exportiere als LaTeX Datei</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Mind Manager</source>
+        <translation type="obsolete">Mind Manager</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="420"/>
+        <source>&amp;Print</source>
+        <translation>&amp;Drucken</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Add map (insert)</source>
+        <translation type="obsolete">Map einfügen (An Selektion hinzufügen)</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Add map (replace)</source>
+        <translation type="obsolete">Map einfügen (Selektion austauschen)</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export as</source>
+        <translation type="obsolete">Exportieren als</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2269"/>
+        <source>Export to</source>
+        <translation>Exportieren als</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="766"/>
+        <source>Hide object in exports</source>
+        <translation>Objekt beim Exportieren nicht anzeigen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Hide in exports</source>
+        <translation type="obsolete">In Export nicht anzeigen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Hide object in exported maps</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Objekt beim Exportieren nicht anzeigen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1463"/>
+        <source>Use hide flag during exports </source>
+        <translation>Während des Exports das &quot;Verbergen&quot; Flag verwenden </translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Use hide flags</source>
+        <translation type="obsolete">Während des Exports das &quot;Verbergen&quot; Flag verwenden </translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="685"/>
+        <source>Open URL in new tab</source>
+        <translation>URL in neuen Tab öffnen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3819"/>
+        <source>Warning</source>
+        <translation>Warnung</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3749"/>
+        <source>Couldn&apos;t find a viewer to open %1.
+</source>
+        <translation>Konnte kein Programm zum Öffnen von %1 finden.</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3821"/>
+        <source>Please use Settings-&gt;</source>
+        <translation>Bitte setzen sie einen Pfad in Einstellungen-&gt;</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2498"/>
+        <source>Couldn&apos;t start %1 to open a new tab in %2.</source>
+        <translation>Konnte %1 nicht starten um einen neuen Tab mit %2 zu öffnen.</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3750"/>
+        <source>Set application to open PDF files</source>
+        <translation>PDFs öffnen mit</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1192"/>
+        <source>Oh no!</source>
+        <comment>Standardflag</comment>
+        <translation>Oh nein!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1200"/>
+        <source>Call...</source>
+        <comment>Standardflag</comment>
+        <translation>Anrufen...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1215"/>
+        <source>Very important!</source>
+        <comment>Standardflag</comment>
+        <translation>Sehr wichtig!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1219"/>
+        <source>Very unimportant!</source>
+        <comment>Standardflag</comment>
+        <translation>Sehr unwichtig!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1232"/>
+        <source>Rose</source>
+        <comment>Standardflag</comment>
+        <translation>Rose</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1238"/>
+        <source>Surprise!</source>
+        <comment>Standardflag</comment>
+        <translation>Überraschung!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1245"/>
+        <source>Info</source>
+        <comment>Standardflag</comment>
+        <translation>Info</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Toggle history window</source>
+        <translation type="obsolete">Zeige Verlaufsfenster</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="350"/>
+        <source>Firefox Bookmarks</source>
+        <translation>Firefox Lesezeichen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>F&amp;ormat</source>
+        <translation type="obsolete">F&amp;ormat</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1039"/>
+        <source>Show Note Editor</source>
+        <translation>Zeige Notiz Editor</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Show history window</source>
+        <translation type="obsolete">Zeige Verlaufsfenster</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2079"/>
+        <source>Bookmarks</source>
+        <translation>Lesezeichen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2513"/>
+        <source>Couldn&apos;t start %1 to open a new tab</source>
+        <translation>Konnte %1 nicht starten um einen neuen Tab zu öffnen.</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Image</source>
+        <translation type="obsolete">Bild</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Format Actions</source>
+        <comment>Toolbars</comment>
+        <translation type="obsolete">Format Actions</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>View Actions</source>
+        <comment>Toolbars</comment>
+        <translation type="obsolete">Ansicht Aktionen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Modes when using modifiers</source>
+        <comment>Toolbars</comment>
+        <translation type="obsolete">Modes beim Benutzen von Modifizierern</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1154"/>
+        <source>Standard Flags</source>
+        <comment>Standard Flag Toolbar</comment>
+        <translation>Standard Flags Werkzeugleiste</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Follow XLink</source>
+        <translation type="obsolete">XLink folgen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2289"/>
+        <source>Couldn&apos;t find configuration for export to Open Office
+</source>
+        <translation>Konnte keine EInstellungen zum Export nach Open Office finden
+</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2431"/>
+        <source>No matches found for &quot;%1&quot;</source>
+        <translation>Keine treffer für &quot;%1&quot; gefunden</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="297"/>
+        <source>&amp;Map</source>
+        <translation>&amp;Map</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>&amp;Actions</source>
+        <translation type="obsolete">&amp;Aktionen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="692"/>
+        <source>Open all URLs in subtree</source>
+        <translation>Alle URLs in Unterbaum öffnen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="745"/>
+        <source>Open all vym links in subtree</source>
+        <translation>Alle Verbindungen zu vym maps  in Unterbaum öffnen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>URLs and vymLinks</source>
+        <translation type="obsolete">URLs und Verbindungen zu vym maps</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Couldn&apos;t create temporary directory before load
+</source>
+        <translation type="obsolete">Konnte temporäres Verzeichnis vor dem Laden nicht erzeugen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Couldn&apos;t create temporary directory before save
+</source>
+        <translation type="obsolete">Konnte temporäres Verzeichnis vor dem Speichern nicht erzeugen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2518"/>
+        <source>Sorry, currently only Konqueror and Mozilla support tabbed browsing.</source>
+        <translation>Sorry, im Moment unterstützen nur Konqueror und Mozilla tabbed browsing.</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Test function</source>
+        <translation type="obsolete">Test Funktion</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Command</source>
+        <translation type="obsolete">Test Kommando</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Enter command to call in editor</source>
+        <translation type="obsolete">Kommando für den MapEditor</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Open linked map</source>
+        <translation type="obsolete">Verlinkte Map öffnen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>&amp;New...</source>
+        <comment>File menu</comment>
+        <translation type="obsolete">Neue Map anlegen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="302"/>
+        <source>New map</source>
+        <comment>Status tip File menu</comment>
+        <translation>Neue map</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="315"/>
+        <source>&amp;Open...</source>
+        <comment>File menu</comment>
+        <translation>&amp;Öffnen...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="316"/>
+        <source>Open</source>
+        <comment>Status tip File menu</comment>
+        <translation>Öffnen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="322"/>
+        <source>Open Recent</source>
+        <comment>File menu</comment>
+        <translation>Zuletzt geöffnete Dateien</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="325"/>
+        <source>&amp;Save...</source>
+        <comment>File menu</comment>
+        <translation>&amp;Speichern...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="326"/>
+        <source>Save</source>
+        <comment>Status tip file menu</comment>
+        <translation>Speichern</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="333"/>
+        <source>Save &amp;As...</source>
+        <comment>File menu</comment>
+        <translation>Speichern &amp;unter...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="334"/>
+        <source>Save &amp;As</source>
+        <comment>Status tip file menu</comment>
+        <translation>Speichern &amp;unter...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="340"/>
+        <source>Import</source>
+        <comment>File menu</comment>
+        <translation>Importieren</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="350"/>
+        <source>Import %1</source>
+        <comment>Status tip file menu</comment>
+        <translation>Importiere %1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="343"/>
+        <source>KDE bookmarks</source>
+        <translation>KDE Lesezeichen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="349"/>
+        <source>Firefox Bookmarks</source>
+        <comment>File menu</comment>
+        <translation>Firefox Lesezeichen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="361"/>
+        <source>Import %1</source>
+        <comment>status tip file menu</comment>
+        <translation>Importiere %1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="365"/>
+        <source>Import Dir%1</source>
+        <comment>File menu</comment>
+        <translation>Importiere Verzeichnis %1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="366"/>
+        <source>Import directory structure (experimental)</source>
+        <comment>status tip file menu</comment>
+        <translation>Importiere Verzeichnisstruktur (experimentelle Funktion)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="370"/>
+        <source>Export</source>
+        <comment>File menu</comment>
+        <translation>Exportieren</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="372"/>
+        <source>Image%1</source>
+        <comment>File export menu</comment>
+        <translation>Bild %1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="373"/>
+        <source>Export map as image</source>
+        <comment>status tip file menu</comment>
+        <translation>Map als Bild exportieren</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="378"/>
+        <source>Export in Open Document Format used e.g. in Open Office </source>
+        <comment>status tip file menu</comment>
+        <translation>Exportiere im Open Document Format, das z.B. in Open Office verwendet wird</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="384"/>
+        <source>Export as %1</source>
+        <comment>status tip file menu</comment>
+        <translation>Exportiere als %1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="384"/>
+        <source> webpage (XHTML)</source>
+        <comment>status tip file menu</comment>
+        <translation> Webseite (XHTML)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="414"/>
+        <source>Export as %1</source>
+        <translation>Exportiere als %1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="398"/>
+        <source>KDE Bookmarks</source>
+        <comment>File menu</comment>
+        <translation>KDE Lesezeichen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="421"/>
+        <source>Print</source>
+        <comment>File menu</comment>
+        <translation>Drucken</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="428"/>
+        <source>&amp;Close Map</source>
+        <comment>File menu</comment>
+        <translation>Schlie&amp;ßen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="434"/>
+        <source>E&amp;xit</source>
+        <comment>File menu</comment>
+        <translation>B&amp;eenden</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="445"/>
+        <source>&amp;Actions toolbar</source>
+        <comment>Toolbar name</comment>
+        <translation>Werkzeugleiste &amp;Aktionen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="448"/>
+        <source>&amp;Edit</source>
+        <comment>Edit menu</comment>
+        <translation>&amp;Bearbeiten</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="452"/>
+        <source>&amp;Undo</source>
+        <comment>Edit menu</comment>
+        <translation>&amp;Rückgängig</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="461"/>
+        <source>&amp;Redo</source>
+        <comment>Edit menu</comment>
+        <translation>Wieder&amp;herstellen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="470"/>
+        <source>&amp;Copy</source>
+        <comment>Edit menu</comment>
+        <translation>&amp;Kopieren</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="479"/>
+        <source>Cu&amp;t</source>
+        <comment>Edit menu</comment>
+        <translation>&amp;Ausschneiden</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="488"/>
+        <source>&amp;Paste</source>
+        <comment>Edit menu</comment>
+        <translation>Ein&amp;fügen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="514"/>
+        <source>Edit heading</source>
+        <comment>Edit menu</comment>
+        <translation>Bearbeite Zweig-Überschrift</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="523"/>
+        <source>Delete Selection</source>
+        <comment>Edit menu</comment>
+        <translation>Entfernen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="544"/>
+        <source>Add branch as child</source>
+        <comment>Edit menu</comment>
+        <translation>Neuer Zweig </translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="569"/>
+        <source>Add branch (insert)</source>
+        <comment>Edit menu</comment>
+        <translation>Neuen Zweig einfügen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="587"/>
+        <source>Add branch above</source>
+        <comment>Edit menu</comment>
+        <translation>Neuer Zweig - oben</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="605"/>
+        <source>Add branch below</source>
+        <comment>Edit menu</comment>
+        <translation>Neuer Zweig - unten</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="613"/>
+        <source>Move up</source>
+        <comment>Edit menu</comment>
+        <translation>Zweig nach oben</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="622"/>
+        <source>Move down</source>
+        <comment>Edit menu</comment>
+        <translation>Zweig nach unten</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="643"/>
+        <source>Scroll branch</source>
+        <comment>Edit menu</comment>
+        <translation>Zweig einrollen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Unscroll all scrolled branches</source>
+        <comment>Edit menu</comment>
+        <translation type="obsolete">Alle eingerollten Zweige aufrollen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="668"/>
+        <source>Find...</source>
+        <comment>Edit menu</comment>
+        <translation>Suchen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="676"/>
+        <source>Open URL</source>
+        <comment>Edit menu</comment>
+        <translation>URL öffnen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="684"/>
+        <source>Open URL in new tab</source>
+        <comment>Edit menu</comment>
+        <translation>URL in neuen Tab öffnen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="691"/>
+        <source>Open all URLs in subtree</source>
+        <comment>Edit menu</comment>
+        <translation>Alle URLs in Unterbaum öffnen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="698"/>
+        <source>Edit URL...</source>
+        <comment>Edit menu</comment>
+        <translation>URL editieren...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="716"/>
+        <source>Use heading for URL</source>
+        <comment>Edit menu</comment>
+        <translation>Beschriftung als URL übernehmen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Create URL to Bugzilla</source>
+        <comment>Edit menu</comment>
+        <translation type="obsolete">URL für Bugzilla anlegen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Create URL to FATE</source>
+        <comment>Edit menu</comment>
+        <translation type="obsolete">URL für FATE anlegen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="737"/>
+        <source>Open linked map</source>
+        <comment>Edit menu</comment>
+        <translation>Verlinkte Map öffnen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="744"/>
+        <source>Open all vym links in subtree</source>
+        <comment>Edit menu</comment>
+        <translation>Alle Verbindungen zu vym maps  in Unterbaum öffnen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="752"/>
+        <source>Edit vym link...</source>
+        <comment>Edit menu</comment>
+        <translation>vym Verknüpfung editieren</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="759"/>
+        <source>Delete vym link</source>
+        <comment>Edit menu</comment>
+        <translation>vym Verknüpfung löschen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="765"/>
+        <source>Hide in exports</source>
+        <comment>Edit menu</comment>
+        <translation>In Export nicht anzeigen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="774"/>
+        <source>Edit Map Info...</source>
+        <comment>Edit menu</comment>
+        <translation>Map Infos editieren</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="781"/>
+        <source>Add map (insert)</source>
+        <comment>Edit menu</comment>
+        <translation>Map einfügen (An Selektion hinzufügen)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="789"/>
+        <source>Add map (replace)</source>
+        <comment>Edit menu</comment>
+        <translation>Map einfügen (Selektion austauschen)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="797"/>
+        <source>Save selection</source>
+        <comment>Edit menu</comment>
+        <translation>Auswahl speichern</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="805"/>
+        <source>Remove only branch </source>
+        <comment>Edit menu</comment>
+        <translation>Zweig entfernen, Unterzweige behalten</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="815"/>
+        <source>Remove childs</source>
+        <comment>Edit menu</comment>
+        <translation>Unterzweige entfernen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="824"/>
+        <source>Select upper branch</source>
+        <comment>Edit menu</comment>
+        <translation>Zweig oben auswählen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="830"/>
+        <source>Select lower branch</source>
+        <comment>Edit menu</comment>
+        <translation>Zweig unten auswählen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="836"/>
+        <source>Select left branch</source>
+        <comment>Edit menu</comment>
+        <translation>Linken Zweig auswählen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="842"/>
+        <source>Select child branch</source>
+        <comment>Edit menu</comment>
+        <translation>Unterzweig auswählen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="848"/>
+        <source>Select first branch</source>
+        <comment>Edit menu</comment>
+        <translation>Obersten Zweig auwählen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="858"/>
+        <source>Select last branch</source>
+        <comment>Edit menu</comment>
+        <translation>Untersten Zweig auswählen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="869"/>
+        <source>Add Image...</source>
+        <comment>Edit menu</comment>
+        <translation>Bild hinzufügen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="887"/>
+        <source>F&amp;ormat</source>
+        <comment>Format menu</comment>
+        <translation>F&amp;ormat</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="889"/>
+        <source>Format Actions</source>
+        <comment>Format Toolbar name</comment>
+        <translation>Format Actions</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="900"/>
+        <source>Pic&amp;k color</source>
+        <comment>Edit menu</comment>
+        <translation>Farbe &amp;übernehmen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="910"/>
+        <source>Color &amp;branch</source>
+        <comment>Edit menu</comment>
+        <translation>Zweig &amp;färben</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="920"/>
+        <source>Color sub&amp;tree</source>
+        <comment>Edit menu</comment>
+        <translation>&amp;Unterbaum färben</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>No Frame</source>
+        <comment>Branch attribute</comment>
+        <translation type="obsolete">Kein Rahmen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>RectangleBranch attribute</source>
+        <translation type="obsolete">RectangleBranch attribute</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Include images vertically</source>
+        <comment>Branch attribute</comment>
+        <translation type="obsolete">Obere und untere Bildkanten berücksichtigen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Include images horizontally</source>
+        <comment>Branch attribute</comment>
+        <translation type="obsolete">Linke und rechte Bildkanten berücksichtigen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="959"/>
+        <source>Hide link if object is not selected</source>
+        <comment>Branch attribute</comment>
+        <translation>Verbindung verbergen, falls Objekt nicht selektiert ist</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="966"/>
+        <source>&amp;Use color of heading for link</source>
+        <comment>Branch attribute</comment>
+        <translation>&amp;Verbindungen haben Farbe der Beschriftungen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1002"/>
+        <source>View Actions</source>
+        <comment>View Toolbar name</comment>
+        <translation>Ansicht Aktionen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1008"/>
+        <source>reset Zoom</source>
+        <comment>View action</comment>
+        <translation>Keine Vergrösserung</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1015"/>
+        <source>Zoom in</source>
+        <comment>View action</comment>
+        <translation>Vergrössern</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1022"/>
+        <source>Zoom out</source>
+        <comment>View action</comment>
+        <translation>Verkleinern</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1038"/>
+        <source>Show Note Editor</source>
+        <comment>View action</comment>
+        <translation>Zeige Notiz Editor</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Show history window</source>
+        <comment>View action</comment>
+        <translation type="obsolete">Zeige Verlaufsfenster</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Next Window</source>
+        <comment>View action</comment>
+        <translation type="obsolete">Nächstes Fenster</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Previous Window</source>
+        <comment>View action</comment>
+        <translation type="obsolete">Vorheriges Fenster</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1095"/>
+        <source>Modes when using modifiers</source>
+        <comment>Modifier Toolbar name</comment>
+        <translation>Modes beim Benutzen von Modifizierern</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1100"/>
+        <source>Use modifier to color branches</source>
+        <comment>Mode modifier</comment>
+        <translation>Modifzierer zum Färben verwenden</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1108"/>
+        <source>Use modifier to copy</source>
+        <comment>Mode modifier</comment>
+        <translation>Modifizierer zum Kopieren verwenden</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1115"/>
+        <source>Use modifier to draw xLinks</source>
+        <comment>Mode modifier</comment>
+        <translation>Modifizierer zum Anlegen von xLinks verwenden</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1380"/>
+        <source>Set application to open pdf files</source>
+        <comment>Settings action</comment>
+        <translation>pdf-Dateien öffnen mit...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1385"/>
+        <source>Set application to open external links</source>
+        <comment>Settings action</comment>
+        <translation>Anwendung zum Öffnen externen Verweise</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1426"/>
+        <source>Edit branch after adding it</source>
+        <comment>Settings action</comment>
+        <translation>Zweig nach dem Einfügen neu beschriften</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1433"/>
+        <source>Select branch after adding it</source>
+        <comment>Settings action</comment>
+        <translation>Zweig nach dem Einfügen auswählen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1440"/>
+        <source>Select existing heading</source>
+        <comment>Settings action</comment>
+        <translation>Beschriftung vor dem editieren auswählen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1447"/>
+        <source>Delete key</source>
+        <comment>Settings action</comment>
+        <translation>Entfernen Taste</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1455"/>
+        <source>Exclusive flags</source>
+        <comment>Settings action</comment>
+        <translation>Exklusive Flags</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1462"/>
+        <source>Use hide flags</source>
+        <comment>Settings action</comment>
+        <translation>Während des Exports das &quot;Verbergen&quot; Flag verwenden </translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1506"/>
+        <source>&amp;Help</source>
+        <comment>Help menubar entry</comment>
+        <translation>&amp;Hilfe</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1509"/>
+        <source>Open VYM Documentation (pdf) </source>
+        <comment>Help action</comment>
+        <translation>VYM Handbuch (pdf)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1519"/>
+        <source>About VYM</source>
+        <comment>Help action</comment>
+        <translation>Über VYM</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1524"/>
+        <source>About QT</source>
+        <comment>Help action</comment>
+        <translation>Über QT</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1552"/>
+        <source>Remove</source>
+        <comment>Context menu name</comment>
+        <translation>Entfernen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>URLs and vymLinks</source>
+        <comment>Context menu name</comment>
+        <translation type="obsolete">URLs und Verbindungen zu vym maps</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1591"/>
+        <source>Edit XLink</source>
+        <comment>Context menu name</comment>
+        <translation>xLink ändern</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1592"/>
+        <source>Follow XLink</source>
+        <comment>Context menu name</comment>
+        <translation>XLink folgen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1599"/>
+        <source>Save image</source>
+        <comment>Context action</comment>
+        <translation>Speichere Bild</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>The directory %1 is not empty.
+Do you risk to overwrite its contents?</source>
+        <comment>write directory</comment>
+        <translation type="obsolete">Das Verzeichnis %1 ist nicht leer.
+Riskieren Sie es dessen Inhalt zu überschreiben?</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="301"/>
+        <source>&amp;New map</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="308"/>
+        <source>&amp;Copy to new map</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="309"/>
+        <source>Copy selection to mapcenter of a new map</source>
+        <comment>Status tip File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="532"/>
+        <source>Add mapcenter</source>
+        <comment>Canvas context menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="631"/>
+        <source>Sort children</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="661"/>
+        <source>Unscroll childs</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="662"/>
+        <source>Unscroll all scrolled branches in selected subtree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="707"/>
+        <source>Edit local URL...</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="708"/>
+        <source>Edit local URL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="723"/>
+        <source>Create URL to Novell Bugzilla</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="724"/>
+        <source>Create URL to Novell Bugzilla</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="730"/>
+        <source>Create URL to Novell FATE</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="731"/>
+        <source>Create URL to Novell FATE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="874"/>
+        <source>Property window</source>
+        <comment>Dialog to edit properties of selection</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="875"/>
+        <source>Set properties for selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="939"/>
+        <source>Linkstyle Curve</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="951"/>
+        <source>Linkstyle Thick Curve</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="980"/>
+        <source>Set &amp;Selection Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="981"/>
+        <source>Set Selection Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="992"/>
+        <source>Set &amp;Background image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="993"/>
+        <source>Set Background image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1029"/>
+        <source>Show selection</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1030"/>
+        <source>Show selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1047"/>
+        <source>History Window</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1048"/>
+        <source>Show History Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1060"/>
+        <source>Antialiasing</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1061"/>
+        <source>Antialiasing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1068"/>
+        <source>Smooth pixmap transformations</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1076"/>
+        <source>Next Map</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1082"/>
+        <source>Previous Map</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1136"/>
+        <source>Note</source>
+        <comment>SystemFlag</comment>
+        <translation>Notiz</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1139"/>
+        <source>URL to Document </source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1142"/>
+        <source>Link to another vym map</source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1145"/>
+        <source>subtree is scrolled</source>
+        <comment>SystemFlag</comment>
+        <translation>Teilbaum ist eingerollt</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1148"/>
+        <source>subtree is temporary scrolled</source>
+        <comment>SystemFlag</comment>
+        <translation>Teilbaum ist momentan ausgerollt</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1151"/>
+        <source>Hide object in exported maps</source>
+        <comment>SystemFlag</comment>
+        <translation>Objekt beim Exportieren nicht anzeigen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1235"/>
+        <source>I just love...</source>
+        <comment>Standardflag</comment>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1256"/>
+        <source>Important</source>
+        <comment>Freemind-Flag</comment>
+        <translation>Wichtig</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1261"/>
+        <source>Priority</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1265"/>
+        <source>Back</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1268"/>
+        <source>Forward</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1271"/>
+        <source>Look here</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1274"/>
+        <source>Dangerous</source>
+        <comment>Freemind-Flag</comment>
+        <translation>Gefährlich</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1277"/>
+        <source>Don&apos;t forget</source>
+        <comment>Freemind-Flag</comment>
+        <translation>Nicht vergessen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1280"/>
+        <source>Flag</source>
+        <comment>Freemind-Flag</comment>
+        <translation>Flag</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1284"/>
+        <source>Home</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1288"/>
+        <source>Telephone</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1291"/>
+        <source>Music</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1294"/>
+        <source>Mailbox</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1297"/>
+        <source>Maix</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1300"/>
+        <source>Password</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1303"/>
+        <source>To be improved</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1306"/>
+        <source>Stop</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1309"/>
+        <source>Magic</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1312"/>
+        <source>To be discussed</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1315"/>
+        <source>Reminder</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1318"/>
+        <source>Excellent</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1321"/>
+        <source>Linux</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1324"/>
+        <source>Sweet</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1390"/>
+        <source>Set path for macros</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1391"/>
+        <source>Set path for macros</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1395"/>
+        <source>Set number of undo levels</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1396"/>
+        <source>Set number of undo levels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1402"/>
+        <source>Autosave</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1403"/>
+        <source>Autosave</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1410"/>
+        <source>Autosave time</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1411"/>
+        <source>Autosave time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1416"/>
+        <source>Write backup file on save</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1417"/>
+        <source>Write backup file on save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1469"/>
+        <source>Animation</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1470"/>
+        <source>Animation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1514"/>
+        <source>Open VYM example maps </source>
+        <comment>Help action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1515"/>
+        <source>Open VYM example maps </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1569"/>
+        <source>References (URLs, vymLinks, ...)</source>
+        <comment>Context menu name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1645"/>
+        <source>&amp;%1 %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2108"/>
+        <source>Load Freemind map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2202"/>
+        <source>Export as CSV</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3268"/>
+        <source>Directory with vym macros:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3300"/>
+        <source>QInputDialog::getInteger()</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3281"/>
+        <source>Number of undo/redo levels:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3286"/>
+        <source>Settings have been changed. The next map opened will have &quot;%1&quot; undo/redo levels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3301"/>
+        <source>Number of seconds before autosave:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3411"/>
+        <source>History for %1</source>
+        <comment>Window Caption</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3735"/>
+        <source>Couldn&apos;t find the documentation %1 in:
+%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3771"/>
+        <source>Load vym example map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3820"/>
+        <source>Couldn&apos;t find a macro at  %1.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3821"/>
+        <source>Set directory for vym macros</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>MapEditor</name>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Note</source>
+        <translation type="obsolete">Notiz</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>WWW Document (external)</source>
+        <translation type="obsolete">WWW Dokument (extern)</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Link to another vym map</source>
+        <translation type="obsolete">Verbindung zu einer anderen Map</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>subtree is scrolled</source>
+        <translation type="obsolete">Teilbaum ist eingerollt</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>subtree is temporary scrolled</source>
+        <translation type="obsolete">Teilbaum ist momentan ausgerollt</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Take care!</source>
+        <translation type="obsolete">Vorsicht!</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Really?</source>
+        <translation type="obsolete">Wirklich?</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>ok!</source>
+        <translation type="obsolete">ok!</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Not ok!</source>
+        <translation type="obsolete">Nicht ok!</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>This won&apos;t work!</source>
+        <translation type="obsolete">Das geht nicht!</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Good</source>
+        <translation type="obsolete">Gut</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Bad</source>
+        <translation type="obsolete">Schlecht</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Time critical</source>
+        <translation type="obsolete">Zeitkritisch</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Idea!</source>
+        <translation type="obsolete">Idee!</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Important</source>
+        <translation type="obsolete">Wichtig</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Unimportant</source>
+        <translation type="obsolete">Unwichtig</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>I like this</source>
+        <translation type="obsolete">Finde ich gut</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>I do not like this</source>
+        <translation type="obsolete">Finde ich schlecht</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>I just love... </source>
+        <translation type="obsolete">Das liebe ich!</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Critical error while loading map</source>
+        <translation type="obsolete">Kritischer Fehler beim Laden der Map</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1703"/>
+        <source>Critical Parse Error</source>
+        <translation>Kritischer Fehler beim Verarbeiten</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Warning: Old file format</source>
+        <translation type="obsolete">Warnung: Altes Dateiformat</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>&lt;h3&gt;Old file format detected&lt;/h3&gt;&lt;p&gt;The map you are just loading still uses an old uncompressed file format. Saving it later will overwrite the old format by converting it to version </source>
+        <translation type="obsolete">&lt;h3&gt;Altes Dateiformat gefunden&lt;/h3&gt;Die gerade geladene Map verwendet ein unkomprimmiertes Format. Wird sie später gespeichert, so wird sie umgewandelt in das Format von Version</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1795"/>
+        <source>Critical Load Error</source>
+        <translation>Kritischer Fehler beim Laden</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Couldn&apos;t open map after uncompressing, I tried:
+</source>
+        <translation type="obsolete">Konnte Map nach dem Entpacken nicht öffnen:
+</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Critical Save Error</source>
+        <translation type="obsolete">Kritischer Fehler beim Speichern</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Couldn&apos;t write to </source>
+        <translation type="obsolete">Konnte nicht speichern:</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Critcal save error</source>
+        <translation type="obsolete">Kritischer Fehler beim Speichern</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source> doesn&apos;t exist</source>
+        <translation type="obsolete">gibt es nicht</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>VYM - Export (ASCII)</source>
+        <translation type="obsolete">VYM - Export (ASCII)</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>The file </source>
+        <translation type="obsolete">Die Datei</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source> exists already. Do you want to overwrite it?</source>
+        <translation type="obsolete">gibt es bereits. Wollen Sie sie</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4136"/>
+        <source>Overwrite</source>
+        <translation>Überschreiben</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4137"/>
+        <source>Cancel</source>
+        <translation>Abbrechen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Critical Export Error </source>
+        <translation type="obsolete">Kritischer Fehler beim Exportieren</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Couldn&apos;t create directory </source>
+        <translation type="obsolete">Konnte Verzeichnis nicht anlegen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>VYM - Export to directory</source>
+        <translation type="obsolete">VYM - Export in Verzeichnis</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>VYM - Export to directory (still experimental)</source>
+        <translation type="obsolete">VYM - Export in Verzeichnis</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>The directory </source>
+        <translation type="obsolete">Das Verzeichnis</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source> is not empty. Do you risk to overwrite its contents?</source>
+        <translation type="obsolete">ist nicht leer.Riskieren sie es, das Verzeichnis zu überschreiben?</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2129"/>
+        <source>Critical Export Error</source>
+        <translation>Kritischer Fehler beim Exportieren</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2432"/>
+        <source>Critical Error</source>
+        <translation>Kritischer Fehler</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source> used for undo is gone. 
+I will create a new one, but at the moment no undo is available.
+Maybe you want to reload your original data.
+
+Sorry for any inconveniences.</source>
+        <translation type="obsolete">Vielleicht wollen sie die Orginaldaten erneut laden
+Sorry für die Unannehmlichkeiten.</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3474"/>
+        <source>Enter URL:</source>
+        <translation>Neue URL:</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>VYM - Link to another map</source>
+        <translation type="obsolete">VYM - Verbindung zu einer anderen Map</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>vym map</source>
+        <translation type="obsolete">vym Map</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>vym - load image</source>
+        <translation type="obsolete">VYM - Lade Bild</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4067"/>
+        <source>Images</source>
+        <translation>Bilder</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>vym - Load image</source>
+        <translation type="obsolete">vym - Lade Bild</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>vym - save image as</source>
+        <translation type="obsolete">vym - Speichere Bild als</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>vym - Save image as </source>
+        <translation type="obsolete">vym - Speichere Bild als</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4314"/>
+        <source>Critical Import Error</source>
+        <translation>Kritischer Fehler beim Importieren</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Cannot find the directory</source>
+        <translation type="obsolete">Kann das Verzeichnis nicht finden</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>VYM - Choose directory structur to import</source>
+        <translation type="obsolete">vym - Wähle Verzeichnisstruktur für Import</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Dangerous</source>
+        <translation type="obsolete">Gefährlich</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>This will help</source>
+        <translation type="obsolete">Das könnte helfen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>New Map</source>
+        <translation type="obsolete">Neue Map</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Critical Parse Error by reading backupFile</source>
+        <translation type="obsolete">Kritischer Fehler beim Parsen
+der Sicherungskopie</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>MapEditor::exportXML couldn&apos;t open </source>
+        <translation type="obsolete">MapEditor::exportXML konnte nicht öffnen:</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Note</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Notiz</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>WWW Document (external)</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">WWW Dokument (extern)</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Link to another vym map</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Verbindung zu einer anderen Map</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>subtree is scrolled</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Teilbaum ist eingerollt</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>subtree is temporary scrolled</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Teilbaum ist momentan ausgerollt</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Take care!</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Vorsicht!</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Really?</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Wirklich?</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>ok!</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">ok!</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Not ok!</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Nicht ok!</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>This won&apos;t work!</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Das geht nicht!</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Good</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Gut</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Bad</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Schlecht</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Time critical</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Zeitkritisch</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Idea!</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Idee!</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Important</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Wichtig</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Unimportant</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Unwichtig</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>I like this</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Finde ich gut</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>I do not like this</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Finde ich schlecht</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>I just love... </source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Das liebe ich!</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Dangerous</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Gefährlich</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>This will help</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Das könnte helfen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>New Map</source>
+        <comment>Heading of mapcenter in new map</comment>
+        <translation type="obsolete">Neue Map</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Critcal Save error</source>
+        <translation type="obsolete">Kritischer Fehler beim Speichern</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4130"/>
+        <source>The file %1 exists already.
+Do you want to overwrite it?</source>
+        <translation>Die Datei %1 gibt es bereits.
+Wollen Sie sie überschreiben?</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2129"/>
+        <source>MapEditor::exportXML couldn&apos;t open %1</source>
+        <translation>MapEditor::exportXML konnte %1 nicht öffnen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Temporary directory %1 used for undo is gone. 
+I will create a new one, but at the moment no undo is available.
+Maybe you want to reload your original data.
+
+Sorry for any inconveniences.</source>
+        <translation type="obsolete">Um einen Schritt rückgängig machen zu können, wird das Verzeichnis
+%1 benutzt - leider ist verschwunden. 
+Am besten Sie starten vym neu und laden Ihre Daten nochmal.
+
+Sorry für die Umstände.
+</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>vym - Save image as %1</source>
+        <translation type="obsolete">vym - Bild speichern als %1</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>The file %1 exists already. Do you want to overwrite it?</source>
+        <translation type="obsolete">Die Datei %1 gibt es bereits.
+Wollen Sie sie überschreiben?</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4314"/>
+        <source>Cannot find the directory %1</source>
+        <translation>Konnte das Verzeichnis %1 nicht finden</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export (ASCII)</source>
+        <translation type="obsolete">als ASCII</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>The file %1
+exists already. Do you want to overwrite it?</source>
+        <translation type="obsolete">Die Datei %1 gibt es bereits.
+Wollen Sie sie überschreiben?</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3579"/>
+        <source>Link to another map</source>
+        <translation>Verbindung zu einer anderen Map</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4072"/>
+        <source>Load image</source>
+        <translation>Lade Bild</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Save image as %1</source>
+        <translation type="obsolete">Speichere Bild unter %1</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4362"/>
+        <source>Choose directory structure to import</source>
+        <translation>Bitte Verzeichnis zum Importieren auswählen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export as ASCII</source>
+        <translation type="obsolete">Exportiere als ASCII</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>(still experimental)</source>
+        <translation type="obsolete">(noch experimentelle Funktion)</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export as LaTeX</source>
+        <translation type="obsolete">Exportiere als LaTeX Datei</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="110"/>
+        <source>unnamed</source>
+        <translation>unbenannt</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3324"/>
+        <source>Warning</source>
+        <translation>Warnung</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Couldn&apos;t find script %1
+to notifiy Browsers of changed bookmarks.</source>
+        <translation type="obsolete">Konnte das Script %1
+nicht finden, das nötig ist um die
+Browser auf die geänderten Lesezeichen
+hinzuweisen. </translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>History for </source>
+        <translation type="obsolete">Verlauf für</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4116"/>
+        <source>Save image</source>
+        <translation>Speichere Bild</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2426"/>
+        <source>Critical Parse Error while reading %1</source>
+        <translation>Kritischer Fehler beim Parsen von %1</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2432"/>
+        <source>Could not read %1</source>
+        <translation>%1 konnte nicht gelesen werden</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3324"/>
+        <source>Can&apos;t get color of heading,
+there&apos;s no branch selected</source>
+        <translation>Konnte die Farbe der Beschriftung nicht bestimmen,
+da kein Zweig ausgewählt ist.</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1602"/>
+        <source>Couldn&apos;t create temporary directory before load
+</source>
+        <translation>Konnte temporäres Verzeichnis vor dem Laden nicht erzeugen
+</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1645"/>
+        <source>Couldn&apos;t find a map (*.xml) in .vym archive.
+</source>
+        <translation>Konnte keine map (*.xml) in .vym Datei finden.
+</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1741"/>
+        <source>The map %1
+did not use the compressed vym file format.
+Writing it uncompressed will also write images 
+and flags and thus may overwrite files in the given directory
+
+Do you want to write the map</source>
+        <translation>Die Map %1
+wurde unkomprimiert gespeichert, also nicht im 
+normalerweise von vym verwendeten Format.
+Beim nochmaligen unkomprimierten Speichern
+werden auch Grafiken gespeichert und so evtl.
+Daten im angegeben Verzeichnis überschrieben.
+
+Wollen Sie 
+</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1746"/>
+        <source>compressed (vym default)</source>
+        <translation>komprimieren (vym default)</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1747"/>
+        <source>uncompressed</source>
+        <translation>unkomprimiert lassen</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1782"/>
+        <source>Save Error</source>
+        <translation>Fehler beim Speichern</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1778"/>
+        <source>%1
+could not be removed before saving</source>
+        <translation>%1
+konnte vor dem SPeichern nicht entfernt werden</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1783"/>
+        <source>%1
+could not be renamed before saving</source>
+        <translation>%1
+konnte vor dem Speichern nicht umbenannt werden</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1796"/>
+        <source>Couldn&apos;t create temporary directory before save
+</source>
+        <translation>Konnte temporäres Verzeichnis vor dem Speichern nicht erzeugen
+</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2033"/>
+        <source>Export map as image</source>
+        <translation>Map als Bild exportieren</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2110"/>
+        <source>Export XML to directory</source>
+        <translation>Exportiere XML in Verzeichnis</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2260"/>
+        <source>Autosave disabled during undo.</source>
+        <translation>Autosave ausgeschaltet während der Aktion &quot;Rückgängig&quot;</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3268"/>
+        <source>Load background image</source>
+        <translation>Hintergrundbild laden</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3489"/>
+        <source>Text</source>
+        <comment>Filedialog</comment>
+        <translation>Text</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3490"/>
+        <source>Spreadsheet</source>
+        <comment>Filedialog</comment>
+        <translation>Tabellendokument</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3491"/>
+        <source>Textdocument</source>
+        <comment>Filedialog</comment>
+        <translation>Textdokument</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3492"/>
+        <source>Images</source>
+        <comment>Filedialog</comment>
+        <translation>Bilder</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3495"/>
+        <source>Set URL to a local file</source>
+        <translation>URL zu einer lokalen Datei setzen</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3727"/>
+        <source>%1 items on map
+</source>
+        <comment>Info about map</comment>
+        <translation>%1 Objekte in der Map
+</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="5291"/>
+        <source>The file of the map  on disk has changed:
+
+   %1
+
+Do you want to reload that map with the new file?</source>
+        <translation>Die zur Map gehörende Datei hat sich verändert:
+
+   %1
+
+Soll die Map durch die neue Datei ersetzt werden?</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="5297"/>
+        <source>Reload</source>
+        <translation>Neu laden</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="5298"/>
+        <source>Ignore</source>
+        <translation>Ignorieren</translation>
+    </message>
+</context>
+<context>
+    <name>QMessageBox</name>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Critical Error</source>
+        <translation type="obsolete">Kritischer Fehler</translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>new branch</source>
+        <translation type="obsolete">Neuer Zweig</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>New Map</source>
+        <translation type="obsolete">Neue Map</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="439"/>
+        <source>This is not an image.</source>
+        <translation>Das ist kein Bild.</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="557"/>
+        <source>Critical Export Error</source>
+        <translation>Kritischer Fehler beim Exportieren</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="352"/>
+        <source>Could not write %1</source>
+        <translation>%1 konnte nicht </translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="353"/>
+        <source>Export failed.</source>
+        <translation>Export fehlgeschlagen.</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="524"/>
+        <source>Check &quot;%1&quot; in
+%2</source>
+        <translation>Bitte &quot;%1&quot; prüfen in
+%2</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="557"/>
+        <source>Could not read %1</source>
+        <translation>%1 konnte nicht gelesen werden</translation>
+    </message>
+    <message>
+        <location filename="../xsltproc.cpp" line="82"/>
+        <source>Critical Error</source>
+        <translation>Kritischer Fehler</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="272"/>
+        <source>Couldn&apos;t start zip to compress data.</source>
+        <translation>Konnte zip nicht starten, um Daten zu komprimieren.</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="282"/>
+        <source>zip didn&apos;t exit normally</source>
+        <translation>zip wurde nicht richtig beendet</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="316"/>
+        <source>Couldn&apos;t start unzip to decompress data.</source>
+        <translation>Konnte unzip nicht starten, um Daten zu dekomprimieren.</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="326"/>
+        <source>unzip didn&apos;t exit normally</source>
+        <translation>unzip wurde nicht richtig beendet</translation>
+    </message>
+    <message>
+        <location filename="../xsltproc.cpp" line="77"/>
+        <source>Could not start %1</source>
+        <translation>%1 konnte nicht gestartet werden</translation>
+    </message>
+    <message>
+        <location filename="../xsltproc.cpp" line="83"/>
+        <source>%1 didn&apos;t exit normally</source>
+        <translation>%1 wurde nicht richtig beendet</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="77"/>
+        <source>The file %1 exists already.
+Do you want to overwrite it?</source>
+        <translation>Die Datei %1 gibt es bereits.
+Wollen Sie sie überschreiben?</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="105"/>
+        <source>Overwrite</source>
+        <translation>Überschreiben</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="106"/>
+        <source>Cancel</source>
+        <translation>Abbrechen</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="441"/>
+        <source>Sorry, no preview for
+multiple selected files.</source>
+        <translation>Leider keine Vorschau
+möglich für Mehrfachausahl.</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="294"/>
+        <source>Exporting the %1 bookmarks will overwrite
+your existing bookmarks file.</source>
+        <translation>Das Exportieren der %1 Lesezeichen wird die
+bestehende Datei mit Lesezeichen überschreiben.</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="295"/>
+        <source>Warning: Overwriting %1 bookmarks</source>
+        <translation>Warnung: Überschreiben der %1 Lesezeichen</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="278"/>
+        <source>Warning</source>
+        <translation>Warnung</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="279"/>
+        <source>Couldn&apos;t find script %1
+to notifiy Browsers of changed bookmarks.</source>
+        <translation>Konnte das Script %1
+nicht finden, das nötig ist um die
+Browser auf die geänderten Lesezeichen
+hinzuweisen. </translation>
+    </message>
+    <message>
+        <location filename="../main.cpp" line="192"/>
+        <source>Error</source>
+        <translation>Fehler</translation>
+    </message>
+    <message>
+        <location filename="../imports.cpp" line="17"/>
+        <source>Couldn&apos;t access temporary directory
+</source>
+        <translation>Auf das temporäre Verzeichnis konnte nicht zugegriffen werden</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="131"/>
+        <source>Export as ASCII</source>
+        <translation>Exportiere als ASCII</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="131"/>
+        <source>(still experimental)</source>
+        <translation>(noch experimentelle Funktion)</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="99"/>
+        <source>The directory %1 is not empty.
+Do you risk to overwrite its contents?</source>
+        <comment>write directory</comment>
+        <translation>Das Verzeichnis %1 ist nicht leer.
+Riskieren Sie es dessen Inhalt zu überschreiben?</translation>
+    </message>
+    <message>
+        <location filename="../main.cpp" line="193"/>
+        <source>Couldn&apos;t open %1.
+</source>
+        <translation>Konnte nicht geöffnet werden:
+%1</translation>
+    </message>
+</context>
+<context>
+    <name>ShowTextDialog</name>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>VYM - Info</source>
+        <translation type="obsolete">VYM - Info</translation>
+    </message>
+    <message>
+        <location filename="../showtextdialog.ui" line="52"/>
+        <source>Close</source>
+        <translation>Schliessen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>History of %1</source>
+        <translation type="obsolete">Verlauf von %1</translation>
+    </message>
+    <message>
+        <location filename="../showtextdialog.ui" line="16"/>
+        <source>Dialog</source>
+        <translation>Dialog</translation>
+    </message>
+</context>
+<context>
+    <name>SimpleScriptEditor</name>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="61"/>
+        <source>Save script</source>
+        <translation>Script speichern</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="73"/>
+        <source>The file %1
+exists already.
+Do you want to overwrite it?</source>
+        <comment>dialog &apos;save as&apos;</comment>
+        <translation>Die Datei %1 gibt es bereits.
+Wollen Sie sie überschreiben?</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="78"/>
+        <source>Overwrite</source>
+        <translation>Überschreiben</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="79"/>
+        <source>Cancel</source>
+        <translation>Abbrechen</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="105"/>
+        <source>Load script</source>
+        <translation>Script laden</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="116"/>
+        <source>Error</source>
+        <translation>Fehler</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="117"/>
+        <source>Couldn&apos;t open %1.
+</source>
+        <translation>Konnte nichKonnte nicht geöffnet werden:
+%1</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="13"/>
+        <source>Simple Script Editor</source>
+        <translation>Einfacher Script Editor</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="38"/>
+        <source>Save as</source>
+        <translation>Speichern als</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="48"/>
+        <source>Save</source>
+        <translation>Speichern</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="51"/>
+        <source>Qt::CTRL + Qt::Key_S</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="58"/>
+        <source>Open</source>
+        <translation>Öffnen</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="61"/>
+        <source>Qt::CTRL +Qt::Key_O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="68"/>
+        <source>Run</source>
+        <translation>Starten</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="71"/>
+        <source>Qt::CTRL + Qt::Key_R</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="78"/>
+        <source>Close</source>
+        <translation>Schliessen</translation>
+    </message>
+</context>
+<context>
+    <name>TextEditor</name>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>&amp;File</source>
+        <translation type="obsolete">&amp;Datei</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Import</source>
+        <translation type="obsolete">Importiere</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="202"/>
+        <source>&amp;Import...</source>
+        <translation>&amp;Importiere</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export Note</source>
+        <translation type="obsolete">Exportiere Notiz</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="211"/>
+        <source>&amp;Export...</source>
+        <translation>&amp;Export</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export Note As</source>
+        <translation type="obsolete">Exportiere Notiz unter...</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export &amp;As...</source>
+        <translation type="obsolete">Exportiere &amp;unter...</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="675"/>
+        <source>Print Note</source>
+        <translation>Drucke Notiz</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="233"/>
+        <source>&amp;Print...</source>
+        <translation>&amp;Drucken</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="246"/>
+        <source>&amp;Edit</source>
+        <translation>&amp;Bearbeiten</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Undo</source>
+        <translation type="obsolete">Rückgängig</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="249"/>
+        <source>&amp;Undo</source>
+        <translation>R&amp;ückgängig</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Redo</source>
+        <translation type="obsolete">Wiederherstellen</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="257"/>
+        <source>&amp;Redo</source>
+        <translation>Wieder&amp;herstellen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Select and copy all</source>
+        <translation type="obsolete">Alles auswählen und kopieren</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="266"/>
+        <source>Select and copy &amp;all</source>
+        <translation>&amp;Alles auswählen und kopieren</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Copy</source>
+        <translation type="obsolete">Kopieren</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="273"/>
+        <source>&amp;Copy</source>
+        <translation>&amp;Kopieren</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Cut</source>
+        <translation type="obsolete">Ausschneiden</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="281"/>
+        <source>Cu&amp;t</source>
+        <translation>&amp;Ausschneiden</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Paste</source>
+        <translation type="obsolete">Einfügen</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="289"/>
+        <source>&amp;Paste</source>
+        <translation>Ein&amp;fügen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Delete all</source>
+        <translation type="obsolete">Alles löschen</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="297"/>
+        <source>&amp;Delete All</source>
+        <translation>Alles &amp;löschen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>&amp;Format</source>
+        <translation type="obsolete">&amp;Format</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Use fixed font</source>
+        <translation type="obsolete">Benutze fixe Zeichenbreite</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>&amp;Fixed font</source>
+        <translation type="obsolete">&amp;fixe Zeichenbreite</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="428"/>
+        <source>&amp;Settings</source>
+        <translation>&amp;Einstellungen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Set fixed font</source>
+        <translation type="obsolete">Wähle Zeichensatz mit fixer Breite</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="431"/>
+        <source>Set &amp;fixed font</source>
+        <translation>Wähle Zeichensatz mit f&amp;ixer Breite</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Set variable font</source>
+        <translation type="obsolete">Wähle Zeichensatz mit variabler Breite</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="437"/>
+        <source>Set &amp;variable font</source>
+        <translation>Wähle Zeichensatz mit v&amp;ariabler Breite</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Used fixed font by default</source>
+        <translation type="obsolete">Verwende fixen Zeichensatz per default</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="443"/>
+        <source>&amp;fixed font is default</source>
+        <translation>Verwende fixen Zeichensatz p&amp;er default</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export Note (HTML)</source>
+        <translation type="obsolete">Exportiere Notiz (HTML)</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export Note As (HTML) </source>
+        <translation type="obsolete">Exportiere Notiz als (HTML)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="219"/>
+        <source>Export &amp;As... (HTML)</source>
+        <translation>Exportiere Notiz &amp;als... (HTML)</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Export Note As (ASCII) </source>
+        <translation type="obsolete">Exportiere Notiz als (ASCII)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="225"/>
+        <source>Export &amp;As...(ASCII)</source>
+        <translation>Exportiere a&amp;ls (ASCII)</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Use fixed width font for the whole text</source>
+        <translation type="obsolete">Feste Zeichenbreite für den Text verwenden</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="347"/>
+        <source>&amp;Color...</source>
+        <translation>&amp;Farbe...</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="353"/>
+        <source>&amp;Bold</source>
+        <translation>F&amp;ett</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="361"/>
+        <source>&amp;Italic</source>
+        <translation>K&amp;ursiv</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="369"/>
+        <source>&amp;Underline</source>
+        <translation>&amp;Unterstrichen</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="400"/>
+        <source>&amp;Left</source>
+        <translation>&amp;Linksbündig</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="406"/>
+        <source>C&amp;enter</source>
+        <translation>&amp;Zentriert</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="412"/>
+        <source>&amp;Right</source>
+        <translation>&amp;Rechtsbündig</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="418"/>
+        <source>&amp;Justify</source>
+        <translation>&amp;Blocksatz</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="557"/>
+        <source>Export Note to single file</source>
+        <translation>Notiz in eine einzelne Datei exportieren</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>The file </source>
+        <translation type="obsolete">Die Datei</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source> exists already. Do you want to overwrite it?</source>
+        <translation type="obsolete">gibt es bereits. Wollen Sie sie</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="645"/>
+        <source>Overwrite</source>
+        <translation>Überschreiben</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="646"/>
+        <source>Cancel</source>
+        <translation>Abbrechen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Couldn&apos;t export note </source>
+        <translation type="obsolete">Konnte Notiz nicht exportieren</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="631"/>
+        <source>Export Note to single file (ASCII)</source>
+        <translation>Notiz als ASCII in eine einzelne Datei ausgeben</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Convert paragraphs to linebreaks</source>
+        <translation type="obsolete">Absätze in Zeilenbrüche umwandeln</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>&amp;Convert Paragraphs</source>
+        <translation type="obsolete">&amp;Absätze umwandeln</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Join all lines of a paragraph</source>
+        <translation type="obsolete">Alle Zeilenumbrüche eines Absatzes zu vereinen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>&amp;Join lines</source>
+        <translation type="obsolete">&amp;Zeilen vereinen</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Toggle font hint for the whole text</source>
+        <translation type="obsolete">Zeichensatz für gesamten Text umschalten</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="314"/>
+        <source>&amp;Font hint</source>
+        <translation>Zeichensatz &amp;umschalten</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="380"/>
+        <source>Subs&amp;cript</source>
+        <translation>&amp;Tiefgestellt</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="388"/>
+        <source>Su&amp;perscript</source>
+        <translation>&amp;Hochgestellt</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="457"/>
+        <source>Note Editor</source>
+        <translation>Notiz Editor</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="310"/>
+        <source>F&amp;ormat</source>
+        <translation>F&amp;ormat</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="244"/>
+        <source>Edit Actions</source>
+        <translation>Edit Actions</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="308"/>
+        <source>Format Actions</source>
+        <translation>Format Actions</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>Print Document</source>
+        <translation type="obsolete">Drucke Notiz</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="197"/>
+        <source>Note Actions</source>
+        <translation>Note Actions</translation>
+    </message>
+    <message>
+        <location filename="" line="136667132"/>
+        <source>&amp;Note</source>
+        <translation type="obsolete">&amp;Notiz</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="38"/>
+        <source>Ready</source>
+        <comment>Statusbar message</comment>
+        <translation>Bereit</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="163"/>
+        <source>No filename available for this note.</source>
+        <comment>Statusbar message</comment>
+        <translation>Notiz hat keinen Dateinamen</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="39"/>
+        <source>Note Editor</source>
+        <comment>Window caption</comment>
+        <translation>Notiz Editor</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="199"/>
+        <source>&amp;Note</source>
+        <comment>Menubar</comment>
+        <translation>&amp;Notiz</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="203"/>
+        <source>Import</source>
+        <comment>Status tip for Note menu</comment>
+        <translation>Importieren</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="212"/>
+        <source>Export Note (HTML)</source>
+        <comment>Status tip for Note menu</comment>
+        <translation>Exportiere Notiz (HTML)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="220"/>
+        <source>Export Note As (HTML) </source>
+        <comment>Status tip for Note Menu</comment>
+        <translation>Exportiere Notiz als (HTML)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="226"/>
+        <source>Export Note As (ASCII) </source>
+        <comment>Status tip for note menu</comment>
+        <translation>Exportiere Notiz als (ASCII)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="234"/>
+        <source>Print Note</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Drucke Notiz</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="250"/>
+        <source>Undo</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Rückgängig</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="258"/>
+        <source>Redo</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Wiederherstellen</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="267"/>
+        <source>Select and copy all</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Alles auswählen und kopieren</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="274"/>
+        <source>Copy</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Kopieren</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="282"/>
+        <source>Cut</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Ausschneiden</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="290"/>
+        <source>Paste</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Einfügen</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="298"/>
+        <source>Delete all</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Alles löschen</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="315"/>
+        <source>Toggle font hint for the whole text</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Zeichensatz für gesamten Text umschalten</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="432"/>
+        <source>Set fixed font</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Wähle Zeichensatz mit fixer Breite</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="438"/>
+        <source>Set variable font</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Wähle Zeichensatz mit variabler Breite</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="444"/>
+        <source>Used fixed font by default</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Verwende fixen Zeichensatz per default</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="640"/>
+        <source>The file %1
+exists already.
+Do you want to overwrite it?</source>
+        <comment>dialog &apos;save note as&apos;</comment>
+        <translation>Die Datei %1 gibt es bereits.
+Wollen Sie sie überschreiben?</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="589"/>
+        <source>Couldn&apos;t export note </source>
+        <comment>dialog &apos;save note as&apos;</comment>
+        <translation>Konnte Notiz nicht exportieren</translation>
+    </message>
+</context>
+<context>
+    <name>WarningDialog</name>
+    <message>
+        <location filename="../warningdialog.ui" line="13"/>
+        <source>VYM - Warning : Foo...</source>
+        <translation>VYM - Warnung: ...</translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.cpp" line="11"/>
+        <source>Proceed</source>
+        <translation>Weiter</translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.cpp" line="15"/>
+        <source>Show this message again</source>
+        <translation>Diese Meldung das nächste Mal wieder zeigen</translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.ui" line="132"/>
+        <source>Cancel</source>
+        <translation>Abbrechen</translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.ui" line="139"/>
+        <source>Ok</source>
+        <translation>Ok</translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.ui" line="106"/>
+        <source>showAgainBox</source>
+        <translation>showAgainBox</translation>
+    </message>
+</context>
+</TS>
diff --git a/lang/vym_en.qm b/lang/vym_en.qm
new file mode 100644 (file)
index 0000000..ea32a1c
Binary files /dev/null and b/lang/vym_en.qm differ
diff --git a/lang/vym_en.ts b/lang/vym_en.ts
new file mode 100644 (file)
index 0000000..219ba1e
--- /dev/null
@@ -0,0 +1,3169 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS><TS version="1.1">
+<context>
+    <name>AboutDialog</name>
+    <message>
+        <location filename="../aboutdialog.cpp" line="205"/>
+        <source>Ok</source>
+        <comment>Ok Button</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>AboutTextBrowser</name>
+    <message>
+        <location filename="../aboutdialog.cpp" line="228"/>
+        <source>Please use Settings-&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../aboutdialog.cpp" line="228"/>
+        <source>Set application to open an URL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../aboutdialog.cpp" line="226"/>
+        <source>Warning</source>
+        <comment>About window</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../aboutdialog.cpp" line="227"/>
+        <source>Couldn&apos;t find a viewer to open %1.
+</source>
+        <comment>About window</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>Attribute Dialog</name>
+    <message>
+        <location filename="../attributedialog.cpp" line="74"/>
+        <source>AttributeDialog - Edit definitions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../attributedialog.cpp" line="76"/>
+        <source>AttributeDialog - Edit %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>AttributeDialog</name>
+    <message>
+        <location filename="../attributedialog.cpp" line="48"/>
+        <source>Attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../attributedialog.cpp" line="49"/>
+        <source>Add key</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../attributedialog.cpp" line="50"/>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>AttributeWidget</name>
+    <message>
+        <location filename="../attributewidget.ui" line="13"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>BranchPropertyWindow</name>
+    <message>
+        <location filename="../branchpropwindow.cpp" line="16"/>
+        <source>Property Editor</source>
+        <comment>Window caption</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.cpp" line="32"/>
+        <source>Name</source>
+        <comment>Branchprop window: Attribute name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.cpp" line="33"/>
+        <source>Value</source>
+        <comment>Branchprop window: Attribute value</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.cpp" line="34"/>
+        <source>Type</source>
+        <comment>Branchprop window: Attribute type</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="19"/>
+        <source>Branch Property Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="29"/>
+        <source>Frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="50"/>
+        <source>Geometry</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="63"/>
+        <source>No Frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="68"/>
+        <source>Rectangle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="73"/>
+        <source>Ellipse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="94"/>
+        <source>Padding</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="101"/>
+        <source>Borderline width</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="151"/>
+        <source>Colors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="194"/>
+        <source>Borderline color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="217"/>
+        <source>Background color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="246"/>
+        <source>Layout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="254"/>
+        <source>Include images horizontally</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="261"/>
+        <source>Include images vertically</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="284"/>
+        <source>Link</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="290"/>
+        <source>Hide link if unselected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="311"/>
+        <source>Attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="337"/>
+        <source>+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="344"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="413"/>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>EditXLinkDialog</name>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="24"/>
+        <source>Edit XLink</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="62"/>
+        <source>XLink width:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="78"/>
+        <source>Set color of heading</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="108"/>
+        <source>XLink color:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="150"/>
+        <source>Use as default:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="202"/>
+        <source>Quit and delete XLink</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="225"/>
+        <source>Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ExportXHTMLDialog</name>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="19"/>
+        <source>Export XHTML</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="48"/>
+        <source>Export to directory:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="455"/>
+        <source>Browse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="92"/>
+        <source>Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="113"/>
+        <source>show output of external scripts</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="144"/>
+        <source>Include image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="151"/>
+        <source>Colored headings in text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="158"/>
+        <source>Save settings in map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="176"/>
+        <source>Stylesheets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="232"/>
+        <source>XSL:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="289"/>
+        <source>CSS:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="320"/>
+        <source>Scripts</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="376"/>
+        <source>Before export:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="436"/>
+        <source>After Export:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="508"/>
+        <source>Export</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="501"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="335"/>
+        <source>Warning</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="119"/>
+        <source>The settings saved in the map would like to run scripts:
+
+%1
+
+Please check, if you really
+want to allow this in your system!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="140"/>
+        <source>VYM - Export HTML to directory</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="335"/>
+        <source>Could not open %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="320"/>
+        <source>Could not write %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="405"/>
+        <source>Critical Error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="401"/>
+        <source>Could not start %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="406"/>
+        <source>%1 didn&apos;t exit normally</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="165"/>
+        <source>show warnings of xslt processor</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ExtraInfoDialog</name>
+    <message>
+        <location filename="../extrainfodialog.ui" line="16"/>
+        <source>VYM - Info</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="28"/>
+        <source>Map:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="42"/>
+        <source>Author:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="52"/>
+        <source>Comment:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="77"/>
+        <source>Statistics:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="129"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="136"/>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>FindWindow</name>
+    <message>
+        <location filename="../findwindow.cpp" line="40"/>
+        <source>Clear</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../findwindow.cpp" line="45"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../findwindow.cpp" line="51"/>
+        <source>Find</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../findwindow.cpp" line="14"/>
+        <source>Find Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../findwindow.cpp" line="21"/>
+        <source>Text to find:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>Heading of mapcenter in new map</name>
+    <message>
+        <location filename="../vymmodel.cpp" line="105"/>
+        <source>New map</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>HistoryWindow</name>
+    <message>
+        <location filename="../historywindow.ui" line="13"/>
+        <source>Dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="50"/>
+        <source>Redo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="72"/>
+        <source>Time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="77"/>
+        <source>Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="85"/>
+        <source>Undo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="122"/>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../historywindow.cpp" line="18"/>
+        <source>Action</source>
+        <comment>Table with actions</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../historywindow.cpp" line="21"/>
+        <source>Comment</source>
+        <comment>Table with actions</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../historywindow.cpp" line="24"/>
+        <source>Undo action</source>
+        <comment>Table with actions</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../historywindow.cpp" line="126"/>
+        <source>Current state</source>
+        <comment>Current bar in history hwindow</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>Main</name>
+    <message>
+        <location filename="../mainwindow.cpp" line="429"/>
+        <source>Close Map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="454"/>
+        <source>Undo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="471"/>
+        <source>Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="480"/>
+        <source>Cut</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="490"/>
+        <source>Paste</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="614"/>
+        <source>Move branch up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="624"/>
+        <source>Move branch down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="645"/>
+        <source>Scroll branch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="669"/>
+        <source>Find</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="678"/>
+        <source>Open URL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="699"/>
+        <source>Edit URL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="717"/>
+        <source>Use heading of selected branch as URL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="738"/>
+        <source>Jump to another vym map, if needed load it first</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="754"/>
+        <source>Edit link to another vym map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="760"/>
+        <source>Delete link to another vym map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="775"/>
+        <source>Edit Map Info</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="515"/>
+        <source>edit Heading</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="524"/>
+        <source>Delete Selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="545"/>
+        <source>Add a branch as child of selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="588"/>
+        <source>Add a branch above selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="606"/>
+        <source>Add a branch below selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="782"/>
+        <source>Add map at selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="790"/>
+        <source>Replace selection with map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="798"/>
+        <source>Save selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="825"/>
+        <source>Select upper branch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="831"/>
+        <source>Select lower branch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="837"/>
+        <source>Select left branch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="843"/>
+        <source>Select right branch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="849"/>
+        <source>Select first branch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="859"/>
+        <source>Select last branch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="870"/>
+        <source>Add Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="895"/>
+        <source>Set Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="894"/>
+        <source>Set &amp;Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="901"/>
+        <source>Pick color
+Hint: You can pick a color from another branch and color using CTRL+Left Button</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="911"/>
+        <source>Color branch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="921"/>
+        <source>Color Subtree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="940"/>
+        <source>Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="933"/>
+        <source>Linkstyle Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="946"/>
+        <source>PolyLine</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="945"/>
+        <source>Linkstyle Thick Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="952"/>
+        <source>PolyParabel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="967"/>
+        <source>Use same color for links and headings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="975"/>
+        <source>Set Link Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="987"/>
+        <source>Set Background Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="986"/>
+        <source>Set &amp;Background Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1005"/>
+        <source>&amp;View</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1009"/>
+        <source>Zoom reset</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1016"/>
+        <source>Zoom in</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1023"/>
+        <source>Zoom out</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1102"/>
+        <source>Use modifier to color branches</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1376"/>
+        <source>&amp;Settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1381"/>
+        <source>Set application to open pdf files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1427"/>
+        <source>Edit branch after adding it</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1434"/>
+        <source>Select branch after adding it</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1441"/>
+        <source>Select heading before editing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1484"/>
+        <source>&amp;Test</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1510"/>
+        <source>Open VYM Documentation (pdf)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1525"/>
+        <source>Information about QT toolkit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2017"/>
+        <source>Overwrite</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2018"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1783"/>
+        <source>Open anyway</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1831"/>
+        <source>Create</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1907"/>
+        <source>Load vym map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1910"/>
+        <source>Import: Add vym map to selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1913"/>
+        <source>Import: Replace selection with vym map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2306"/>
+        <source>Save modified map before closing it</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2357"/>
+        <source>Discard changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2351"/>
+        <source>This map is not saved yet. Do you want to</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2356"/>
+        <source>Save map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3285"/>
+        <source>VYM -Information:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2790"/>
+        <source>Critical Error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3734"/>
+        <source>Critcal error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="570"/>
+        <source>Add a branch by inserting and making selection its child</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="806"/>
+        <source>Remove only branch and keep its childs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="816"/>
+        <source>Remove childs of branch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1110"/>
+        <source>Use modifier to copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1541"/>
+        <source>Add</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1117"/>
+        <source>Use modifier to draw xLinks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1456"/>
+        <source>Use exclusive flags in flag toolbars</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1386"/>
+        <source>Set application to open external links</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1448"/>
+        <source>Delete key for deleting branches</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1778"/>
+        <source>The map %1
+is already opened.Opening the same map in multiple editors may lead 
+to confusion when finishing working with vym.Do you want to</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1825"/>
+        <source>This map does not exist:
+  %1
+Do you want to create a new one?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1977"/>
+        <source>Saved  %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1982"/>
+        <source>Couldn&apos;t save </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2012"/>
+        <source>The file %1
+exists already. Do you want to</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2301"/>
+        <source>The map %1 has been modified but not saved yet. Do you want to</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2791"/>
+        <source>Couldn&apos;t open map %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="435"/>
+        <source>Exit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="462"/>
+        <source>Redo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="960"/>
+        <source>Hide link</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1164"/>
+        <source>Take care!</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1168"/>
+        <source>Really?</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1172"/>
+        <source>ok!</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1176"/>
+        <source>Not ok!</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1180"/>
+        <source>This won&apos;t work!</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1184"/>
+        <source>Good</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1188"/>
+        <source>Bad</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1197"/>
+        <source>Time critical</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1203"/>
+        <source>Idea!</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1207"/>
+        <source>Important</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1211"/>
+        <source>Unimportant</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1224"/>
+        <source>I like this</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1228"/>
+        <source>I do not like this</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1241"/>
+        <source>Dangerous</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1249"/>
+        <source>This will help</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1520"/>
+        <source>About VYM</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2139"/>
+        <source>Import</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="399"/>
+        <source>KDE Bookmarks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2249"/>
+        <source>(still experimental)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2221"/>
+        <source>Export as LaTeX</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="420"/>
+        <source>&amp;Print</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2269"/>
+        <source>Export to</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="766"/>
+        <source>Hide object in exports</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1463"/>
+        <source>Use hide flag during exports </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="685"/>
+        <source>Open URL in new tab</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3819"/>
+        <source>Warning</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3749"/>
+        <source>Couldn&apos;t find a viewer to open %1.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3821"/>
+        <source>Please use Settings-&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3253"/>
+        <source>Set application to open an URL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2498"/>
+        <source>Couldn&apos;t start %1 to open a new tab in %2.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3750"/>
+        <source>Set application to open PDF files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1192"/>
+        <source>Oh no!</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1200"/>
+        <source>Call...</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1215"/>
+        <source>Very important!</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1219"/>
+        <source>Very unimportant!</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1232"/>
+        <source>Rose</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1238"/>
+        <source>Surprise!</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1245"/>
+        <source>Info</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="350"/>
+        <source>Firefox Bookmarks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1039"/>
+        <source>Show Note Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2079"/>
+        <source>Bookmarks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2513"/>
+        <source>Couldn&apos;t start %1 to open a new tab</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1154"/>
+        <source>Standard Flags</source>
+        <comment>Standard Flag Toolbar</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2289"/>
+        <source>Couldn&apos;t find configuration for export to Open Office
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2431"/>
+        <source>No matches found for &quot;%1&quot;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="297"/>
+        <source>&amp;Map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="692"/>
+        <source>Open all URLs in subtree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="745"/>
+        <source>Open all vym links in subtree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2518"/>
+        <source>Sorry, currently only Konqueror and Mozilla support tabbed browsing.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="302"/>
+        <source>New map</source>
+        <comment>Status tip File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="315"/>
+        <source>&amp;Open...</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="316"/>
+        <source>Open</source>
+        <comment>Status tip File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="322"/>
+        <source>Open Recent</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="325"/>
+        <source>&amp;Save...</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="326"/>
+        <source>Save</source>
+        <comment>Status tip file menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="333"/>
+        <source>Save &amp;As...</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="334"/>
+        <source>Save &amp;As</source>
+        <comment>Status tip file menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="340"/>
+        <source>Import</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="350"/>
+        <source>Import %1</source>
+        <comment>Status tip file menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="343"/>
+        <source>KDE bookmarks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="349"/>
+        <source>Firefox Bookmarks</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="361"/>
+        <source>Import %1</source>
+        <comment>status tip file menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="365"/>
+        <source>Import Dir%1</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="366"/>
+        <source>Import directory structure (experimental)</source>
+        <comment>status tip file menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="370"/>
+        <source>Export</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="372"/>
+        <source>Image%1</source>
+        <comment>File export menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="373"/>
+        <source>Export map as image</source>
+        <comment>status tip file menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="378"/>
+        <source>Export in Open Document Format used e.g. in Open Office </source>
+        <comment>status tip file menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="384"/>
+        <source>Export as %1</source>
+        <comment>status tip file menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="384"/>
+        <source> webpage (XHTML)</source>
+        <comment>status tip file menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="414"/>
+        <source>Export as %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="398"/>
+        <source>KDE Bookmarks</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="421"/>
+        <source>Print</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="428"/>
+        <source>&amp;Close Map</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="434"/>
+        <source>E&amp;xit</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="445"/>
+        <source>&amp;Actions toolbar</source>
+        <comment>Toolbar name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="448"/>
+        <source>&amp;Edit</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="452"/>
+        <source>&amp;Undo</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="461"/>
+        <source>&amp;Redo</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="470"/>
+        <source>&amp;Copy</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="479"/>
+        <source>Cu&amp;t</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="488"/>
+        <source>&amp;Paste</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="514"/>
+        <source>Edit heading</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="523"/>
+        <source>Delete Selection</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="544"/>
+        <source>Add branch as child</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="569"/>
+        <source>Add branch (insert)</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="587"/>
+        <source>Add branch above</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="605"/>
+        <source>Add branch below</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="613"/>
+        <source>Move up</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="622"/>
+        <source>Move down</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="643"/>
+        <source>Scroll branch</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="668"/>
+        <source>Find...</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="676"/>
+        <source>Open URL</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="684"/>
+        <source>Open URL in new tab</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="691"/>
+        <source>Open all URLs in subtree</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="698"/>
+        <source>Edit URL...</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="716"/>
+        <source>Use heading for URL</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="737"/>
+        <source>Open linked map</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="744"/>
+        <source>Open all vym links in subtree</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="752"/>
+        <source>Edit vym link...</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="759"/>
+        <source>Delete vym link</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="765"/>
+        <source>Hide in exports</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="774"/>
+        <source>Edit Map Info...</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="781"/>
+        <source>Add map (insert)</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="789"/>
+        <source>Add map (replace)</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="797"/>
+        <source>Save selection</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="805"/>
+        <source>Remove only branch </source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="815"/>
+        <source>Remove childs</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="824"/>
+        <source>Select upper branch</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="830"/>
+        <source>Select lower branch</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="836"/>
+        <source>Select left branch</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="842"/>
+        <source>Select child branch</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="848"/>
+        <source>Select first branch</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="858"/>
+        <source>Select last branch</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="869"/>
+        <source>Add Image...</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="887"/>
+        <source>F&amp;ormat</source>
+        <comment>Format menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="889"/>
+        <source>Format Actions</source>
+        <comment>Format Toolbar name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="900"/>
+        <source>Pic&amp;k color</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="910"/>
+        <source>Color &amp;branch</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="920"/>
+        <source>Color sub&amp;tree</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="959"/>
+        <source>Hide link if object is not selected</source>
+        <comment>Branch attribute</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="966"/>
+        <source>&amp;Use color of heading for link</source>
+        <comment>Branch attribute</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1002"/>
+        <source>View Actions</source>
+        <comment>View Toolbar name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1008"/>
+        <source>reset Zoom</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1015"/>
+        <source>Zoom in</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1022"/>
+        <source>Zoom out</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1038"/>
+        <source>Show Note Editor</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1095"/>
+        <source>Modes when using modifiers</source>
+        <comment>Modifier Toolbar name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1100"/>
+        <source>Use modifier to color branches</source>
+        <comment>Mode modifier</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1108"/>
+        <source>Use modifier to copy</source>
+        <comment>Mode modifier</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1115"/>
+        <source>Use modifier to draw xLinks</source>
+        <comment>Mode modifier</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1380"/>
+        <source>Set application to open pdf files</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1385"/>
+        <source>Set application to open external links</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1426"/>
+        <source>Edit branch after adding it</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1433"/>
+        <source>Select branch after adding it</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1440"/>
+        <source>Select existing heading</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1447"/>
+        <source>Delete key</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1455"/>
+        <source>Exclusive flags</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1462"/>
+        <source>Use hide flags</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1506"/>
+        <source>&amp;Help</source>
+        <comment>Help menubar entry</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1509"/>
+        <source>Open VYM Documentation (pdf) </source>
+        <comment>Help action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1519"/>
+        <source>About VYM</source>
+        <comment>Help action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1524"/>
+        <source>About QT</source>
+        <comment>Help action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1552"/>
+        <source>Remove</source>
+        <comment>Context menu name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1591"/>
+        <source>Edit XLink</source>
+        <comment>Context menu name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1592"/>
+        <source>Follow XLink</source>
+        <comment>Context menu name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1599"/>
+        <source>Save image</source>
+        <comment>Context action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="301"/>
+        <source>&amp;New map</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="308"/>
+        <source>&amp;Copy to new map</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="309"/>
+        <source>Copy selection to mapcenter of a new map</source>
+        <comment>Status tip File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="532"/>
+        <source>Add mapcenter</source>
+        <comment>Canvas context menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="631"/>
+        <source>Sort children</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="661"/>
+        <source>Unscroll childs</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="662"/>
+        <source>Unscroll all scrolled branches in selected subtree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="707"/>
+        <source>Edit local URL...</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="708"/>
+        <source>Edit local URL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="723"/>
+        <source>Create URL to Novell Bugzilla</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="724"/>
+        <source>Create URL to Novell Bugzilla</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="730"/>
+        <source>Create URL to Novell FATE</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="731"/>
+        <source>Create URL to Novell FATE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="874"/>
+        <source>Property window</source>
+        <comment>Dialog to edit properties of selection</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="875"/>
+        <source>Set properties for selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="939"/>
+        <source>Linkstyle Curve</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="951"/>
+        <source>Linkstyle Thick Curve</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="974"/>
+        <source>Set &amp;Link Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="980"/>
+        <source>Set &amp;Selection Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="981"/>
+        <source>Set Selection Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="992"/>
+        <source>Set &amp;Background image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="993"/>
+        <source>Set Background image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1029"/>
+        <source>Show selection</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1030"/>
+        <source>Show selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1047"/>
+        <source>History Window</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1048"/>
+        <source>Show History Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1060"/>
+        <source>Antialiasing</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1061"/>
+        <source>Antialiasing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1068"/>
+        <source>Smooth pixmap transformations</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1076"/>
+        <source>Next Map</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1082"/>
+        <source>Previous Map</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1136"/>
+        <source>Note</source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1139"/>
+        <source>URL to Document </source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1142"/>
+        <source>Link to another vym map</source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1145"/>
+        <source>subtree is scrolled</source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1148"/>
+        <source>subtree is temporary scrolled</source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1151"/>
+        <source>Hide object in exported maps</source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1235"/>
+        <source>I just love...</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1256"/>
+        <source>Important</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1261"/>
+        <source>Priority</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1265"/>
+        <source>Back</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1268"/>
+        <source>Forward</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1271"/>
+        <source>Look here</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1274"/>
+        <source>Dangerous</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1277"/>
+        <source>Don&apos;t forget</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1280"/>
+        <source>Flag</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1284"/>
+        <source>Home</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1288"/>
+        <source>Telephone</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1291"/>
+        <source>Music</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1294"/>
+        <source>Mailbox</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1297"/>
+        <source>Maix</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1300"/>
+        <source>Password</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1303"/>
+        <source>To be improved</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1306"/>
+        <source>Stop</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1309"/>
+        <source>Magic</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1312"/>
+        <source>To be discussed</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1315"/>
+        <source>Reminder</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1318"/>
+        <source>Excellent</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1321"/>
+        <source>Linux</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1324"/>
+        <source>Sweet</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1390"/>
+        <source>Set path for macros</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1391"/>
+        <source>Set path for macros</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1395"/>
+        <source>Set number of undo levels</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1396"/>
+        <source>Set number of undo levels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1402"/>
+        <source>Autosave</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1403"/>
+        <source>Autosave</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1410"/>
+        <source>Autosave time</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1411"/>
+        <source>Autosave time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1416"/>
+        <source>Write backup file on save</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1417"/>
+        <source>Write backup file on save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1469"/>
+        <source>Animation</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1470"/>
+        <source>Animation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1514"/>
+        <source>Open VYM example maps </source>
+        <comment>Help action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1515"/>
+        <source>Open VYM example maps </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1569"/>
+        <source>References (URLs, vymLinks, ...)</source>
+        <comment>Context menu name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1645"/>
+        <source>&amp;%1 %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2108"/>
+        <source>Load Freemind map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2202"/>
+        <source>Export as CSV</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3268"/>
+        <source>Directory with vym macros:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3300"/>
+        <source>QInputDialog::getInteger()</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3281"/>
+        <source>Number of undo/redo levels:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3286"/>
+        <source>Settings have been changed. The next map opened will have &quot;%1&quot; undo/redo levels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3301"/>
+        <source>Number of seconds before autosave:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3411"/>
+        <source>History for %1</source>
+        <comment>Window Caption</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3735"/>
+        <source>Couldn&apos;t find the documentation %1 in:
+%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3771"/>
+        <source>Load vym example map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3820"/>
+        <source>Couldn&apos;t find a macro at  %1.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3821"/>
+        <source>Set directory for vym macros</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>MapEditor</name>
+    <message>
+        <location filename="../mapeditor.cpp" line="1703"/>
+        <source>Critical Parse Error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4136"/>
+        <source>Overwrite</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4137"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2129"/>
+        <source>Critical Export Error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2432"/>
+        <source>Critical Error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3474"/>
+        <source>Enter URL:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4067"/>
+        <source>Images</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4314"/>
+        <source>Critical Import Error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4130"/>
+        <source>The file %1 exists already.
+Do you want to overwrite it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2129"/>
+        <source>MapEditor::exportXML couldn&apos;t open %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4314"/>
+        <source>Cannot find the directory %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3579"/>
+        <source>Link to another map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4072"/>
+        <source>Load image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4362"/>
+        <source>Choose directory structure to import</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="110"/>
+        <source>unnamed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4116"/>
+        <source>Save image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2426"/>
+        <source>Critical Parse Error while reading %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2432"/>
+        <source>Could not read %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3324"/>
+        <source>Warning</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3324"/>
+        <source>Can&apos;t get color of heading,
+there&apos;s no branch selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1795"/>
+        <source>Critical Load Error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1602"/>
+        <source>Couldn&apos;t create temporary directory before load
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1645"/>
+        <source>Couldn&apos;t find a map (*.xml) in .vym archive.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1741"/>
+        <source>The map %1
+did not use the compressed vym file format.
+Writing it uncompressed will also write images 
+and flags and thus may overwrite files in the given directory
+
+Do you want to write the map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1746"/>
+        <source>compressed (vym default)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1747"/>
+        <source>uncompressed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1782"/>
+        <source>Save Error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1778"/>
+        <source>%1
+could not be removed before saving</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1783"/>
+        <source>%1
+could not be renamed before saving</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1796"/>
+        <source>Couldn&apos;t create temporary directory before save
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2033"/>
+        <source>Export map as image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2110"/>
+        <source>Export XML to directory</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2260"/>
+        <source>Autosave disabled during undo.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3268"/>
+        <source>Load background image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3489"/>
+        <source>Text</source>
+        <comment>Filedialog</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3490"/>
+        <source>Spreadsheet</source>
+        <comment>Filedialog</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3491"/>
+        <source>Textdocument</source>
+        <comment>Filedialog</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3492"/>
+        <source>Images</source>
+        <comment>Filedialog</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3495"/>
+        <source>Set URL to a local file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3727"/>
+        <source>%1 items on map
+</source>
+        <comment>Info about map</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="5291"/>
+        <source>The file of the map  on disk has changed:
+
+   %1
+
+Do you want to reload that map with the new file?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="5297"/>
+        <source>Reload</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="5298"/>
+        <source>Ignore</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="../file.cpp" line="439"/>
+        <source>This is not an image.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="557"/>
+        <source>Critical Export Error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="352"/>
+        <source>Could not write %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="353"/>
+        <source>Export failed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="524"/>
+        <source>Check &quot;%1&quot; in
+%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="557"/>
+        <source>Could not read %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../xsltproc.cpp" line="82"/>
+        <source>Critical Error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="272"/>
+        <source>Couldn&apos;t start zip to compress data.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="282"/>
+        <source>zip didn&apos;t exit normally</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="316"/>
+        <source>Couldn&apos;t start unzip to decompress data.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="326"/>
+        <source>unzip didn&apos;t exit normally</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../xsltproc.cpp" line="77"/>
+        <source>Could not start %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../xsltproc.cpp" line="83"/>
+        <source>%1 didn&apos;t exit normally</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="77"/>
+        <source>The file %1 exists already.
+Do you want to overwrite it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="105"/>
+        <source>Overwrite</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="106"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="441"/>
+        <source>Sorry, no preview for
+multiple selected files.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="294"/>
+        <source>Exporting the %1 bookmarks will overwrite
+your existing bookmarks file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="295"/>
+        <source>Warning: Overwriting %1 bookmarks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="278"/>
+        <source>Warning</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="279"/>
+        <source>Couldn&apos;t find script %1
+to notifiy Browsers of changed bookmarks.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../main.cpp" line="192"/>
+        <source>Error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../imports.cpp" line="17"/>
+        <source>Couldn&apos;t access temporary directory
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="131"/>
+        <source>Export as ASCII</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="131"/>
+        <source>(still experimental)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="99"/>
+        <source>The directory %1 is not empty.
+Do you risk to overwrite its contents?</source>
+        <comment>write directory</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../main.cpp" line="193"/>
+        <source>Couldn&apos;t open %1.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ShowTextDialog</name>
+    <message>
+        <location filename="../showtextdialog.ui" line="16"/>
+        <source>Dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../showtextdialog.ui" line="52"/>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SimpleScriptEditor</name>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="61"/>
+        <source>Save script</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="73"/>
+        <source>The file %1
+exists already.
+Do you want to overwrite it?</source>
+        <comment>dialog &apos;save as&apos;</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="78"/>
+        <source>Overwrite</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="79"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="105"/>
+        <source>Load script</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="116"/>
+        <source>Error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="117"/>
+        <source>Couldn&apos;t open %1.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="13"/>
+        <source>Simple Script Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="38"/>
+        <source>Save as</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="48"/>
+        <source>Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="51"/>
+        <source>Qt::CTRL + Qt::Key_S</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="58"/>
+        <source>Open</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="61"/>
+        <source>Qt::CTRL +Qt::Key_O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="68"/>
+        <source>Run</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="71"/>
+        <source>Qt::CTRL + Qt::Key_R</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="78"/>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>TextEditor</name>
+    <message>
+        <location filename="../texteditor.cpp" line="202"/>
+        <source>&amp;Import...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="211"/>
+        <source>&amp;Export...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="219"/>
+        <source>Export &amp;As... (HTML)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="225"/>
+        <source>Export &amp;As...(ASCII)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="675"/>
+        <source>Print Note</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="233"/>
+        <source>&amp;Print...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="246"/>
+        <source>&amp;Edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="249"/>
+        <source>&amp;Undo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="257"/>
+        <source>&amp;Redo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="266"/>
+        <source>Select and copy &amp;all</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="273"/>
+        <source>&amp;Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="281"/>
+        <source>Cu&amp;t</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="289"/>
+        <source>&amp;Paste</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="297"/>
+        <source>&amp;Delete All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="314"/>
+        <source>&amp;Font hint</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="347"/>
+        <source>&amp;Color...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="353"/>
+        <source>&amp;Bold</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="361"/>
+        <source>&amp;Italic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="369"/>
+        <source>&amp;Underline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="400"/>
+        <source>&amp;Left</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="406"/>
+        <source>C&amp;enter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="412"/>
+        <source>&amp;Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="418"/>
+        <source>&amp;Justify</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="428"/>
+        <source>&amp;Settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="431"/>
+        <source>Set &amp;fixed font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="437"/>
+        <source>Set &amp;variable font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="443"/>
+        <source>&amp;fixed font is default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="557"/>
+        <source>Export Note to single file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="645"/>
+        <source>Overwrite</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="646"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="631"/>
+        <source>Export Note to single file (ASCII)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="380"/>
+        <source>Subs&amp;cript</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="388"/>
+        <source>Su&amp;perscript</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="457"/>
+        <source>Note Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="310"/>
+        <source>F&amp;ormat</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="244"/>
+        <source>Edit Actions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="308"/>
+        <source>Format Actions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="197"/>
+        <source>Note Actions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="38"/>
+        <source>Ready</source>
+        <comment>Statusbar message</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="163"/>
+        <source>No filename available for this note.</source>
+        <comment>Statusbar message</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="39"/>
+        <source>Note Editor</source>
+        <comment>Window caption</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="199"/>
+        <source>&amp;Note</source>
+        <comment>Menubar</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="203"/>
+        <source>Import</source>
+        <comment>Status tip for Note menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="212"/>
+        <source>Export Note (HTML)</source>
+        <comment>Status tip for Note menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="220"/>
+        <source>Export Note As (HTML) </source>
+        <comment>Status tip for Note Menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="226"/>
+        <source>Export Note As (ASCII) </source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="234"/>
+        <source>Print Note</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="250"/>
+        <source>Undo</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="258"/>
+        <source>Redo</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="267"/>
+        <source>Select and copy all</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="274"/>
+        <source>Copy</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="282"/>
+        <source>Cut</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="290"/>
+        <source>Paste</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="298"/>
+        <source>Delete all</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="315"/>
+        <source>Toggle font hint for the whole text</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="432"/>
+        <source>Set fixed font</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="438"/>
+        <source>Set variable font</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="444"/>
+        <source>Used fixed font by default</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="640"/>
+        <source>The file %1
+exists already.
+Do you want to overwrite it?</source>
+        <comment>dialog &apos;save note as&apos;</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="589"/>
+        <source>Couldn&apos;t export note </source>
+        <comment>dialog &apos;save note as&apos;</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>WarningDialog</name>
+    <message>
+        <location filename="../warningdialog.ui" line="13"/>
+        <source>VYM - Warning : Foo...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.ui" line="106"/>
+        <source>showAgainBox</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.ui" line="132"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.ui" line="139"/>
+        <source>Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.cpp" line="11"/>
+        <source>Proceed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.cpp" line="15"/>
+        <source>Show this message again</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
diff --git a/lang/vym_es.qm b/lang/vym_es.qm
new file mode 100644 (file)
index 0000000..0454abe
Binary files /dev/null and b/lang/vym_es.qm differ
diff --git a/lang/vym_es.ts b/lang/vym_es.ts
new file mode 100644 (file)
index 0000000..190ea14
--- /dev/null
@@ -0,0 +1,4348 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS><TS version="1.1">
+<context>
+    <name>AboutDialog</name>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Ok</source>
+        <translation type="obsolete">Ok</translation>
+    </message>
+    <message>
+        <location filename="../aboutdialog.cpp" line="205"/>
+        <source>Ok</source>
+        <comment>Ok Button</comment>
+        <translation type="unfinished">Ok</translation>
+    </message>
+</context>
+<context>
+    <name>AboutTextBrowser</name>
+    <message>
+        <location filename="../aboutdialog.cpp" line="228"/>
+        <source>Please use Settings-&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../aboutdialog.cpp" line="228"/>
+        <source>Set application to open an URL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../aboutdialog.cpp" line="226"/>
+        <source>Warning</source>
+        <comment>About window</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../aboutdialog.cpp" line="227"/>
+        <source>Couldn&apos;t find a viewer to open %1.
+</source>
+        <comment>About window</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>Attribute Dialog</name>
+    <message>
+        <location filename="../attributedialog.cpp" line="74"/>
+        <source>AttributeDialog - Edit definitions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../attributedialog.cpp" line="76"/>
+        <source>AttributeDialog - Edit %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>AttributeDialog</name>
+    <message>
+        <location filename="../attributedialog.cpp" line="48"/>
+        <source>Attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../attributedialog.cpp" line="49"/>
+        <source>Add key</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../attributedialog.cpp" line="50"/>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>AttributeWidget</name>
+    <message>
+        <location filename="../attributewidget.ui" line="13"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>BranchPropertyWindow</name>
+    <message>
+        <location filename="../branchpropwindow.cpp" line="16"/>
+        <source>Property Editor</source>
+        <comment>Window caption</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.cpp" line="32"/>
+        <source>Name</source>
+        <comment>Branchprop window: Attribute name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.cpp" line="33"/>
+        <source>Value</source>
+        <comment>Branchprop window: Attribute value</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.cpp" line="34"/>
+        <source>Type</source>
+        <comment>Branchprop window: Attribute type</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="19"/>
+        <source>Branch Property Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="29"/>
+        <source>Frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="50"/>
+        <source>Geometry</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="63"/>
+        <source>No Frame</source>
+        <translation type="unfinished">Sin marco</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="68"/>
+        <source>Rectangle</source>
+        <translation type="unfinished">Rectángulo</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="73"/>
+        <source>Ellipse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="94"/>
+        <source>Padding</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="101"/>
+        <source>Borderline width</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="151"/>
+        <source>Colors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="194"/>
+        <source>Borderline color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="217"/>
+        <source>Background color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="246"/>
+        <source>Layout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="254"/>
+        <source>Include images horizontally</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="261"/>
+        <source>Include images vertically</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="284"/>
+        <source>Link</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="290"/>
+        <source>Hide link if unselected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="311"/>
+        <source>Attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="337"/>
+        <source>+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="344"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="413"/>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>EditXLinkDialog</name>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="24"/>
+        <source>Edit XLink</source>
+        <translation type="unfinished">Editar XEnlace</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="62"/>
+        <source>XLink width:</source>
+        <translation type="unfinished">Ancho XEnlace:</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="78"/>
+        <source>Set color of heading</source>
+        <translation type="unfinished">Configurar color de encabezado</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="108"/>
+        <source>XLink color:</source>
+        <translation type="unfinished">Color XEnlace:</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="150"/>
+        <source>Use as default:</source>
+        <translation type="unfinished">Use como por defecto:</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Delete XLink</source>
+        <translation type="obsolete">Borrar XEnlace</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="225"/>
+        <source>Ok</source>
+        <translation type="unfinished">Ok</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="202"/>
+        <source>Quit and delete XLink</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ExportHTMLDialog</name>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Export HTML</source>
+        <translation type="obsolete">Exportar HTML</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Directory:</source>
+        <translation type="obsolete">Directorio:</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Browse</source>
+        <translation type="obsolete">Buscar</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Options</source>
+        <translation type="obsolete">Opciones</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Include image of map</source>
+        <translation type="obsolete">Incluir imagen de mapa</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>create image only</source>
+        <translation type="obsolete">Crear imagen solamente</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>use WIKI style</source>
+        <translation type="obsolete">Usar estilo WIKI</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>use heading for URLs (instead of link target)</source>
+        <translation type="obsolete">Usar encabezado de URLs (en vez de un objetivo enlazado)</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>use image of earth to mark URLs in text</source>
+        <translation type="obsolete">Usar imagen de la tierra para markar URLs en el texto</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>use default CSS file</source>
+        <translation type="obsolete">Usar archivo CSS por defecto</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>show output of external scripts</source>
+        <translation type="obsolete">Mostar salida de scripts externos</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Export</source>
+        <translation type="obsolete">Exportar</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Cancel</source>
+        <translation type="obsolete">Cancelar</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>VYM - Export HTML to directory</source>
+        <translation type="obsolete">VYM - Exportar HTML a directorio</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Critcal export error</source>
+        <translation type="obsolete">Error crítico de exporte</translation>
+    </message>
+</context>
+<context>
+    <name>ExportXHTMLDialog</name>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="19"/>
+        <source>Export XHTML</source>
+        <translation type="unfinished">Exportar HTML</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="48"/>
+        <source>Export to directory:</source>
+        <translation type="unfinished">Exportar a directorio:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="455"/>
+        <source>Browse</source>
+        <translation type="unfinished">Buscar</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="92"/>
+        <source>Options</source>
+        <translation type="unfinished">Opciones</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="144"/>
+        <source>Include image</source>
+        <translation type="unfinished">Incluir Imagen</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="151"/>
+        <source>Colored headings in text</source>
+        <translation type="unfinished">Encabezados coloreados en texto</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="158"/>
+        <source>Save settings in map</source>
+        <translation type="unfinished">Guardar configuraciones en mapa</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>showWarnings e.g. if directory is not empty</source>
+        <translation type="obsolete">Mostrar Advertencias eje: si el directorio no está vacio</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="113"/>
+        <source>show output of external scripts</source>
+        <translation type="unfinished">Mostrar salida de scripts externos</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="289"/>
+        <source>CSS:</source>
+        <translation type="unfinished">CSS:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="232"/>
+        <source>XSL:</source>
+        <translation type="unfinished">XSL:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="376"/>
+        <source>Before export:</source>
+        <translation type="unfinished">Antes de exportar:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="436"/>
+        <source>After Export:</source>
+        <translation type="unfinished">Después de Exportar:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="508"/>
+        <source>Export</source>
+        <translation type="unfinished">Exportar</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="501"/>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="335"/>
+        <source>Warning</source>
+        <translation type="unfinished">Advertencia</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>The settings saved in the map would like to run scripts:
+
+</source>
+        <translation type="obsolete">Las configuraciones guardadas en el mapa pueden ejecutar scripts:</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Please check, if you really
+want to allow this in your system!</source>
+        <translation type="obsolete">¡Por favor observe si en realidad
+desea permitir esto en su sistema!</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="140"/>
+        <source>VYM - Export HTML to directory</source>
+        <translation type="unfinished">VYM - Exportar HTML a directorio</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>VYM - Path to CSS file</source>
+        <translation type="obsolete">VYM - Ruta a archivo CSS</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>VYM - Path to XSL file</source>
+        <translation type="obsolete">VYM - Ruta a archivo XSL </translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>VYM - Path to pre export script</source>
+        <translation type="obsolete">VYM - Ruta a script pre-exportado</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>VYM - Path to post export script</source>
+        <translation type="obsolete">VYM - Ruta a script post-exportado</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source> could not be opened!</source>
+        <translation type="obsolete">¡No puede ser abierto!</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="405"/>
+        <source>Critical Error</source>
+        <translation type="unfinished">Error crítico</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Couldn&apos;t start </source>
+        <translation type="obsolete">No puede iniciar</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>didn&apos;t exit normally</source>
+        <translation type="obsolete">No salio normalmente</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Stylesheets:</source>
+        <translation type="obsolete">Estilo de Hojas:</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Scripts:</source>
+        <translation type="obsolete">Scripts:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="176"/>
+        <source>Stylesheets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="320"/>
+        <source>Scripts</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="119"/>
+        <source>The settings saved in the map would like to run scripts:
+
+%1
+
+Please check, if you really
+want to allow this in your system!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="335"/>
+        <source>Could not open %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="320"/>
+        <source>Could not write %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="401"/>
+        <source>Could not start %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="406"/>
+        <source>%1 didn&apos;t exit normally</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="165"/>
+        <source>show warnings of xslt processor</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ExtraInfoDialog</name>
+    <message>
+        <location filename="../extrainfodialog.ui" line="16"/>
+        <source>VYM - Info</source>
+        <translation type="unfinished">VYM - Información</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="28"/>
+        <source>Map:</source>
+        <translation type="unfinished">Mapa:</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="42"/>
+        <source>Author:</source>
+        <translation type="unfinished">Autor:</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="52"/>
+        <source>Comment:</source>
+        <translation type="unfinished">Comentario:</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="77"/>
+        <source>Statistics:</source>
+        <translation type="unfinished">Estadísticas:</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="129"/>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="136"/>
+        <source>Close</source>
+        <translation type="unfinished">Cerrar</translation>
+    </message>
+</context>
+<context>
+    <name>FindWindow</name>
+    <message>
+        <location filename="../findwindow.cpp" line="40"/>
+        <source>Clear</source>
+        <translation>Limpiar</translation>
+    </message>
+    <message>
+        <location filename="../findwindow.cpp" line="45"/>
+        <source>Cancel</source>
+        <translation>Cancelar</translation>
+    </message>
+    <message>
+        <location filename="../findwindow.cpp" line="51"/>
+        <source>Find</source>
+        <translation>Buscar</translation>
+    </message>
+    <message>
+        <location filename="../findwindow.cpp" line="14"/>
+        <source>Find Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../findwindow.cpp" line="21"/>
+        <source>Text to find:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>Heading of mapcenter in new map</name>
+    <message>
+        <location filename="../vymmodel.cpp" line="105"/>
+        <source>New map</source>
+        <translation type="unfinished">Nuevo Mapa</translation>
+    </message>
+</context>
+<context>
+    <name>HistoryWindow</name>
+    <message>
+        <location filename="../historywindow.ui" line="13"/>
+        <source>Dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="50"/>
+        <source>Redo</source>
+        <translation type="unfinished">Rehacer</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="72"/>
+        <source>Time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="77"/>
+        <source>Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="85"/>
+        <source>Undo</source>
+        <translation type="unfinished">Deshacer</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="122"/>
+        <source>Close</source>
+        <translation type="unfinished">Cerrar</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.cpp" line="18"/>
+        <source>Action</source>
+        <comment>Table with actions</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../historywindow.cpp" line="21"/>
+        <source>Comment</source>
+        <comment>Table with actions</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../historywindow.cpp" line="24"/>
+        <source>Undo action</source>
+        <comment>Table with actions</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../historywindow.cpp" line="126"/>
+        <source>Current state</source>
+        <comment>Current bar in history hwindow</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>Main</name>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;File</source>
+        <translation type="obsolete">&amp;Archivo</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>New map</source>
+        <comment>File menu</comment>
+        <translation type="obsolete">Nuevo Mapa</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;New...</source>
+        <translation type="obsolete">&amp;Nuevo...</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Open</source>
+        <comment>File menu</comment>
+        <translation type="obsolete">Abrir</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Open...</source>
+        <translation type="obsolete">&amp;Abrir...</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Open Recent</source>
+        <translation type="obsolete">Abrir reciente</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Save</source>
+        <translation type="obsolete">Guardar</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Save...</source>
+        <translation type="obsolete">&amp;Guardar...</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Save &amp;As</source>
+        <translation type="obsolete">Guardar &amp;Como</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Save &amp;As...</source>
+        <translation type="obsolete">Guardar &amp;Como...</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Import directory structure (experimental)</source>
+        <translation type="obsolete">Importar estructura de directorio (experimental)</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Import Dir</source>
+        <translation type="obsolete">Importar Directorio</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Export</source>
+        <translation type="obsolete">Exportar</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Print</source>
+        <translation type="obsolete">Imprimir</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Print...</source>
+        <translation type="obsolete">&amp;Imprimir...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="429"/>
+        <source>Close Map</source>
+        <translation>Cerrar Mapa</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Close Map</source>
+        <translation type="obsolete">&amp;Cerrar Mapa</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Exit VYM</source>
+        <translation type="obsolete">Salir VYM</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>E&amp;xit VYM</source>
+        <translation type="obsolete">S&amp;alir VYM</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Edit</source>
+        <translation type="obsolete">&amp;Editar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="454"/>
+        <source>Undo</source>
+        <translation>Deshacer</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Undo</source>
+        <translation type="obsolete">&amp;Deshacer</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="471"/>
+        <source>Copy</source>
+        <translation>Copiar</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Copy</source>
+        <translation type="obsolete">&amp;Copiar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="480"/>
+        <source>Cut</source>
+        <translation>Cortar</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Cu&amp;t</source>
+        <translation type="obsolete">Cort&amp;ar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="490"/>
+        <source>Paste</source>
+        <translation>Pegar</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Paste</source>
+        <translation type="obsolete">&amp;Pegar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="614"/>
+        <source>Move branch up</source>
+        <translation>Mover rama arriba</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Move up</source>
+        <translation type="obsolete">Subir</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="624"/>
+        <source>Move branch down</source>
+        <translation>Mover rama abajo</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Move down</source>
+        <translation type="obsolete">Bajar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="645"/>
+        <source>Scroll branch</source>
+        <translation>Acoplar rollo</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Unscroll all</source>
+        <translation type="obsolete">Desacoplar todo</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Unscroll all scrolled branches</source>
+        <translation type="obsolete">Desacoplar todas las ramas acopladas</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="669"/>
+        <source>Find</source>
+        <translation>Buscar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="678"/>
+        <source>Open URL</source>
+        <translation>Abrir URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="699"/>
+        <source>Edit URL</source>
+        <translation>Editar URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="717"/>
+        <source>Use heading of selected branch as URL</source>
+        <translation>Usar encabezado de rama seleccionada como URL</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Use heading for URL</source>
+        <translation type="obsolete">Usar encabezado para URL</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Create URL to Bugzilla</source>
+        <translation type="obsolete">Crear URL a Bugzila</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="738"/>
+        <source>Jump to another vym map, if needed load it first</source>
+        <translation>Saltar a otro mapa de vym, si necesita cargarlo primero</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Jump to map</source>
+        <translation type="obsolete">Saltar al mapa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="754"/>
+        <source>Edit link to another vym map</source>
+        <translation>Editar enlace a otro mapa vym</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Edit vym link</source>
+        <translation type="obsolete">Editar enlace de vym</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="760"/>
+        <source>Delete link to another vym map</source>
+        <translation>Eliminar enlace a otro mapa vym</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Delete vym link</source>
+        <translation type="obsolete">Eliminar enlace de vym</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="775"/>
+        <source>Edit Map Info</source>
+        <translation>Editar Información de mapa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="515"/>
+        <source>edit Heading</source>
+        <translation>Editar Encabezado</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Edit heading</source>
+        <translation type="obsolete">Editar encabezado</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="524"/>
+        <source>Delete Selection</source>
+        <translation>Eliminar Selección</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="545"/>
+        <source>Add a branch as child of selection</source>
+        <translation>Agregar una rama como hija de selección</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Add branch as child</source>
+        <translation type="obsolete">Agregar rama como hija</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="588"/>
+        <source>Add a branch above selection</source>
+        <translation>Agregar rama arriba de la selección</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Add branch above</source>
+        <translation type="obsolete">Agregar rama arriba</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="606"/>
+        <source>Add a branch below selection</source>
+        <translation>Agregar una rama abajo de la selección</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Add branch below</source>
+        <translation type="obsolete">Agregar rama abajo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="782"/>
+        <source>Add map at selection</source>
+        <translation>Agregar mapa en la selección</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Import (add)</source>
+        <translation type="obsolete">Importar (agregar)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="790"/>
+        <source>Replace selection with map</source>
+        <translation>reemplazar selección con mapa</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Import (replace)</source>
+        <translation type="obsolete">Importar (reemplazar)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="798"/>
+        <source>Save selection</source>
+        <translation>Guardar Selección</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="825"/>
+        <source>Select upper branch</source>
+        <translation>Seleccionar rama más alta</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="831"/>
+        <source>Select lower branch</source>
+        <translation>Seleccionar rama más baja</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="837"/>
+        <source>Select left branch</source>
+        <translation>Seleccionar rama izquierda</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="843"/>
+        <source>Select right branch</source>
+        <translation>Seleccionar rama derecha</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Select child branch</source>
+        <translation type="obsolete">Seleccionar rama hijo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="849"/>
+        <source>Select first branch</source>
+        <translation>Seleccionar primera rama</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="859"/>
+        <source>Select last branch</source>
+        <translation>Seleccionar última rama</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="870"/>
+        <source>Add Image</source>
+        <translation>Agregar Imagen</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Format</source>
+        <translation type="obsolete">&amp;Formato</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="895"/>
+        <source>Set Color</source>
+        <translation>Configurar Color</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="894"/>
+        <source>Set &amp;Color</source>
+        <translation>Configurar &amp;Color</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="901"/>
+        <source>Pick color
+Hint: You can pick a color from another branch and color using CTRL+Left Button</source>
+        <translation>Consejo de escogencia
+de color: Puede escoger un color de otra rama y aplicarlo usando CTRL+botón izquierdo</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Pic&amp;k color</source>
+        <translation type="obsolete">Esco&amp;ger Color</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="911"/>
+        <source>Color branch</source>
+        <translation>Color de rama</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Color &amp;branch</source>
+        <translation type="obsolete">Color de &amp;rama</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="921"/>
+        <source>Color Subtree</source>
+        <translation>Color de Subárbol</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Color sub&amp;tree</source>
+        <translation type="obsolete">Color de Sub&amp;árbol</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="940"/>
+        <source>Line</source>
+        <translation>Línea</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="933"/>
+        <source>Linkstyle Line</source>
+        <translation>Línea de estilo de enlace</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Linkstyle Parabel</source>
+        <translation type="obsolete">Parábola de estilo de enlace</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="946"/>
+        <source>PolyLine</source>
+        <translation>Multilínea</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="945"/>
+        <source>Linkstyle Thick Line</source>
+        <translation>Estilo de enlace de línea gruesa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="952"/>
+        <source>PolyParabel</source>
+        <translation>MultiParábola </translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Linkstyle Thick Parabel</source>
+        <translation type="obsolete">Estilo de enlace de parábola gruesa</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>No Frame</source>
+        <translation type="obsolete">Sin marco</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Rectangle</source>
+        <translation type="obsolete">Rectángulo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="967"/>
+        <source>Use same color for links and headings</source>
+        <translation>Usar el mismo color para enlaces y encabezados</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Use color of heading for link</source>
+        <translation type="obsolete">&amp;Usar color para encabezado de enlace</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="975"/>
+        <source>Set Link Color</source>
+        <translation>Configurar Color de Enlace</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="974"/>
+        <source>Set &amp;Link Color</source>
+        <translation type="unfinished">Configurar &amp;Color de Enlace</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="987"/>
+        <source>Set Background Color</source>
+        <translation>Configurar Color de Fondo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="986"/>
+        <source>Set &amp;Background Color</source>
+        <translation>Configurar &amp;Color de Fondo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1005"/>
+        <source>&amp;View</source>
+        <translation>&amp;Vista</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1009"/>
+        <source>Zoom reset</source>
+        <translation>Zoom reiniciado</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>reset Zoom</source>
+        <translation type="obsolete">Reiniciar Zoom</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1016"/>
+        <source>Zoom in</source>
+        <translation>Acercar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1023"/>
+        <source>Zoom out</source>
+        <translation>Alejar</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Toggle Note Editor</source>
+        <translation type="obsolete">Acomodar Editor de notas</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Next Window</source>
+        <translation type="obsolete">&amp;Siguiente Ventana</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Next Window</source>
+        <translation type="obsolete">Siguiente Ventana</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Previous Window</source>
+        <translation type="obsolete">&amp;Ventana Previa</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Previous Window</source>
+        <translation type="obsolete">Ventana Previa</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Modes when using modifiers</source>
+        <translation type="obsolete">Modos cuando usa modificadores</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1102"/>
+        <source>Use modifier to color branches</source>
+        <translation>Usar modificadores para color de ramas</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1376"/>
+        <source>&amp;Settings</source>
+        <translation>&amp;Configuración</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1381"/>
+        <source>Set application to open pdf files</source>
+        <translation>Configurar aplicación para abrir archivos pdf</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3253"/>
+        <source>Set application to open an URL</source>
+        <translation type="unfinished">Configurar aplicación para abrir una URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1427"/>
+        <source>Edit branch after adding it</source>
+        <translation>Editar rama después de adicionarle</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1434"/>
+        <source>Select branch after adding it</source>
+        <translation>Seleccionar rama después de adicionarle</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1441"/>
+        <source>Select heading before editing</source>
+        <translation>Seleccionar encabezado antes de editar</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Select existing heading</source>
+        <translation type="obsolete">Seleccionar encabezado existente</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Enable pasting into new branch</source>
+        <translation type="obsolete">Habilitar pegado en una nueva rama</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Enable Delete key for deleting branches</source>
+        <translation type="obsolete">Habilitar tecla Delete para borrar ramas</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Enable Delete key</source>
+        <translation type="obsolete">Habilitar tecla Delete</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1484"/>
+        <source>&amp;Test</source>
+        <translation>&amp;Prueba</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Test Flag</source>
+        <translation type="obsolete">Probar Bandera</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>test flag</source>
+        <translation type="obsolete">Probar bandera</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Show Clipboard</source>
+        <translation type="obsolete">Mostrar Portapapeles</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Show clipboard</source>
+        <translation type="obsolete">Mostrar portapapeles</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Help</source>
+        <translation type="obsolete">&amp;Ayuda</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1510"/>
+        <source>Open VYM Documentation (pdf)</source>
+        <translation>Abrir Documentación de VYM (pdf)</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Open VYM Documentation (pdf) </source>
+        <translation type="obsolete">Abrir Documentación de VYM (pdf)</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Information about VYM</source>
+        <translation type="obsolete">Información sobre VYM</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1520"/>
+        <source>About VYM</source>
+        <translation type="unfinished">Sobre VYM</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1525"/>
+        <source>Information about QT toolkit</source>
+        <translation>Información sobre kit de herramientas QT</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>About QT</source>
+        <translation type="obsolete">Acerca de QT</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Save image</source>
+        <translation type="obsolete">Guardar imagen</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Use for Export</source>
+        <translation type="obsolete">Usar para Exportar</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Export map as image</source>
+        <translation type="obsolete">Exportar mapa como imagen</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Export as ASCII (still experimental)</source>
+        <translation type="obsolete">Exportar como ASCII (aún experimental)</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Export (ASCII)</source>
+        <translation type="obsolete">Exportar (ASCII)</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Export XML</source>
+        <translation type="obsolete">Exportar XML</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Export HTML</source>
+        <translation type="obsolete">Exportar HTML</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Export XHTML</source>
+        <translation type="obsolete">Exportar XHTML</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>The directory </source>
+        <translation type="obsolete">El directorio</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source> is not empty. Do you risk to overwrite its contents?</source>
+        <translation type="obsolete">no está vacio. ¿Se arriesga  a sobrescribir su contenido?</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2017"/>
+        <source>Overwrite</source>
+        <translation>Sobreescribir</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2018"/>
+        <source>Cancel</source>
+        <translation>Cancelar</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>The map </source>
+        <translation type="obsolete">El mapa</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>
+ is already opened.Opening the same map in multiple editors may lead 
+to confusion when finishing working with vym.Do you want to</source>
+        <translation type="obsolete">ya está abierto. Abrir el mismo mapa en múltiples editores puede
+generar confusión cuando termine de trabajar con vym. Desea hacerlo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1783"/>
+        <source>Open anyway</source>
+        <translation>Abrir de todas maneras</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1831"/>
+        <source>Create</source>
+        <translation>Crear</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Critical Load Error</source>
+        <translation type="obsolete">Error crítico de carga</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Couldn&apos;t start unzip to decompress data.</source>
+        <translation type="obsolete">No pudo iniciar zip para descomprimir datos.</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>unzip didn&apos;t exit normally</source>
+        <translation type="obsolete">unzip no salió normalmente</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Couldn&apos;t find a map (*.xml) in .vym archive.
+</source>
+        <translation type="obsolete">No puede buscar un mapa (*.xml) en el archivo .vym.</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1907"/>
+        <source>Load vym map</source>
+        <translation>Cargar mapa vym</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1910"/>
+        <source>Import: Add vym map to selection</source>
+        <translation>Importar: Agregar mapa vym a la selección</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1913"/>
+        <source>Import: Replace selection with vym map</source>
+        <translation>Importar: Reemplaza selección con mapa vym</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Save Error</source>
+        <translation type="obsolete">Error de guardado</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>
+could not be removed before saving</source>
+        <translation type="obsolete">no puede ser removido antes de guardar</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>
+did not use the compressed vym file format.
+Writing it uncompressed will also write images 
+and flags and thus may overwrite files in the given directory
+
+Do you want to write the map</source>
+        <translation type="obsolete">no usó el formato de compresión archivo vym.
+Escribiendo este descompreso también escribirá imágenes
+y banderas y así puede sobreescribir en el directorio dado
+
+Desea escribir el mapa</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>compressed (vym default)</source>
+        <translation type="obsolete">compreso (por defecto vym)</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>uncompressed</source>
+        <translation type="obsolete">descompreso</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Critical Save Error</source>
+        <translation type="obsolete">Error Crítico de Guardado</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Couldn&apos;t start zip to compress data.</source>
+        <translation type="obsolete">No pudo iniciar zip para comprimir datos.</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>zip didn&apos;t exit normally</source>
+        <translation type="obsolete">zip no salió normalmente</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Saved</source>
+        <translation type="obsolete">Guardado</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Couldn&apos;t save</source>
+        <translation type="obsolete">No pudo guardar</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>The file </source>
+        <translation type="obsolete">El archivo</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>
+exists already. Do you want to</source>
+        <translation type="obsolete">ya existe. Desea hacerlo</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Export XML to directory</source>
+        <translation type="obsolete">Exportar XML a directorio</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source> has been modified but not saved yet. Do you want to</source>
+        <translation type="obsolete">ha sido modificado pero no está guardado aún. Desea hacerlo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2306"/>
+        <source>Save modified map before closing it</source>
+        <translation>Guardar mapa modificado antes de cerrarlo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2357"/>
+        <source>Discard changes</source>
+        <translation>Descartar cambios</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2351"/>
+        <source>This map is not saved yet. Do you want to</source>
+        <translation>Este mapa no está guardado aún. Desea hacerlo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2356"/>
+        <source>Save map</source>
+        <translation>Guardar mapa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3285"/>
+        <source>VYM -Information:</source>
+        <translation>VYM -Información:</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>No matches found for </source>
+        <translation type="obsolete">No se encuentra concordancia con</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2790"/>
+        <source>Critical Error</source>
+        <translation>Error crítico</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Enter path for pdf reader:</source>
+        <translation type="obsolete">Ingrese ruta para lector de pdf:</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Enter path for application to open an URL:</source>
+        <translation type="obsolete">Ingrese la ruta para aplicación para abrir una URL:</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3734"/>
+        <source>Critcal error</source>
+        <translation>Error crítico</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Couldn&apos;t find the documentation
+vym.pdf in various places.</source>
+        <translation type="obsolete">No puede buscar la documentación
+vym.pdf en varios lugares.</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Couldn&apos;t find a viewer to read vym.pdf.
+Please use Settings-&gt;</source>
+        <translation type="obsolete">No puede buscar un visor para leer vym.pdf.
+Por favor use Configuración-&gt;</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="570"/>
+        <source>Add a branch by inserting and making selection its child</source>
+        <translation>Adicionar una rama insertando y haciendo selección de sus hijos</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Add branch (insert)</source>
+        <translation type="obsolete">Adicionar rama (insertar)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="806"/>
+        <source>Remove only branch and keep its childs</source>
+        <translation>Remover solo ramas y mantener sus hijos</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Remove only branch </source>
+        <translation type="obsolete">Remover solo ramas</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="816"/>
+        <source>Remove childs of branch</source>
+        <translation>Remover hijos de rama</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Remove childs</source>
+        <translation type="obsolete">Hijos remotos</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1110"/>
+        <source>Use modifier to copy</source>
+        <translation>Usar modificador de copia</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1541"/>
+        <source>Add</source>
+        <translation>Adicionar</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Remove</source>
+        <translation type="obsolete">Remover</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Edit XLink</source>
+        <translation type="obsolete">Editar XEnlace</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Goto XLink</source>
+        <translation type="obsolete">Ir al XEnlace</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>This map does not exist:
+  </source>
+        <translation type="obsolete">Este mapa no existe:</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>
+Do you want to create a new one?</source>
+        <translation type="obsolete">¿Desea crear uno nuevo?</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1117"/>
+        <source>Use modifier to draw xLinks</source>
+        <translation>Usar modificadores para dibujar XEnlace</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1456"/>
+        <source>Use exclusive flags in flag toolbars</source>
+        <translation>Usar banderas exclusivas en la barra de herramientas de banderas</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Enable exclusive flags</source>
+        <translation type="obsolete">Habilitar banderas exclusivas</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1386"/>
+        <source>Set application to open external links</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1448"/>
+        <source>Delete key for deleting branches</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1778"/>
+        <source>The map %1
+is already opened.Opening the same map in multiple editors may lead 
+to confusion when finishing working with vym.Do you want to</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1825"/>
+        <source>This map does not exist:
+  %1
+Do you want to create a new one?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1977"/>
+        <source>Saved  %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1982"/>
+        <source>Couldn&apos;t save </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2012"/>
+        <source>The file %1
+exists already. Do you want to</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2301"/>
+        <source>The map %1 has been modified but not saved yet. Do you want to</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2791"/>
+        <source>Couldn&apos;t open map %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="435"/>
+        <source>Exit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="462"/>
+        <source>Redo</source>
+        <translation type="unfinished">Rehacer</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Redo</source>
+        <translation type="obsolete">&amp;Rehacer</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="960"/>
+        <source>Hide link</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Note</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Nota</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>WWW Document (external)</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">WWW Documento (externo)</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Link to another vym map</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Enlace a otro mapa vym</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>subtree is scrolled</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Subárbol está acoplado</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>subtree is temporary scrolled</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Subárbol está temporalmente acoplado</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1164"/>
+        <source>Take care!</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished">¡Ten cuidado!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1168"/>
+        <source>Really?</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished">¿Cierto?</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1172"/>
+        <source>ok!</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished">¡Ok!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1176"/>
+        <source>Not ok!</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished">¡No esta bien!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1180"/>
+        <source>This won&apos;t work!</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished">¡Esto no funciona!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1184"/>
+        <source>Good</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished">Bien</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1188"/>
+        <source>Bad</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished">Mal</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1197"/>
+        <source>Time critical</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished">Tiempo crítico</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1203"/>
+        <source>Idea!</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished">¡Idea!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1207"/>
+        <source>Important</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished">Importante</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1211"/>
+        <source>Unimportant</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished">Poco importante</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1224"/>
+        <source>I like this</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished">Me gusta</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1228"/>
+        <source>I do not like this</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished">no me gusta</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>I just love... </source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Solo amo...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1241"/>
+        <source>Dangerous</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished">Peligroso</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1249"/>
+        <source>This will help</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished">Esto puede ayudar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2139"/>
+        <source>Import</source>
+        <translation type="unfinished">Importar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="399"/>
+        <source>KDE Bookmarks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2249"/>
+        <source>(still experimental)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2221"/>
+        <source>Export as LaTeX</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="420"/>
+        <source>&amp;Print</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2269"/>
+        <source>Export to</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="766"/>
+        <source>Hide object in exports</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1463"/>
+        <source>Use hide flag during exports </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="685"/>
+        <source>Open URL in new tab</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3819"/>
+        <source>Warning</source>
+        <translation type="unfinished">Advertencia</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3749"/>
+        <source>Couldn&apos;t find a viewer to open %1.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3821"/>
+        <source>Please use Settings-&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2498"/>
+        <source>Couldn&apos;t start %1 to open a new tab in %2.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3750"/>
+        <source>Set application to open PDF files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1192"/>
+        <source>Oh no!</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1200"/>
+        <source>Call...</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1215"/>
+        <source>Very important!</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1219"/>
+        <source>Very unimportant!</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1232"/>
+        <source>Rose</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1238"/>
+        <source>Surprise!</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1245"/>
+        <source>Info</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="350"/>
+        <source>Firefox Bookmarks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1039"/>
+        <source>Show Note Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2079"/>
+        <source>Bookmarks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2513"/>
+        <source>Couldn&apos;t start %1 to open a new tab</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Modes when using modifiers</source>
+        <comment>Toolbars</comment>
+        <translation type="obsolete">Modos cuando usa modificadores</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1154"/>
+        <source>Standard Flags</source>
+        <comment>Standard Flag Toolbar</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2289"/>
+        <source>Couldn&apos;t find configuration for export to Open Office
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2431"/>
+        <source>No matches found for &quot;%1&quot;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="297"/>
+        <source>&amp;Map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="692"/>
+        <source>Open all URLs in subtree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="745"/>
+        <source>Open all vym links in subtree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2518"/>
+        <source>Sorry, currently only Konqueror and Mozilla support tabbed browsing.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;New...</source>
+        <comment>File menu</comment>
+        <translation type="obsolete">&amp;Nuevo...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="302"/>
+        <source>New map</source>
+        <comment>Status tip File menu</comment>
+        <translation type="unfinished">Nuevo Mapa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="315"/>
+        <source>&amp;Open...</source>
+        <comment>File menu</comment>
+        <translation type="unfinished">&amp;Abrir...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="316"/>
+        <source>Open</source>
+        <comment>Status tip File menu</comment>
+        <translation type="unfinished">Abrir</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="322"/>
+        <source>Open Recent</source>
+        <comment>File menu</comment>
+        <translation type="unfinished">Abrir reciente</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="325"/>
+        <source>&amp;Save...</source>
+        <comment>File menu</comment>
+        <translation type="unfinished">&amp;Guardar...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="326"/>
+        <source>Save</source>
+        <comment>Status tip file menu</comment>
+        <translation type="unfinished">Guardar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="333"/>
+        <source>Save &amp;As...</source>
+        <comment>File menu</comment>
+        <translation type="unfinished">Guardar &amp;Como...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="334"/>
+        <source>Save &amp;As</source>
+        <comment>Status tip file menu</comment>
+        <translation type="unfinished">Guardar &amp;Como</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="340"/>
+        <source>Import</source>
+        <comment>File menu</comment>
+        <translation type="unfinished">Importar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="350"/>
+        <source>Import %1</source>
+        <comment>Status tip file menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="343"/>
+        <source>KDE bookmarks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="349"/>
+        <source>Firefox Bookmarks</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="361"/>
+        <source>Import %1</source>
+        <comment>status tip file menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="365"/>
+        <source>Import Dir%1</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="366"/>
+        <source>Import directory structure (experimental)</source>
+        <comment>status tip file menu</comment>
+        <translation type="unfinished">Importar estructura de directorio (experimental)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="370"/>
+        <source>Export</source>
+        <comment>File menu</comment>
+        <translation type="unfinished">Exportar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="372"/>
+        <source>Image%1</source>
+        <comment>File export menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="373"/>
+        <source>Export map as image</source>
+        <comment>status tip file menu</comment>
+        <translation type="unfinished">Exportar mapa como imagen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="378"/>
+        <source>Export in Open Document Format used e.g. in Open Office </source>
+        <comment>status tip file menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="384"/>
+        <source>Export as %1</source>
+        <comment>status tip file menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="384"/>
+        <source> webpage (XHTML)</source>
+        <comment>status tip file menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="414"/>
+        <source>Export as %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="398"/>
+        <source>KDE Bookmarks</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="421"/>
+        <source>Print</source>
+        <comment>File menu</comment>
+        <translation type="unfinished">Imprimir</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="428"/>
+        <source>&amp;Close Map</source>
+        <comment>File menu</comment>
+        <translation type="unfinished">&amp;Cerrar Mapa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="434"/>
+        <source>E&amp;xit</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="445"/>
+        <source>&amp;Actions toolbar</source>
+        <comment>Toolbar name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="448"/>
+        <source>&amp;Edit</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">&amp;Editar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="452"/>
+        <source>&amp;Undo</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">&amp;Deshacer</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="461"/>
+        <source>&amp;Redo</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">&amp;Rehacer</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="470"/>
+        <source>&amp;Copy</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">&amp;Copiar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="479"/>
+        <source>Cu&amp;t</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="488"/>
+        <source>&amp;Paste</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">&amp;Pegar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="514"/>
+        <source>Edit heading</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Editar encabezado</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="523"/>
+        <source>Delete Selection</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Eliminar Selección</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="544"/>
+        <source>Add branch as child</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Agregar rama como hija</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="569"/>
+        <source>Add branch (insert)</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Adicionar rama (insertar)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="587"/>
+        <source>Add branch above</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Agregar rama arriba</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="605"/>
+        <source>Add branch below</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Agregar rama abajo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="613"/>
+        <source>Move up</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Subir</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="622"/>
+        <source>Move down</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Bajar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="643"/>
+        <source>Scroll branch</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Acoplar rollo</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Unscroll all scrolled branches</source>
+        <comment>Edit menu</comment>
+        <translation type="obsolete">Desacoplar todas las ramas acopladas</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="668"/>
+        <source>Find...</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="676"/>
+        <source>Open URL</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Abrir URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="684"/>
+        <source>Open URL in new tab</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="691"/>
+        <source>Open all URLs in subtree</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="698"/>
+        <source>Edit URL...</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="716"/>
+        <source>Use heading for URL</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Usar encabezado para URL</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Create URL to Bugzilla</source>
+        <comment>Edit menu</comment>
+        <translation type="obsolete">Crear URL a Bugzila</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="737"/>
+        <source>Open linked map</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="744"/>
+        <source>Open all vym links in subtree</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="752"/>
+        <source>Edit vym link...</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="759"/>
+        <source>Delete vym link</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Eliminar enlace de vym</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="765"/>
+        <source>Hide in exports</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="774"/>
+        <source>Edit Map Info...</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="781"/>
+        <source>Add map (insert)</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="789"/>
+        <source>Add map (replace)</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="797"/>
+        <source>Save selection</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Guardar Selección</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="805"/>
+        <source>Remove only branch </source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Remover solo ramas</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="815"/>
+        <source>Remove childs</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Hijos remotos</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="824"/>
+        <source>Select upper branch</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Seleccionar rama más alta</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="830"/>
+        <source>Select lower branch</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Seleccionar rama más baja</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="836"/>
+        <source>Select left branch</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Seleccionar rama izquierda</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="842"/>
+        <source>Select child branch</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Seleccionar rama hijo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="848"/>
+        <source>Select first branch</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Seleccionar primera rama</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="858"/>
+        <source>Select last branch</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Seleccionar última rama</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="869"/>
+        <source>Add Image...</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="887"/>
+        <source>F&amp;ormat</source>
+        <comment>Format menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="889"/>
+        <source>Format Actions</source>
+        <comment>Format Toolbar name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="900"/>
+        <source>Pic&amp;k color</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Esco&amp;ger Color</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="910"/>
+        <source>Color &amp;branch</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Color de &amp;rama</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="920"/>
+        <source>Color sub&amp;tree</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Color de Sub&amp;árbol</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>No Frame</source>
+        <comment>Branch attribute</comment>
+        <translation type="obsolete">Sin marco</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="959"/>
+        <source>Hide link if object is not selected</source>
+        <comment>Branch attribute</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="966"/>
+        <source>&amp;Use color of heading for link</source>
+        <comment>Branch attribute</comment>
+        <translation type="unfinished">&amp;Usar color para encabezado de enlace</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1002"/>
+        <source>View Actions</source>
+        <comment>View Toolbar name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1008"/>
+        <source>reset Zoom</source>
+        <comment>View action</comment>
+        <translation type="unfinished">Reiniciar Zoom</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1015"/>
+        <source>Zoom in</source>
+        <comment>View action</comment>
+        <translation type="unfinished">Acercar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1022"/>
+        <source>Zoom out</source>
+        <comment>View action</comment>
+        <translation type="unfinished">Alejar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1038"/>
+        <source>Show Note Editor</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Next Window</source>
+        <comment>View action</comment>
+        <translation type="obsolete">Siguiente Ventana</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Previous Window</source>
+        <comment>View action</comment>
+        <translation type="obsolete">Ventana Previa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1095"/>
+        <source>Modes when using modifiers</source>
+        <comment>Modifier Toolbar name</comment>
+        <translation type="unfinished">Modos cuando usa modificadores</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1100"/>
+        <source>Use modifier to color branches</source>
+        <comment>Mode modifier</comment>
+        <translation type="unfinished">Usar modificadores para color de ramas</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1108"/>
+        <source>Use modifier to copy</source>
+        <comment>Mode modifier</comment>
+        <translation type="unfinished">Usar modificador de copia</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1115"/>
+        <source>Use modifier to draw xLinks</source>
+        <comment>Mode modifier</comment>
+        <translation type="unfinished">Usar modificadores para dibujar XEnlace</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1380"/>
+        <source>Set application to open pdf files</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished">Configurar aplicación para abrir archivos pdf</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1385"/>
+        <source>Set application to open external links</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1426"/>
+        <source>Edit branch after adding it</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished">Editar rama después de adicionarle</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1433"/>
+        <source>Select branch after adding it</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished">Seleccionar rama después de adicionarle</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1440"/>
+        <source>Select existing heading</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished">Seleccionar encabezado existente</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1447"/>
+        <source>Delete key</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1455"/>
+        <source>Exclusive flags</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1462"/>
+        <source>Use hide flags</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1506"/>
+        <source>&amp;Help</source>
+        <comment>Help menubar entry</comment>
+        <translation type="unfinished">&amp;Ayuda</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1509"/>
+        <source>Open VYM Documentation (pdf) </source>
+        <comment>Help action</comment>
+        <translation type="unfinished">Abrir Documentación de VYM (pdf)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1519"/>
+        <source>About VYM</source>
+        <comment>Help action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1524"/>
+        <source>About QT</source>
+        <comment>Help action</comment>
+        <translation type="unfinished">Acerca de QT</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1552"/>
+        <source>Remove</source>
+        <comment>Context menu name</comment>
+        <translation type="unfinished">Remover</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1591"/>
+        <source>Edit XLink</source>
+        <comment>Context menu name</comment>
+        <translation type="unfinished">Editar XEnlace</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1592"/>
+        <source>Follow XLink</source>
+        <comment>Context menu name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1599"/>
+        <source>Save image</source>
+        <comment>Context action</comment>
+        <translation type="unfinished">Guardar imagen</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="301"/>
+        <source>&amp;New map</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="308"/>
+        <source>&amp;Copy to new map</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="309"/>
+        <source>Copy selection to mapcenter of a new map</source>
+        <comment>Status tip File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="532"/>
+        <source>Add mapcenter</source>
+        <comment>Canvas context menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="631"/>
+        <source>Sort children</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="661"/>
+        <source>Unscroll childs</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="662"/>
+        <source>Unscroll all scrolled branches in selected subtree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="707"/>
+        <source>Edit local URL...</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="708"/>
+        <source>Edit local URL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="723"/>
+        <source>Create URL to Novell Bugzilla</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="724"/>
+        <source>Create URL to Novell Bugzilla</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="730"/>
+        <source>Create URL to Novell FATE</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="731"/>
+        <source>Create URL to Novell FATE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="874"/>
+        <source>Property window</source>
+        <comment>Dialog to edit properties of selection</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="875"/>
+        <source>Set properties for selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="939"/>
+        <source>Linkstyle Curve</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="951"/>
+        <source>Linkstyle Thick Curve</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="980"/>
+        <source>Set &amp;Selection Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="981"/>
+        <source>Set Selection Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="992"/>
+        <source>Set &amp;Background image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="993"/>
+        <source>Set Background image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1029"/>
+        <source>Show selection</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1030"/>
+        <source>Show selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1047"/>
+        <source>History Window</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1048"/>
+        <source>Show History Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1060"/>
+        <source>Antialiasing</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1061"/>
+        <source>Antialiasing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1068"/>
+        <source>Smooth pixmap transformations</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1076"/>
+        <source>Next Map</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1082"/>
+        <source>Previous Map</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1136"/>
+        <source>Note</source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished">Nota</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1139"/>
+        <source>URL to Document </source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1142"/>
+        <source>Link to another vym map</source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished">Enlace a otro mapa vym</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1145"/>
+        <source>subtree is scrolled</source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished">Subárbol está acoplado</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1148"/>
+        <source>subtree is temporary scrolled</source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished">Subárbol está temporalmente acoplado</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1151"/>
+        <source>Hide object in exported maps</source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1235"/>
+        <source>I just love...</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1256"/>
+        <source>Important</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished">Importante</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1261"/>
+        <source>Priority</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1265"/>
+        <source>Back</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1268"/>
+        <source>Forward</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1271"/>
+        <source>Look here</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1274"/>
+        <source>Dangerous</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished">Peligroso</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1277"/>
+        <source>Don&apos;t forget</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1280"/>
+        <source>Flag</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1284"/>
+        <source>Home</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1288"/>
+        <source>Telephone</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1291"/>
+        <source>Music</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1294"/>
+        <source>Mailbox</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1297"/>
+        <source>Maix</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1300"/>
+        <source>Password</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1303"/>
+        <source>To be improved</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1306"/>
+        <source>Stop</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1309"/>
+        <source>Magic</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1312"/>
+        <source>To be discussed</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1315"/>
+        <source>Reminder</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1318"/>
+        <source>Excellent</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1321"/>
+        <source>Linux</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1324"/>
+        <source>Sweet</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1390"/>
+        <source>Set path for macros</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1391"/>
+        <source>Set path for macros</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1395"/>
+        <source>Set number of undo levels</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1396"/>
+        <source>Set number of undo levels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1402"/>
+        <source>Autosave</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1403"/>
+        <source>Autosave</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1410"/>
+        <source>Autosave time</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1411"/>
+        <source>Autosave time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1416"/>
+        <source>Write backup file on save</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1417"/>
+        <source>Write backup file on save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1469"/>
+        <source>Animation</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1470"/>
+        <source>Animation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1514"/>
+        <source>Open VYM example maps </source>
+        <comment>Help action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1515"/>
+        <source>Open VYM example maps </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1569"/>
+        <source>References (URLs, vymLinks, ...)</source>
+        <comment>Context menu name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1645"/>
+        <source>&amp;%1 %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2108"/>
+        <source>Load Freemind map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2202"/>
+        <source>Export as CSV</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3268"/>
+        <source>Directory with vym macros:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3300"/>
+        <source>QInputDialog::getInteger()</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3281"/>
+        <source>Number of undo/redo levels:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3286"/>
+        <source>Settings have been changed. The next map opened will have &quot;%1&quot; undo/redo levels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3301"/>
+        <source>Number of seconds before autosave:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3411"/>
+        <source>History for %1</source>
+        <comment>Window Caption</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3735"/>
+        <source>Couldn&apos;t find the documentation %1 in:
+%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3771"/>
+        <source>Load vym example map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3820"/>
+        <source>Couldn&apos;t find a macro at  %1.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3821"/>
+        <source>Set directory for vym macros</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>MapEditor</name>
+    <message>
+        <location filename="../mapeditor.cpp" line="1703"/>
+        <source>Critical Parse Error</source>
+        <translation>Error Crítico de conversión</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Critical Save Error</source>
+        <translation type="obsolete">Error Crítico de Guardado</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Couldn&apos;t write to </source>
+        <translation type="obsolete">No puede escribir</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>VYM - Export (ASCII)</source>
+        <translation type="obsolete">VYM - Exportar (ASCII)</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>The file </source>
+        <translation type="obsolete">El archivo</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source> exists already. Do you want to overwrite it?</source>
+        <translation type="obsolete">ya existe. ¿Desea sobrescribir?</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4136"/>
+        <source>Overwrite</source>
+        <translation>Sobreescribir</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4137"/>
+        <source>Cancel</source>
+        <translation>Cancelar</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Critical Export Error </source>
+        <translation type="obsolete">Error de exportación crítico</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Couldn&apos;t create directory </source>
+        <translation type="obsolete">No puede crear el directorio</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2129"/>
+        <source>Critical Export Error</source>
+        <translation>Error de exportación crítico</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>MapEditor::exportXML couldn&apos;t open </source>
+        <translation type="obsolete">Editor de Mapa::exportarXML  no pudo abrir</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Critical Parse Error by reading backupFile</source>
+        <translation type="obsolete">Error de conversión leyendo el archivo de copia de seguridad</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2432"/>
+        <source>Critical Error</source>
+        <translation>Error crítico</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source> used for undo is gone. 
+I will create a new one, but at the moment no undo is available.
+Maybe you want to reload your original data.
+
+Sorry for any inconveniences.</source>
+        <translation type="obsolete">usos para deshacer no hay.
+Creare uno nuevo, pero por el momento no está disponible deshacer.
+Pueda que dese recargar su información original.
+
+Predón por cualquier inconveniente.</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3474"/>
+        <source>Enter URL:</source>
+        <translation>Ingresar URL:</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>VYM - Link to another map</source>
+        <translation type="obsolete">Enlace a otro mapa vym</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>vym map</source>
+        <translation type="obsolete">mapa vym</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>vym - load image</source>
+        <translation type="obsolete">vym - cargar imagen</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4067"/>
+        <source>Images</source>
+        <translation>Imágenes</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>vym - Load image</source>
+        <translation type="obsolete">vym - Cargar imagen</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>vym - save image as</source>
+        <translation type="obsolete">vym - guardar imagen como</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>vym - Save image as </source>
+        <translation type="obsolete">vym - Guardar imagen como</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4314"/>
+        <source>Critical Import Error</source>
+        <translation>Error de Importación crítico</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Cannot find the directory</source>
+        <translation type="obsolete">No puede encontrar el directorio</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>VYM - Choose directory structur to import</source>
+        <translation type="obsolete">VYM - Escoja estructura de directorio a importar</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Note</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Nota</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>WWW Document (external)</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">WWW Documento (externo)</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Link to another vym map</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Enlace a otro mapa vym</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>subtree is scrolled</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Subárbol está acoplado</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>subtree is temporary scrolled</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Subárbol está temporalmente acoplado</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Take care!</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">¡Ten cuidado!</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Really?</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">¿Cierto?</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>ok!</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">¡Ok!</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Not ok!</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">¡No esta bien!</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>This won&apos;t work!</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">¡Esto no funciona!</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Good</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Bien</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Bad</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Mal</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Time critical</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Tiempo crítico</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Idea!</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">¡Idea!</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Important</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Importante</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Unimportant</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Poco importante</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>I like this</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Me gusta</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>I do not like this</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">no me gusta</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>I just love... </source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Solo amo...</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Dangerous</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Peligroso</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>This will help</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Esto puede ayudar</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>New Map</source>
+        <comment>Heading of mapcenter in new map</comment>
+        <translation type="obsolete">Nuevo mapa</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Critcal Save error</source>
+        <translation type="obsolete">Error Crítico de Guardado</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4130"/>
+        <source>The file %1 exists already.
+Do you want to overwrite it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2129"/>
+        <source>MapEditor::exportXML couldn&apos;t open %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4314"/>
+        <source>Cannot find the directory %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Export (ASCII)</source>
+        <translation type="obsolete">Exportar (ASCII)</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3579"/>
+        <source>Link to another map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4072"/>
+        <source>Load image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4362"/>
+        <source>Choose directory structure to import</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="110"/>
+        <source>unnamed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3324"/>
+        <source>Warning</source>
+        <translation type="unfinished">Advertencia</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4116"/>
+        <source>Save image</source>
+        <translation type="unfinished">Guardar imagen</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2426"/>
+        <source>Critical Parse Error while reading %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2432"/>
+        <source>Could not read %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3324"/>
+        <source>Can&apos;t get color of heading,
+there&apos;s no branch selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1795"/>
+        <source>Critical Load Error</source>
+        <translation type="unfinished">Error crítico de carga</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1602"/>
+        <source>Couldn&apos;t create temporary directory before load
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1645"/>
+        <source>Couldn&apos;t find a map (*.xml) in .vym archive.
+</source>
+        <translation type="unfinished">No puede buscar un mapa (*.xml) en el archivo .vym.</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1741"/>
+        <source>The map %1
+did not use the compressed vym file format.
+Writing it uncompressed will also write images 
+and flags and thus may overwrite files in the given directory
+
+Do you want to write the map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1746"/>
+        <source>compressed (vym default)</source>
+        <translation type="unfinished">compreso (por defecto vym)</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1747"/>
+        <source>uncompressed</source>
+        <translation type="unfinished">descompreso</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1782"/>
+        <source>Save Error</source>
+        <translation type="unfinished">Error de guardado</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1778"/>
+        <source>%1
+could not be removed before saving</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1783"/>
+        <source>%1
+could not be renamed before saving</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1796"/>
+        <source>Couldn&apos;t create temporary directory before save
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2033"/>
+        <source>Export map as image</source>
+        <translation type="unfinished">Exportar mapa como imagen</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2110"/>
+        <source>Export XML to directory</source>
+        <translation type="unfinished">Exportar XML a directorio</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2260"/>
+        <source>Autosave disabled during undo.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3268"/>
+        <source>Load background image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3489"/>
+        <source>Text</source>
+        <comment>Filedialog</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3490"/>
+        <source>Spreadsheet</source>
+        <comment>Filedialog</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3491"/>
+        <source>Textdocument</source>
+        <comment>Filedialog</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3492"/>
+        <source>Images</source>
+        <comment>Filedialog</comment>
+        <translation type="unfinished">Imágenes</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3495"/>
+        <source>Set URL to a local file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3727"/>
+        <source>%1 items on map
+</source>
+        <comment>Info about map</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="5291"/>
+        <source>The file of the map  on disk has changed:
+
+   %1
+
+Do you want to reload that map with the new file?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="5297"/>
+        <source>Reload</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="5298"/>
+        <source>Ignore</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="../file.cpp" line="439"/>
+        <source>This is not an image.</source>
+        <translation>Esto no es una imagen.</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="557"/>
+        <source>Critical Export Error</source>
+        <translation type="unfinished">Error de exportación crítico</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="352"/>
+        <source>Could not write %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="353"/>
+        <source>Export failed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="524"/>
+        <source>Check &quot;%1&quot; in
+%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="557"/>
+        <source>Could not read %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../xsltproc.cpp" line="82"/>
+        <source>Critical Error</source>
+        <translation type="unfinished">Error crítico</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="272"/>
+        <source>Couldn&apos;t start zip to compress data.</source>
+        <translation type="unfinished">No pudo iniciar zip para comprimir datos.</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="282"/>
+        <source>zip didn&apos;t exit normally</source>
+        <translation type="unfinished">zip no salió normalmente</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="316"/>
+        <source>Couldn&apos;t start unzip to decompress data.</source>
+        <translation type="unfinished">No pudo iniciar zip para descomprimir datos.</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="326"/>
+        <source>unzip didn&apos;t exit normally</source>
+        <translation type="unfinished">unzip no salió normalmente</translation>
+    </message>
+    <message>
+        <location filename="../xsltproc.cpp" line="77"/>
+        <source>Could not start %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../xsltproc.cpp" line="83"/>
+        <source>%1 didn&apos;t exit normally</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="77"/>
+        <source>The file %1 exists already.
+Do you want to overwrite it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="105"/>
+        <source>Overwrite</source>
+        <translation type="unfinished">Sobreescribir</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="106"/>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="441"/>
+        <source>Sorry, no preview for
+multiple selected files.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="294"/>
+        <source>Exporting the %1 bookmarks will overwrite
+your existing bookmarks file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="295"/>
+        <source>Warning: Overwriting %1 bookmarks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="278"/>
+        <source>Warning</source>
+        <translation type="unfinished">Advertencia</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="279"/>
+        <source>Couldn&apos;t find script %1
+to notifiy Browsers of changed bookmarks.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../main.cpp" line="192"/>
+        <source>Error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../imports.cpp" line="17"/>
+        <source>Couldn&apos;t access temporary directory
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="131"/>
+        <source>Export as ASCII</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="131"/>
+        <source>(still experimental)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="99"/>
+        <source>The directory %1 is not empty.
+Do you risk to overwrite its contents?</source>
+        <comment>write directory</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../main.cpp" line="193"/>
+        <source>Couldn&apos;t open %1.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ShowTextDialog</name>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>VYM - Info</source>
+        <translation type="obsolete">VYM - Información</translation>
+    </message>
+    <message>
+        <location filename="../showtextdialog.ui" line="52"/>
+        <source>Close</source>
+        <translation type="unfinished">Cerrar</translation>
+    </message>
+    <message>
+        <location filename="../showtextdialog.ui" line="16"/>
+        <source>Dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SimpleScriptEditor</name>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="61"/>
+        <source>Save script</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="73"/>
+        <source>The file %1
+exists already.
+Do you want to overwrite it?</source>
+        <comment>dialog &apos;save as&apos;</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="78"/>
+        <source>Overwrite</source>
+        <translation type="unfinished">Sobreescribir</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="79"/>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="105"/>
+        <source>Load script</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="116"/>
+        <source>Error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="117"/>
+        <source>Couldn&apos;t open %1.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="13"/>
+        <source>Simple Script Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="38"/>
+        <source>Save as</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="48"/>
+        <source>Save</source>
+        <translation type="unfinished">Guardar</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="51"/>
+        <source>Qt::CTRL + Qt::Key_S</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="58"/>
+        <source>Open</source>
+        <translation type="unfinished">Abrir</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="61"/>
+        <source>Qt::CTRL +Qt::Key_O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="68"/>
+        <source>Run</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="71"/>
+        <source>Qt::CTRL + Qt::Key_R</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="78"/>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>TextEditor</name>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;File</source>
+        <translation type="obsolete">&amp;Archivo</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Import</source>
+        <translation type="obsolete">Importar</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="202"/>
+        <source>&amp;Import...</source>
+        <translation>&amp;Importar...</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Export Note (HTML)</source>
+        <translation type="obsolete">Exportar Nota (HTML)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="211"/>
+        <source>&amp;Export...</source>
+        <translation>&amp;Exportar... </translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Export Note As (HTML) </source>
+        <translation type="obsolete">Exportar Nota Como...(HTML)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="219"/>
+        <source>Export &amp;As... (HTML)</source>
+        <translation>Exportar &amp;Como...(HTML)</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Export Note As (ASCII) </source>
+        <translation type="obsolete">Exportar Nota Como...(ASCII)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="225"/>
+        <source>Export &amp;As...(ASCII)</source>
+        <translation>Exportar &amp;Como...(ASCII)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="675"/>
+        <source>Print Note</source>
+        <translation>Imprimir Nota</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="233"/>
+        <source>&amp;Print...</source>
+        <translation>&amp;Imprimir...</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="246"/>
+        <source>&amp;Edit</source>
+        <translation>&amp;Editar</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Undo</source>
+        <translation type="obsolete">Deshacer</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="249"/>
+        <source>&amp;Undo</source>
+        <translation>&amp;Deshacer</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Redo</source>
+        <translation type="obsolete">Rehacer</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="257"/>
+        <source>&amp;Redo</source>
+        <translation>&amp;Rehacer</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Select and copy all</source>
+        <translation type="obsolete">Seleccionar y copiar todo</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="266"/>
+        <source>Select and copy &amp;all</source>
+        <translation>Seleccionar y copiar &amp;todo</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Copy</source>
+        <translation type="obsolete">Copiar</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="273"/>
+        <source>&amp;Copy</source>
+        <translation>&amp;Copiar</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Cut</source>
+        <translation type="obsolete">Cortar</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="281"/>
+        <source>Cu&amp;t</source>
+        <translation>&amp;Cortar</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Paste</source>
+        <translation type="obsolete">Pegar</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="289"/>
+        <source>&amp;Paste</source>
+        <translation>&amp;Pegar</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Delete all</source>
+        <translation type="obsolete">Borrar Todo</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="297"/>
+        <source>&amp;Delete All</source>
+        <translation>&amp;Borrar Todo</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Convert paragraphs to linebreaks</source>
+        <translation type="obsolete">Convertir párrafos a líneas sueltas</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Convert Paragraphs</source>
+        <translation type="obsolete">&amp;Convertir Párrafos</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Join all lines of a paragraph</source>
+        <translation type="obsolete">Unir todas las líneas de un párrafo</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Join lines</source>
+        <translation type="obsolete">&amp;Unir Líneas</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Format</source>
+        <translation type="obsolete">&amp;Formato</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Toggle font hint for the whole text</source>
+        <translation type="obsolete">Ajustar consejo de fuente a todo el texto</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="314"/>
+        <source>&amp;Font hint</source>
+        <translation>&amp;Consejo de Fuente</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="347"/>
+        <source>&amp;Color...</source>
+        <translation>&amp;Color...</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="353"/>
+        <source>&amp;Bold</source>
+        <translation>&amp;Negrilla</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="361"/>
+        <source>&amp;Italic</source>
+        <translation>&amp;Cursiva</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="369"/>
+        <source>&amp;Underline</source>
+        <translation>&amp;Subrayado</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="400"/>
+        <source>&amp;Left</source>
+        <translation>&amp;Izquierda</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="406"/>
+        <source>C&amp;enter</source>
+        <translation>&amp;Centro</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="412"/>
+        <source>&amp;Right</source>
+        <translation>&amp;Derecha</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="418"/>
+        <source>&amp;Justify</source>
+        <translation>&amp;justificado</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="428"/>
+        <source>&amp;Settings</source>
+        <translation>&amp;Configuración</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Set fixed font</source>
+        <translation type="obsolete">Configurar  fuente arreglada</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="431"/>
+        <source>Set &amp;fixed font</source>
+        <translation>Configurar  fuente &amp;arreglada</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Set variable font</source>
+        <translation type="obsolete">Configurar variable fuente</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="437"/>
+        <source>Set &amp;variable font</source>
+        <translation>Configurar &amp;variable fuente</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Used fixed font by default</source>
+        <translation type="obsolete">Fuente arreglada usada por defecto</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="443"/>
+        <source>&amp;fixed font is default</source>
+        <translation>&amp;fuente arreglada por defecto</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="557"/>
+        <source>Export Note to single file</source>
+        <translation>Exportar nota a archivo sencillo</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>The file </source>
+        <translation type="obsolete">El archivo</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source> exists already. Do you want to overwrite it?</source>
+        <translation type="obsolete">ya existe. ¿Desea sobrescribir?</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="645"/>
+        <source>Overwrite</source>
+        <translation>Sobreescribir</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="646"/>
+        <source>Cancel</source>
+        <translation>Cancelar</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Couldn&apos;t export note </source>
+        <translation type="obsolete">No pudo exportar nota</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="631"/>
+        <source>Export Note to single file (ASCII)</source>
+        <translation>Exportar Nota a archivo simple (ASCII)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="380"/>
+        <source>Subs&amp;cript</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="388"/>
+        <source>Su&amp;perscript</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="457"/>
+        <source>Note Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="310"/>
+        <source>F&amp;ormat</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="244"/>
+        <source>Edit Actions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="308"/>
+        <source>Format Actions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="197"/>
+        <source>Note Actions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="38"/>
+        <source>Ready</source>
+        <comment>Statusbar message</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="163"/>
+        <source>No filename available for this note.</source>
+        <comment>Statusbar message</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="39"/>
+        <source>Note Editor</source>
+        <comment>Window caption</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="199"/>
+        <source>&amp;Note</source>
+        <comment>Menubar</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="203"/>
+        <source>Import</source>
+        <comment>Status tip for Note menu</comment>
+        <translation type="unfinished">Importar</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="212"/>
+        <source>Export Note (HTML)</source>
+        <comment>Status tip for Note menu</comment>
+        <translation type="unfinished">Exportar Nota (HTML)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="220"/>
+        <source>Export Note As (HTML) </source>
+        <comment>Status tip for Note Menu</comment>
+        <translation type="unfinished">Exportar Nota Como...(HTML)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="226"/>
+        <source>Export Note As (ASCII) </source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished">Exportar Nota Como...(ASCII)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="234"/>
+        <source>Print Note</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished">Imprimir Nota</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="250"/>
+        <source>Undo</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished">Deshacer</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="258"/>
+        <source>Redo</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished">Rehacer</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="267"/>
+        <source>Select and copy all</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished">Seleccionar y copiar todo</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="274"/>
+        <source>Copy</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished">Copiar</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="282"/>
+        <source>Cut</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished">Cortar</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="290"/>
+        <source>Paste</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished">Pegar</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="298"/>
+        <source>Delete all</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished">Borrar Todo</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="315"/>
+        <source>Toggle font hint for the whole text</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished">Ajustar consejo de fuente a todo el texto</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="432"/>
+        <source>Set fixed font</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished">Configurar  fuente arreglada</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="438"/>
+        <source>Set variable font</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished">Configurar variable fuente</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="444"/>
+        <source>Used fixed font by default</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished">Fuente arreglada usada por defecto</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="640"/>
+        <source>The file %1
+exists already.
+Do you want to overwrite it?</source>
+        <comment>dialog &apos;save note as&apos;</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="589"/>
+        <source>Couldn&apos;t export note </source>
+        <comment>dialog &apos;save note as&apos;</comment>
+        <translation type="unfinished">No pudo exportar nota</translation>
+    </message>
+</context>
+<context>
+    <name>WarningDialog</name>
+    <message>
+        <location filename="../warningdialog.ui" line="132"/>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.ui" line="139"/>
+        <source>Ok</source>
+        <translation type="unfinished">Ok</translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.ui" line="13"/>
+        <source>VYM - Warning : Foo...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.ui" line="106"/>
+        <source>showAgainBox</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.cpp" line="11"/>
+        <source>Proceed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.cpp" line="15"/>
+        <source>Show this message again</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
diff --git a/lang/vym_fr.qm b/lang/vym_fr.qm
new file mode 100644 (file)
index 0000000..88bb66d
Binary files /dev/null and b/lang/vym_fr.qm differ
diff --git a/lang/vym_fr.ts b/lang/vym_fr.ts
new file mode 100644 (file)
index 0000000..9822a0b
--- /dev/null
@@ -0,0 +1,3930 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS><TS version="1.1">
+<context>
+    <name>AboutDialog</name>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Ok</source>
+        <translation type="obsolete">OK</translation>
+    </message>
+    <message>
+        <location filename="../aboutdialog.cpp" line="205"/>
+        <source>Ok</source>
+        <comment>Ok Button</comment>
+        <translation type="unfinished">OK</translation>
+    </message>
+</context>
+<context>
+    <name>AboutTextBrowser</name>
+    <message>
+        <location filename="../aboutdialog.cpp" line="226"/>
+        <source>Warning</source>
+        <comment>About window</comment>
+        <translation type="unfinished">Avertissement</translation>
+    </message>
+    <message>
+        <location filename="../aboutdialog.cpp" line="227"/>
+        <source>Couldn&apos;t find a viewer to open %1.
+</source>
+        <comment>About window</comment>
+        <translation type="unfinished">Ne peut trouver un lecteur pour ouvrir %1.
+</translation>
+    </message>
+    <message>
+        <location filename="../aboutdialog.cpp" line="228"/>
+        <source>Please use Settings-&gt;</source>
+        <translation type="unfinished">SVP utilisez la personnalisation-&gt;</translation>
+    </message>
+    <message>
+        <location filename="../aboutdialog.cpp" line="228"/>
+        <source>Set application to open an URL</source>
+        <translation type="unfinished">Choisir l&apos;application pour ouvrir une URL</translation>
+    </message>
+</context>
+<context>
+    <name>Attribute Dialog</name>
+    <message>
+        <location filename="../attributedialog.cpp" line="74"/>
+        <source>AttributeDialog - Edit definitions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../attributedialog.cpp" line="76"/>
+        <source>AttributeDialog - Edit %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>AttributeDialog</name>
+    <message>
+        <location filename="../attributedialog.cpp" line="48"/>
+        <source>Attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../attributedialog.cpp" line="49"/>
+        <source>Add key</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../attributedialog.cpp" line="50"/>
+        <source>Close</source>
+        <translation type="unfinished">Fermer</translation>
+    </message>
+</context>
+<context>
+    <name>AttributeWidget</name>
+    <message>
+        <location filename="../attributewidget.ui" line="13"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>BranchPropertyWindow</name>
+    <message>
+        <location filename="../branchpropwindow.cpp" line="16"/>
+        <source>Property Editor</source>
+        <comment>Window caption</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.cpp" line="32"/>
+        <source>Name</source>
+        <comment>Branchprop window: Attribute name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.cpp" line="33"/>
+        <source>Value</source>
+        <comment>Branchprop window: Attribute value</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.cpp" line="34"/>
+        <source>Type</source>
+        <comment>Branchprop window: Attribute type</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="19"/>
+        <source>Branch Property Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="29"/>
+        <source>Frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="50"/>
+        <source>Geometry</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="63"/>
+        <source>No Frame</source>
+        <translation type="unfinished">Pas de cadre</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="68"/>
+        <source>Rectangle</source>
+        <translation type="unfinished">Rectangle</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="73"/>
+        <source>Ellipse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="94"/>
+        <source>Padding</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="101"/>
+        <source>Borderline width</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="151"/>
+        <source>Colors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="194"/>
+        <source>Borderline color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="217"/>
+        <source>Background color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="246"/>
+        <source>Layout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="254"/>
+        <source>Include images horizontally</source>
+        <translation type="unfinished">Inclure les images horizontalement</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="261"/>
+        <source>Include images vertically</source>
+        <translation type="unfinished">Inclure les images verticalement</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="284"/>
+        <source>Link</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="290"/>
+        <source>Hide link if unselected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="311"/>
+        <source>Attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="337"/>
+        <source>+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="344"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="413"/>
+        <source>Close</source>
+        <translation type="unfinished">Fermer</translation>
+    </message>
+</context>
+<context>
+    <name>EditXLinkDialog</name>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="24"/>
+        <source>Edit XLink</source>
+        <translation>Éditer le XLien</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="62"/>
+        <source>XLink width:</source>
+        <translation>Largeur du XLien:</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="78"/>
+        <source>Set color of heading</source>
+        <translation>Ajuster la couleur de l&apos;en-tête</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="108"/>
+        <source>XLink color:</source>
+        <translation>Couleur du XLien:</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="150"/>
+        <source>Use as default:</source>
+        <translation>Utiliser par défaut:</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Delete XLink</source>
+        <translation type="obsolete">Effacer le XLien</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="225"/>
+        <source>Ok</source>
+        <translation>OK</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="202"/>
+        <source>Quit and delete XLink</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ExportXHTMLDialog</name>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="19"/>
+        <source>Export XHTML</source>
+        <translation>Exporter en XHTML</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="48"/>
+        <source>Export to directory:</source>
+        <translation>Exporter vers le répertoire:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="455"/>
+        <source>Browse</source>
+        <translation>Parcourir</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="92"/>
+        <source>Options</source>
+        <translation>Options</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="144"/>
+        <source>Include image</source>
+        <translation>Inclure l&apos;image</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="151"/>
+        <source>Colored headings in text</source>
+        <translation>En-têtes colorés dans le texte</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="158"/>
+        <source>Save settings in map</source>
+        <translation>Sauver les réglages dans la carte
+</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>showWarnings e.g. if directory is not empty</source>
+        <translation type="obsolete">montrer les avertissements par ex. si un répertoire n&apos;est pas vide</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="113"/>
+        <source>show output of external scripts</source>
+        <translation>montrer la sortie des scripts externes</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="289"/>
+        <source>CSS:</source>
+        <translation>CSS:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="232"/>
+        <source>XSL:</source>
+        <translation>XSL:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="376"/>
+        <source>Before export:</source>
+        <translation>Avant export :</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="436"/>
+        <source>After Export:</source>
+        <translation>Après export :</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="508"/>
+        <source>Export</source>
+        <translation>Exporter</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="501"/>
+        <source>Cancel</source>
+        <translation>Annuler</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="335"/>
+        <source>Warning</source>
+        <translation>Avertissement</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="140"/>
+        <source>VYM - Export HTML to directory</source>
+        <translation>VYM - Exporter en HTML vers un répertoire</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>VYM - Path to CSS file</source>
+        <translation type="obsolete">VYM - Chemin d&apos;accès au fichier CSS</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>VYM - Path to XSL file</source>
+        <translation type="obsolete">VYM - Chemin d&apos;accès au fichier XSL</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>VYM - Path to pre export script</source>
+        <translation type="obsolete">VYM - Chemin d&apos;accès au script de pré-exportation</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>VYM - Path to post export script</source>
+        <translation type="obsolete">VYM - Chemin d&apos;accès au script de post-exportation</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="405"/>
+        <source>Critical Error</source>
+        <translation>Erreur grave</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="176"/>
+        <source>Stylesheets</source>
+        <translation>Feuilles de style</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="320"/>
+        <source>Scripts</source>
+        <translation>Scripts</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="119"/>
+        <source>The settings saved in the map would like to run scripts:
+
+%1
+
+Please check, if you really
+want to allow this in your system!</source>
+        <translation>Les réglages sauvés dans la carte souhaiteraient lancer les scripts:
+
+%1
+
+Veuillez vérifier si vous voulez vraiment l&apos;autoriser sur votre système!</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="335"/>
+        <source>Could not open %1</source>
+        <translation>N&apos;a pas pu ouvrir %1</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="320"/>
+        <source>Could not write %1</source>
+        <translation>N&apos;a pas pu écrire %1</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="401"/>
+        <source>Could not start %1</source>
+        <translation>N&apos;a pas pu lancer %1</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="406"/>
+        <source>%1 didn&apos;t exit normally</source>
+        <translation>%1 ne s&apos;est pas terminé normalement</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="165"/>
+        <source>show warnings of xslt processor</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ExtraInfoDialog</name>
+    <message>
+        <location filename="../extrainfodialog.ui" line="16"/>
+        <source>VYM - Info</source>
+        <translation>VYM - Info</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="28"/>
+        <source>Map:</source>
+        <translation>Carte :</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="42"/>
+        <source>Author:</source>
+        <translation>Auteur :</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="52"/>
+        <source>Comment:</source>
+        <translation>Commentaire:</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="77"/>
+        <source>Statistics:</source>
+        <translation>Statistiques:</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="129"/>
+        <source>Cancel</source>
+        <translation>Annuler</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="136"/>
+        <source>Close</source>
+        <translation>Fermer</translation>
+    </message>
+</context>
+<context>
+    <name>FindWindow</name>
+    <message>
+        <location filename="../findwindow.cpp" line="40"/>
+        <source>Clear</source>
+        <translation>Effacer</translation>
+    </message>
+    <message>
+        <location filename="../findwindow.cpp" line="45"/>
+        <source>Cancel</source>
+        <translation>Annuler</translation>
+    </message>
+    <message>
+        <location filename="../findwindow.cpp" line="51"/>
+        <source>Find</source>
+        <translation>Trouver</translation>
+    </message>
+    <message>
+        <location filename="../findwindow.cpp" line="14"/>
+        <source>Find Text</source>
+        <translation>Trouver le texte</translation>
+    </message>
+    <message>
+        <location filename="../findwindow.cpp" line="21"/>
+        <source>Text to find:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>Heading of mapcenter in new map</name>
+    <message>
+        <location filename="../vymmodel.cpp" line="105"/>
+        <source>New map</source>
+        <translation type="unfinished">Nouvelle carte<byte value="x9"/></translation>
+    </message>
+</context>
+<context>
+    <name>HistoryWindow</name>
+    <message>
+        <location filename="../historywindow.cpp" line="18"/>
+        <source>Action</source>
+        <comment>Table with actions</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../historywindow.cpp" line="21"/>
+        <source>Comment</source>
+        <comment>Table with actions</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../historywindow.cpp" line="24"/>
+        <source>Undo action</source>
+        <comment>Table with actions</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../historywindow.cpp" line="126"/>
+        <source>Current state</source>
+        <comment>Current bar in history hwindow</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="13"/>
+        <source>Dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="50"/>
+        <source>Redo</source>
+        <translation type="unfinished">Refaire</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="72"/>
+        <source>Time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="77"/>
+        <source>Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="85"/>
+        <source>Undo</source>
+        <translation type="unfinished">Défaire</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="122"/>
+        <source>Close</source>
+        <translation type="unfinished">Fermer</translation>
+    </message>
+</context>
+<context>
+    <name>Main</name>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;File</source>
+        <translation type="obsolete">&amp;Fichier</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>New map</source>
+        <comment>File menu</comment>
+        <translation type="obsolete">Nouvelle carte<byte value="x9"/></translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;New...</source>
+        <translation type="obsolete">&amp;Nouveau...</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Open</source>
+        <comment>File menu</comment>
+        <translation type="obsolete">Ouvrir</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Open...</source>
+        <translation type="obsolete">&amp;Ouvrir...</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Open Recent</source>
+        <translation type="obsolete">Ouvrir un document récent</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Save</source>
+        <translation type="obsolete">Sauver</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Save...</source>
+        <translation type="obsolete">&amp;Sauver...</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Save &amp;As</source>
+        <translation type="obsolete">Sauver &amp;Comme</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Save &amp;As...</source>
+        <translation type="obsolete">Sauver &amp;comme...</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Import directory structure (experimental)</source>
+        <translation type="obsolete">Importer la structure de répertoire (expérimental)</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Export</source>
+        <translation type="obsolete">Exporter</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Print</source>
+        <translation type="obsolete">Imprimer</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="429"/>
+        <source>Close Map</source>
+        <translation>Fermer la carte</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Close Map</source>
+        <translation type="obsolete">&amp;Fermer la carte</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Edit</source>
+        <translation type="obsolete">&amp;Éditer</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="454"/>
+        <source>Undo</source>
+        <translation>Défaire</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Undo</source>
+        <translation type="obsolete">&amp;Défaire</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="471"/>
+        <source>Copy</source>
+        <translation>Copier</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Copy</source>
+        <translation type="obsolete">&amp;Copier</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="480"/>
+        <source>Cut</source>
+        <translation>Couper</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Cu&amp;t</source>
+        <translation type="obsolete">Cou&amp;per</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="490"/>
+        <source>Paste</source>
+        <translation>Coller</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Paste</source>
+        <translation type="obsolete">Co&amp;ller</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="614"/>
+        <source>Move branch up</source>
+        <translation>Monter la branche</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Move up</source>
+        <translation type="obsolete">Monter</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="624"/>
+        <source>Move branch down</source>
+        <translation>Descendre la branche</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Move down</source>
+        <translation type="obsolete">Descendre</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="645"/>
+        <source>Scroll branch</source>
+        <translation>Enrouler la branche</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Unscroll all</source>
+        <translation type="obsolete">Dérouler tout</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Unscroll all scrolled branches</source>
+        <translation type="obsolete">Dérouler toutes les branches enroulées</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="669"/>
+        <source>Find</source>
+        <translation>Trouver</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="678"/>
+        <source>Open URL</source>
+        <translation>Ouvrir une URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="699"/>
+        <source>Edit URL</source>
+        <translation>Éditer une URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="717"/>
+        <source>Use heading of selected branch as URL</source>
+        <translation>Utiliser l&apos;en-tête de la branche sélectionnée comme URL</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Use heading for URL</source>
+        <translation type="obsolete">Utiliser l&apos;en-tête comme URL</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Create URL to Bugzilla</source>
+        <translation type="obsolete">Créer une URL vers Bugzilla</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="738"/>
+        <source>Jump to another vym map, if needed load it first</source>
+        <translation>Sauter à une autre carte, si besoin le charger d&apos;abord</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Jump to map</source>
+        <translation type="obsolete">Sauter à la carte</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="754"/>
+        <source>Edit link to another vym map</source>
+        <translation>Éditer un lien vers une autre carte vym</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="760"/>
+        <source>Delete link to another vym map</source>
+        <translation>Effacer le lien vers une autre carte vym</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Delete vym link</source>
+        <translation type="obsolete">Effacer le lien vym</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="775"/>
+        <source>Edit Map Info</source>
+        <translation>Éditer les infos carte</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="515"/>
+        <source>edit Heading</source>
+        <translation>Éditer l&apos;en-tête</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Edit heading</source>
+        <translation type="obsolete">Éditer l&apos;en-tête</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="524"/>
+        <source>Delete Selection</source>
+        <translation>Effacer la sélection</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="545"/>
+        <source>Add a branch as child of selection</source>
+        <translation>Ajouter une branche comme enfant de la sélection</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Add branch as child</source>
+        <translation type="obsolete">Ajouter une branche comme enfant</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="588"/>
+        <source>Add a branch above selection</source>
+        <translation>Ajouter une branche au-dessus de la sélection</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Add branch above</source>
+        <translation type="obsolete">Ajouter une branche au-dessus</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="606"/>
+        <source>Add a branch below selection</source>
+        <translation>Ajouter une branche en-dessous de la sélection</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Add branch below</source>
+        <translation type="obsolete">Ajouter une branche au-dessous</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="782"/>
+        <source>Add map at selection</source>
+        <translation>Ajouter un schéma à la sélection</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="790"/>
+        <source>Replace selection with map</source>
+        <translation>Remplacer la sélection par une carte</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="798"/>
+        <source>Save selection</source>
+        <translation>Sauver la sélection</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="825"/>
+        <source>Select upper branch</source>
+        <translation>Sélectionner la branche supérieure</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="831"/>
+        <source>Select lower branch</source>
+        <translation>Sélectionner la branche inférieure</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="837"/>
+        <source>Select left branch</source>
+        <translation>Sélectionner la branche de gauche</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="843"/>
+        <source>Select right branch</source>
+        <translation>Sélectionner la branche de droite</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Select child branch</source>
+        <translation type="obsolete">Sélectionner la branche fille</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="849"/>
+        <source>Select first branch</source>
+        <translation>Sélectionner la première branche</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="859"/>
+        <source>Select last branch</source>
+        <translation>Sélectionner la dernière branche</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="870"/>
+        <source>Add Image</source>
+        <translation>Ajouter une image</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="895"/>
+        <source>Set Color</source>
+        <translation>Ajuster la couleur</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="894"/>
+        <source>Set &amp;Color</source>
+        <translation>Ajuster la &amp;Couleur</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="901"/>
+        <source>Pick color
+Hint: You can pick a color from another branch and color using CTRL+Left Button</source>
+        <translation>Couleur rose
+Conseil: vous pouvez choisir une couleur depuis une autre branche et colorer en utilisant CTRL+bouton gauche</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Pic&amp;k color</source>
+        <translation type="obsolete">Choisir une couleur</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="911"/>
+        <source>Color branch</source>
+        <translation>Colorier la branche</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Color &amp;branch</source>
+        <translation type="obsolete">Colorier la &amp;branche</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="921"/>
+        <source>Color Subtree</source>
+        <translation>Colorier le sous-arbre</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Color sub&amp;tree</source>
+        <translation type="obsolete">Colorier le sous-arbre</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="940"/>
+        <source>Line</source>
+        <translation>Ligne</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="933"/>
+        <source>Linkstyle Line</source>
+        <translation>Style de la ligne du XLink</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Linkstyle Parabel</source>
+        <translation type="obsolete">Style de la ligne du XLink : parabole</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="946"/>
+        <source>PolyLine</source>
+        <translation>PolyLigne</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="945"/>
+        <source>Linkstyle Thick Line</source>
+        <translation>Style de la ligne du XLink : ligne épaisse</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="952"/>
+        <source>PolyParabel</source>
+        <translation>PolyParabole</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Linkstyle Thick Parabel</source>
+        <translation type="obsolete">Style de la ligne du XLink : parabole épaisse</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>No Frame</source>
+        <translation type="obsolete">Pas de cadre</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Rectangle</source>
+        <translation type="obsolete">Rectangle</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="967"/>
+        <source>Use same color for links and headings</source>
+        <translation>Utiliser la même couleur pour les liens et les en-têtes</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Use color of heading for link</source>
+        <translation type="obsolete">&amp;Utiliser la couleur de l&apos;en-tête pour le lien</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="975"/>
+        <source>Set Link Color</source>
+        <translation>Ajuster la couleur du lien</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="987"/>
+        <source>Set Background Color</source>
+        <translation>Ajuster la couleur du fond</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="986"/>
+        <source>Set &amp;Background Color</source>
+        <translation>Ajuster la couleur du fond</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1005"/>
+        <source>&amp;View</source>
+        <translation>&amp;Voir</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1009"/>
+        <source>Zoom reset</source>
+        <translation>remise à zéro du zoom</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>reset Zoom</source>
+        <translation type="obsolete">remettre à zéro le zoom</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1016"/>
+        <source>Zoom in</source>
+        <translation>Zoom avant</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1023"/>
+        <source>Zoom out</source>
+        <translation>Zoom arrière</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Next Window</source>
+        <translation type="obsolete">Fenêtre suiva&amp;nte</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Next Window</source>
+        <translation type="obsolete">Fenêtre suivante</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Previous Window</source>
+        <translation type="obsolete">Fenêtre &amp;précédente</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Previous Window</source>
+        <translation type="obsolete">Fenêtre précédente</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Modes when using modifiers</source>
+        <translation type="obsolete">Modes pendant l&apos;utilisation de modificateurs</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1102"/>
+        <source>Use modifier to color branches</source>
+        <translation>Utiliser un modificateur pour colorer des branches</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1376"/>
+        <source>&amp;Settings</source>
+        <translation>&amp;Paramètres</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1381"/>
+        <source>Set application to open pdf files</source>
+        <translation>Configurer une application pour ouvrir les fichiers PDF</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1427"/>
+        <source>Edit branch after adding it</source>
+        <translation>Éditer la branche après l&apos;ajout</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1434"/>
+        <source>Select branch after adding it</source>
+        <translation>Sélectionner la branche après l&apos;ajout</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1441"/>
+        <source>Select heading before editing</source>
+        <translation>Sélectionner l&apos;en-tête avant l&apos;édition</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Select existing heading</source>
+        <translation type="obsolete">Sélectionner un en-tête existant</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1484"/>
+        <source>&amp;Test</source>
+        <translation>&amp;Test</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>test flag</source>
+        <translation type="obsolete">tester le drapeau</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Help</source>
+        <translation type="obsolete">&amp;Aide</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1510"/>
+        <source>Open VYM Documentation (pdf)</source>
+        <translation>Ouvrir la documentation VYM (PDF)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1525"/>
+        <source>Information about QT toolkit</source>
+        <translation>Information à propos du toolkit QT</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>About QT</source>
+        <translation type="obsolete">À propos de QT</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Save image</source>
+        <translation type="obsolete">Sauver l&apos;image</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2017"/>
+        <source>Overwrite</source>
+        <translation>Écraser</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2018"/>
+        <source>Cancel</source>
+        <translation>Annuler</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1783"/>
+        <source>Open anyway</source>
+        <translation>Ouvrir de toute manière</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1831"/>
+        <source>Create</source>
+        <translation>Créer</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Critical Load Error</source>
+        <translation type="obsolete">Erreur grave de chargement</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Couldn&apos;t find a map (*.xml) in .vym archive.
+</source>
+        <translation type="obsolete">Incapable de trouver une carte (*.xml) dans une archive .vym.
+</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1907"/>
+        <source>Load vym map</source>
+        <translation>Charger une carte VYM</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1910"/>
+        <source>Import: Add vym map to selection</source>
+        <translation>Importer : ajouter la carte VYM à la sélection</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1913"/>
+        <source>Import: Replace selection with vym map</source>
+        <translation>Importer : remplacer la sélection par une carte VYM</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Save Error</source>
+        <translation type="obsolete">Sauver l&apos;erreur</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>
+could not be removed before saving</source>
+        <translation type="obsolete">
+ne peut être enlevé avant de sauver</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>compressed (vym default)</source>
+        <translation type="obsolete">compressé (défaut VYM)</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>uncompressed</source>
+        <translation type="obsolete">décompressé</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Export XML to directory</source>
+        <translation type="obsolete">Exporter le XML vers le répertoire</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2306"/>
+        <source>Save modified map before closing it</source>
+        <translation>Sauver la carte modifiée avant de le fermer</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2357"/>
+        <source>Discard changes</source>
+        <translation>Ignorer les changements</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2351"/>
+        <source>This map is not saved yet. Do you want to</source>
+        <translation>Cette carte  n&apos;est pas encore sauvée. Voulez-vous</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2356"/>
+        <source>Save map</source>
+        <translation>Sauver la carte</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3285"/>
+        <source>VYM -Information:</source>
+        <translation>VYM - Information:</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2790"/>
+        <source>Critical Error</source>
+        <translation>Erreur grave</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3734"/>
+        <source>Critcal error</source>
+        <translation>Erreur grave</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Couldn&apos;t find the documentation
+vym.pdf in various places.</source>
+        <translation type="obsolete">N&apos;a pas pu trouver la documentation
+vym.pdf en différents endroits.</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="570"/>
+        <source>Add a branch by inserting and making selection its child</source>
+        <translation>Ajouter une branche par insertion et affiliation de la sélection</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Add branch (insert)</source>
+        <translation type="obsolete">Ajouter une branche (insérer)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="806"/>
+        <source>Remove only branch and keep its childs</source>
+        <translation>Enlever seulement la branche et garder ses fils</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Remove only branch </source>
+        <translation type="obsolete">Enlever seulement la branche</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="816"/>
+        <source>Remove childs of branch</source>
+        <translation>Enlever les fils de la branche</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Remove childs</source>
+        <translation type="obsolete">Enlever les enfants</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1110"/>
+        <source>Use modifier to copy</source>
+        <translation>Utoiliser le modificateur pour copier</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1541"/>
+        <source>Add</source>
+        <translation>Ajouter</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Remove</source>
+        <translation type="obsolete">Enlever</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Edit XLink</source>
+        <translation type="obsolete">Éditer XLink</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Goto XLink</source>
+        <translation type="obsolete">Aller au XLink</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1117"/>
+        <source>Use modifier to draw xLinks</source>
+        <translation>Utiliser le modificateur pour tracer le XLink</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1456"/>
+        <source>Use exclusive flags in flag toolbars</source>
+        <translation>Utiliser les indicateurs exclusifs dans la barre de menu</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1386"/>
+        <source>Set application to open external links</source>
+        <translation>Choisir l&apos;application pour ouvrir des liens externes</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Pasting into new branch</source>
+        <translation type="obsolete">Copie dans la nouvelle branche</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>pasting into new branch</source>
+        <translation type="obsolete">copie dans la nouvelle branche</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1448"/>
+        <source>Delete key for deleting branches</source>
+        <translation>Touche suppr pour effacer des branches</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Delete key</source>
+        <translation type="obsolete">Touche suppr</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Exclusive flags</source>
+        <translation type="obsolete">indicateurs exclusifs</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>The directory %1 is not empty.
+Do you risk to overwrite its contents?</source>
+        <translation type="obsolete">Le répertoire %1 n&apos;est pas vide. Vous risquez d&apos;écraser son contenu ?</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1778"/>
+        <source>The map %1
+is already opened.Opening the same map in multiple editors may lead 
+to confusion when finishing working with vym.Do you want to</source>
+        <translation>La carte %1
+ est déjà ouverte. Ouvrir plusieurs fois la la même carte peut amener
+ des confusions à la fermeture de vym. Le voulez vous </translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1825"/>
+        <source>This map does not exist:
+  %1
+Do you want to create a new one?</source>
+        <translation>La carte %1 n&apos;existe pas
+Voulez-vous en créer une nouvelle ?</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>The map %1
+did not use the compressed vym file format.
+Writing it uncompressed will also write images 
+and flags and thus may overwrite files in the given directory
+
+Do you want to write the map</source>
+        <translation type="obsolete">La carte %1
+n&apos;utilise pas le format compressé de vym.
+Si on l&apos;écrit  non compressée, on va écrire les images et les indicateurs
+et pourra écraser des fichiers dans le répertoire
+Voulez vous écrire la carte </translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1977"/>
+        <source>Saved  %1</source>
+        <translation>Sauvé %1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1982"/>
+        <source>Couldn&apos;t save </source>
+        <translation>Ne peut pas sauver</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2012"/>
+        <source>The file %1
+exists already. Do you want to</source>
+        <translation>Le fichier %1 existe. Voulez vous</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2301"/>
+        <source>The map %1 has been modified but not saved yet. Do you want to</source>
+        <translation>La carte %1 a été modifiée mais pas sauvée. Voulez-vous</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2791"/>
+        <source>Couldn&apos;t open map %1</source>
+        <translation>Ne peut pas ouvrir la carte %1</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Set application to open pdf files  ...</source>
+        <translation type="obsolete">Choisir l&apos;application pour ouvrir les fichiers pdf  ...</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Set application to open external links...</source>
+        <translation type="obsolete">Choisit l&apos;application pour ouvrir les liens externes ...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="435"/>
+        <source>Exit</source>
+        <translation>Sortie</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>E&amp;xit</source>
+        <translation type="obsolete">S&amp;ortie</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="462"/>
+        <source>Redo</source>
+        <translation>Refaire</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Redo</source>
+        <translation type="obsolete">&amp;Refaire</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Create URL to FATE</source>
+        <translation type="obsolete">Abandonner l&apos;URL</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Include top and bottom position of images into branch</source>
+        <translation type="obsolete">inclure les positions des images haut et bas des images dans les branches</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Include images vertically</source>
+        <translation type="obsolete">Inclure les images verticalement</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Include left and right position of images into branch</source>
+        <translation type="obsolete">Inclure les positions droite et gauche des images dans les branches</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Include images horizontally</source>
+        <translation type="obsolete">Inclure les images horizontalement</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="960"/>
+        <source>Hide link</source>
+        <translation>Cacher le lien</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Hide link if object is not selected</source>
+        <translation type="obsolete">Cacher le lien si l&apos;objet n&apos;est pas sélectionné</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Note</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Note</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>WWW Document (external)</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Document WWW externe</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Link to another vym map</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Lien vers une autre carte cym</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>subtree is scrolled</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">La sous-branche est enroulée</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>subtree is temporary scrolled</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">la sous-branche est provisoirement enroulée</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1164"/>
+        <source>Take care!</source>
+        <comment>Standardflag</comment>
+        <translation>Attention !</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1168"/>
+        <source>Really?</source>
+        <comment>Standardflag</comment>
+        <translation>Vraiment ?</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1172"/>
+        <source>ok!</source>
+        <comment>Standardflag</comment>
+        <translation>ok !</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1176"/>
+        <source>Not ok!</source>
+        <comment>Standardflag</comment>
+        <translation>Pas ok !<byte value="x9"/></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1180"/>
+        <source>This won&apos;t work!</source>
+        <comment>Standardflag</comment>
+        <translation>cela ne marche pas !</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1184"/>
+        <source>Good</source>
+        <comment>Standardflag</comment>
+        <translation>Bien<byte value="x9"/></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1188"/>
+        <source>Bad</source>
+        <comment>Standardflag</comment>
+        <translation>Mauvais</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1197"/>
+        <source>Time critical</source>
+        <comment>Standardflag</comment>
+        <translation>Temporellement critique </translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1203"/>
+        <source>Idea!</source>
+        <comment>Standardflag</comment>
+        <translation>Idée !</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1207"/>
+        <source>Important</source>
+        <comment>Standardflag</comment>
+        <translation>Important
+</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1211"/>
+        <source>Unimportant</source>
+        <comment>Standardflag</comment>
+        <translation>Pas important</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1224"/>
+        <source>I like this</source>
+        <comment>Standardflag</comment>
+        <translation>J&apos;aime</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1228"/>
+        <source>I do not like this</source>
+        <comment>Standardflag</comment>
+        <translation>Je n&apos;aime pas</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>I just love... </source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">J&apos;aime un peu ...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1241"/>
+        <source>Dangerous</source>
+        <comment>Standardflag</comment>
+        <translation>Dangereux</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1249"/>
+        <source>This will help</source>
+        <comment>Standardflag</comment>
+        <translation>Ceal peut aider</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Call test function</source>
+        <translation type="obsolete">Appeler une fonction de test</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Couldn&apos;t save %1</source>
+        <translation type="obsolete">Ne peut pas sauver %1</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Open VYM Documentation (pdf) </source>
+        <translation type="obsolete">Ouvrir la documentation VYM (pdf) </translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1520"/>
+        <source>About VYM</source>
+        <translation>À propos de VYM</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2139"/>
+        <source>Import</source>
+        <translation>Import</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="399"/>
+        <source>KDE Bookmarks</source>
+        <translation>Signets KDE</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Export in Open Document Format used e.g. in Open Office </source>
+        <translation type="obsolete">Exporter en Open Document Format utilisé par Open Office</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Export as ASCII</source>
+        <translation type="obsolete">Exporter en ASCII</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2249"/>
+        <source>(still experimental)</source>
+        <translation>(toujours expérimental)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2221"/>
+        <source>Export as LaTeX</source>
+        <translation>Exporter en LaTeX</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="420"/>
+        <source>&amp;Print</source>
+        <translation>&amp;Imprimer</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Add map (insert)</source>
+        <translation type="obsolete">Ajouter un schéma (insérer)</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Add map (replace)</source>
+        <translation type="obsolete">Ajouter un schéma (remplacer)</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Export as</source>
+        <translation type="obsolete">Exporter comme</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2269"/>
+        <source>Export to</source>
+        <translation>Exporter vers</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="766"/>
+        <source>Hide object in exports</source>
+        <translation>Cacher les objets dans l&apos;exportation</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Hide in exports</source>
+        <translation type="obsolete">Cacher dans l&apos;export</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Hide object in exported maps</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Cacher les objets dans les cartes exportées</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1463"/>
+        <source>Use hide flag during exports </source>
+        <translation>Utiliser l&apos;indicateur cacher pendant les exports</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Use hide flags</source>
+        <translation type="obsolete">Utiliser l&apos;indicateur cacher</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="685"/>
+        <source>Open URL in new tab</source>
+        <translation>Ouvrir l&apos;URL dans un nouvel onglet<byte value="x9"/></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3819"/>
+        <source>Warning</source>
+        <translation>Avertissement</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3749"/>
+        <source>Couldn&apos;t find a viewer to open %1.
+</source>
+        <translation>Ne peut trouver un lecteur pour ouvrir %1.
+</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3821"/>
+        <source>Please use Settings-&gt;</source>
+        <translation>SVP utilisez la personnalisation-&gt;</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3253"/>
+        <source>Set application to open an URL</source>
+        <translation>Choisir l&apos;application pour ouvrir une URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2498"/>
+        <source>Couldn&apos;t start %1 to open a new tab in %2.</source>
+        <translation>Ne peut pas démarrer %1 pour ouvrir un nouvel onglet dans %2.</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3750"/>
+        <source>Set application to open PDF files</source>
+        <translation>Choisir l&apos;application pour ouvrir les fichier PDF</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1192"/>
+        <source>Oh no!</source>
+        <comment>Standardflag</comment>
+        <translation>Oh non !</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1200"/>
+        <source>Call...</source>
+        <comment>Standardflag</comment>
+        <translation>Appeler...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1215"/>
+        <source>Very important!</source>
+        <comment>Standardflag</comment>
+        <translation>Très important !</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1219"/>
+        <source>Very unimportant!</source>
+        <comment>Standardflag</comment>
+        <translation>Sans intérêt !</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1232"/>
+        <source>Rose</source>
+        <comment>Standardflag</comment>
+        <translation>Rose<byte value="x9"/></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1238"/>
+        <source>Surprise!</source>
+        <comment>Standardflag</comment>
+        <translation>Surprise !</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1245"/>
+        <source>Info</source>
+        <comment>Standardflag</comment>
+        <translation>Information</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="350"/>
+        <source>Firefox Bookmarks</source>
+        <translation>Signets de Firefox</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>F&amp;ormat</source>
+        <translation type="obsolete">F&amp;ormat</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1039"/>
+        <source>Show Note Editor</source>
+        <translation>Afficher l&apos;éditeur de note</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Show history window</source>
+        <translation type="obsolete">Afficher la fenêtre d&apos;historique</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2079"/>
+        <source>Bookmarks</source>
+        <translation>Signets</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2513"/>
+        <source>Couldn&apos;t start %1 to open a new tab</source>
+        <translation>N&apos;a pas pu démarrer %1 pour ouvrir un nouvel onglet</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2289"/>
+        <source>Couldn&apos;t find configuration for export to Open Office
+</source>
+        <translation>N&apos;a pas pu trouver la configuration pour exporter vers Open Office</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2431"/>
+        <source>No matches found for &quot;%1&quot;</source>
+        <translation>Pas de résultats pour &quot;% 1&quot;</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="297"/>
+        <source>&amp;Map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="301"/>
+        <source>&amp;New map</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="302"/>
+        <source>New map</source>
+        <comment>Status tip File menu</comment>
+        <translation type="unfinished">Nouvelle carte<byte value="x9"/></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="308"/>
+        <source>&amp;Copy to new map</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="309"/>
+        <source>Copy selection to mapcenter of a new map</source>
+        <comment>Status tip File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="315"/>
+        <source>&amp;Open...</source>
+        <comment>File menu</comment>
+        <translation type="unfinished">&amp;Ouvrir...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="316"/>
+        <source>Open</source>
+        <comment>Status tip File menu</comment>
+        <translation type="unfinished">Ouvrir</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="322"/>
+        <source>Open Recent</source>
+        <comment>File menu</comment>
+        <translation type="unfinished">Ouvrir un document récent</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="325"/>
+        <source>&amp;Save...</source>
+        <comment>File menu</comment>
+        <translation type="unfinished">&amp;Sauver...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="326"/>
+        <source>Save</source>
+        <comment>Status tip file menu</comment>
+        <translation type="unfinished">Sauver</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="333"/>
+        <source>Save &amp;As...</source>
+        <comment>File menu</comment>
+        <translation type="unfinished">Sauver &amp;comme...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="334"/>
+        <source>Save &amp;As</source>
+        <comment>Status tip file menu</comment>
+        <translation type="unfinished">Sauver &amp;Comme</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="340"/>
+        <source>Import</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="350"/>
+        <source>Import %1</source>
+        <comment>Status tip file menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="343"/>
+        <source>KDE bookmarks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="349"/>
+        <source>Firefox Bookmarks</source>
+        <comment>File menu</comment>
+        <translation type="unfinished">Signets de Firefox</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="361"/>
+        <source>Import %1</source>
+        <comment>status tip file menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="365"/>
+        <source>Import Dir%1</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="366"/>
+        <source>Import directory structure (experimental)</source>
+        <comment>status tip file menu</comment>
+        <translation type="unfinished">Importer la structure de répertoire (expérimental)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="370"/>
+        <source>Export</source>
+        <comment>File menu</comment>
+        <translation type="unfinished">Exporter</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="372"/>
+        <source>Image%1</source>
+        <comment>File export menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="373"/>
+        <source>Export map as image</source>
+        <comment>status tip file menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="378"/>
+        <source>Export in Open Document Format used e.g. in Open Office </source>
+        <comment>status tip file menu</comment>
+        <translation type="unfinished">Exporter en Open Document Format utilisé par Open Office</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="384"/>
+        <source>Export as %1</source>
+        <comment>status tip file menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="384"/>
+        <source> webpage (XHTML)</source>
+        <comment>status tip file menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="414"/>
+        <source>Export as %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="398"/>
+        <source>KDE Bookmarks</source>
+        <comment>File menu</comment>
+        <translation type="unfinished">Signets KDE</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="421"/>
+        <source>Print</source>
+        <comment>File menu</comment>
+        <translation type="unfinished">Imprimer</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="428"/>
+        <source>&amp;Close Map</source>
+        <comment>File menu</comment>
+        <translation type="unfinished">&amp;Fermer la carte</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="434"/>
+        <source>E&amp;xit</source>
+        <comment>File menu</comment>
+        <translation type="unfinished">S&amp;ortie</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="445"/>
+        <source>&amp;Actions toolbar</source>
+        <comment>Toolbar name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="448"/>
+        <source>&amp;Edit</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">&amp;Éditer</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="452"/>
+        <source>&amp;Undo</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">&amp;Défaire</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="461"/>
+        <source>&amp;Redo</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">&amp;Refaire</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="470"/>
+        <source>&amp;Copy</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">&amp;Copier</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="479"/>
+        <source>Cu&amp;t</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Cou&amp;per</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="488"/>
+        <source>&amp;Paste</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Co&amp;ller</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="514"/>
+        <source>Edit heading</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Éditer l&apos;en-tête</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="523"/>
+        <source>Delete Selection</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Effacer la sélection</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="532"/>
+        <source>Add mapcenter</source>
+        <comment>Canvas context menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="544"/>
+        <source>Add branch as child</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Ajouter une branche comme enfant</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="569"/>
+        <source>Add branch (insert)</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Ajouter une branche (insérer)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="587"/>
+        <source>Add branch above</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Ajouter une branche au-dessus</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="605"/>
+        <source>Add branch below</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Ajouter une branche au-dessous</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="613"/>
+        <source>Move up</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Monter</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="622"/>
+        <source>Move down</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Descendre</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="631"/>
+        <source>Sort children</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="643"/>
+        <source>Scroll branch</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Enrouler la branche</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="661"/>
+        <source>Unscroll childs</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="662"/>
+        <source>Unscroll all scrolled branches in selected subtree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="668"/>
+        <source>Find...</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="676"/>
+        <source>Open URL</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Ouvrir une URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="684"/>
+        <source>Open URL in new tab</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Ouvrir l&apos;URL dans un nouvel onglet<byte value="x9"/></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="691"/>
+        <source>Open all URLs in subtree</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="692"/>
+        <source>Open all URLs in subtree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="698"/>
+        <source>Edit URL...</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="707"/>
+        <source>Edit local URL...</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="708"/>
+        <source>Edit local URL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="716"/>
+        <source>Use heading for URL</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Utiliser l&apos;en-tête comme URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="723"/>
+        <source>Create URL to Novell Bugzilla</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="724"/>
+        <source>Create URL to Novell Bugzilla</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="730"/>
+        <source>Create URL to Novell FATE</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="731"/>
+        <source>Create URL to Novell FATE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="737"/>
+        <source>Open linked map</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="744"/>
+        <source>Open all vym links in subtree</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="745"/>
+        <source>Open all vym links in subtree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="752"/>
+        <source>Edit vym link...</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="759"/>
+        <source>Delete vym link</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Effacer le lien vym</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="765"/>
+        <source>Hide in exports</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Cacher dans l&apos;export</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="774"/>
+        <source>Edit Map Info...</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="781"/>
+        <source>Add map (insert)</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Ajouter un schéma (insérer)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="789"/>
+        <source>Add map (replace)</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Ajouter un schéma (remplacer)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="797"/>
+        <source>Save selection</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Sauver la sélection</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="805"/>
+        <source>Remove only branch </source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Enlever seulement la branche</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="815"/>
+        <source>Remove childs</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Enlever les enfants</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="824"/>
+        <source>Select upper branch</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Sélectionner la branche supérieure</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="830"/>
+        <source>Select lower branch</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Sélectionner la branche inférieure</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="836"/>
+        <source>Select left branch</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Sélectionner la branche de gauche</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="842"/>
+        <source>Select child branch</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Sélectionner la branche fille</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="848"/>
+        <source>Select first branch</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Sélectionner la première branche</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="858"/>
+        <source>Select last branch</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Sélectionner la dernière branche</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="869"/>
+        <source>Add Image...</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="874"/>
+        <source>Property window</source>
+        <comment>Dialog to edit properties of selection</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="875"/>
+        <source>Set properties for selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="887"/>
+        <source>F&amp;ormat</source>
+        <comment>Format menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="889"/>
+        <source>Format Actions</source>
+        <comment>Format Toolbar name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="900"/>
+        <source>Pic&amp;k color</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Choisir une couleur</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="910"/>
+        <source>Color &amp;branch</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Colorier la &amp;branche</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="920"/>
+        <source>Color sub&amp;tree</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished">Colorier le sous-arbre</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="939"/>
+        <source>Linkstyle Curve</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="951"/>
+        <source>Linkstyle Thick Curve</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="959"/>
+        <source>Hide link if object is not selected</source>
+        <comment>Branch attribute</comment>
+        <translation type="unfinished">Cacher le lien si l&apos;objet n&apos;est pas sélectionné</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="966"/>
+        <source>&amp;Use color of heading for link</source>
+        <comment>Branch attribute</comment>
+        <translation type="unfinished">&amp;Utiliser la couleur de l&apos;en-tête pour le lien</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="974"/>
+        <source>Set &amp;Link Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="980"/>
+        <source>Set &amp;Selection Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="981"/>
+        <source>Set Selection Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="992"/>
+        <source>Set &amp;Background image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="993"/>
+        <source>Set Background image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1002"/>
+        <source>View Actions</source>
+        <comment>View Toolbar name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1008"/>
+        <source>reset Zoom</source>
+        <comment>View action</comment>
+        <translation type="unfinished">remettre à zéro le zoom</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1015"/>
+        <source>Zoom in</source>
+        <comment>View action</comment>
+        <translation type="unfinished">Zoom avant</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1022"/>
+        <source>Zoom out</source>
+        <comment>View action</comment>
+        <translation type="unfinished">Zoom arrière</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1029"/>
+        <source>Show selection</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1030"/>
+        <source>Show selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1038"/>
+        <source>Show Note Editor</source>
+        <comment>View action</comment>
+        <translation type="unfinished">Afficher l&apos;éditeur de note</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1047"/>
+        <source>History Window</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1048"/>
+        <source>Show History Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1060"/>
+        <source>Antialiasing</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1061"/>
+        <source>Antialiasing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1068"/>
+        <source>Smooth pixmap transformations</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1076"/>
+        <source>Next Map</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1082"/>
+        <source>Previous Map</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1095"/>
+        <source>Modes when using modifiers</source>
+        <comment>Modifier Toolbar name</comment>
+        <translation type="unfinished">Modes pendant l&apos;utilisation de modificateurs</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1100"/>
+        <source>Use modifier to color branches</source>
+        <comment>Mode modifier</comment>
+        <translation type="unfinished">Utiliser un modificateur pour colorer des branches</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1108"/>
+        <source>Use modifier to copy</source>
+        <comment>Mode modifier</comment>
+        <translation type="unfinished">Utoiliser le modificateur pour copier</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1115"/>
+        <source>Use modifier to draw xLinks</source>
+        <comment>Mode modifier</comment>
+        <translation type="unfinished">Utiliser le modificateur pour tracer le XLink</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1136"/>
+        <source>Note</source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished">Note</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1139"/>
+        <source>URL to Document </source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1142"/>
+        <source>Link to another vym map</source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished">Lien vers une autre carte cym</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1145"/>
+        <source>subtree is scrolled</source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished">La sous-branche est enroulée</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1148"/>
+        <source>subtree is temporary scrolled</source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished">la sous-branche est provisoirement enroulée</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1151"/>
+        <source>Hide object in exported maps</source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished">Cacher les objets dans les cartes exportées</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1154"/>
+        <source>Standard Flags</source>
+        <comment>Standard Flag Toolbar</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1235"/>
+        <source>I just love...</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1256"/>
+        <source>Important</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished">Important
+</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1261"/>
+        <source>Priority</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1265"/>
+        <source>Back</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1268"/>
+        <source>Forward</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1271"/>
+        <source>Look here</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1274"/>
+        <source>Dangerous</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished">Dangereux</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1277"/>
+        <source>Don&apos;t forget</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1280"/>
+        <source>Flag</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1284"/>
+        <source>Home</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1288"/>
+        <source>Telephone</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1291"/>
+        <source>Music</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1294"/>
+        <source>Mailbox</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1297"/>
+        <source>Maix</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1300"/>
+        <source>Password</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1303"/>
+        <source>To be improved</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1306"/>
+        <source>Stop</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1309"/>
+        <source>Magic</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1312"/>
+        <source>To be discussed</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1315"/>
+        <source>Reminder</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1318"/>
+        <source>Excellent</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1321"/>
+        <source>Linux</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1324"/>
+        <source>Sweet</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1380"/>
+        <source>Set application to open pdf files</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished">Configurer une application pour ouvrir les fichiers PDF</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1385"/>
+        <source>Set application to open external links</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished">Choisir l&apos;application pour ouvrir des liens externes</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1390"/>
+        <source>Set path for macros</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1391"/>
+        <source>Set path for macros</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1395"/>
+        <source>Set number of undo levels</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1396"/>
+        <source>Set number of undo levels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1402"/>
+        <source>Autosave</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1403"/>
+        <source>Autosave</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1410"/>
+        <source>Autosave time</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1411"/>
+        <source>Autosave time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1416"/>
+        <source>Write backup file on save</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1417"/>
+        <source>Write backup file on save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1426"/>
+        <source>Edit branch after adding it</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished">Éditer la branche après l&apos;ajout</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1433"/>
+        <source>Select branch after adding it</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished">Sélectionner la branche après l&apos;ajout</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1440"/>
+        <source>Select existing heading</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished">Sélectionner un en-tête existant</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1447"/>
+        <source>Delete key</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished">Touche suppr</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1455"/>
+        <source>Exclusive flags</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished">indicateurs exclusifs</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1462"/>
+        <source>Use hide flags</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished">Utiliser l&apos;indicateur cacher</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1469"/>
+        <source>Animation</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1470"/>
+        <source>Animation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1506"/>
+        <source>&amp;Help</source>
+        <comment>Help menubar entry</comment>
+        <translation type="unfinished">&amp;Aide</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1509"/>
+        <source>Open VYM Documentation (pdf) </source>
+        <comment>Help action</comment>
+        <translation type="unfinished">Ouvrir la documentation VYM (pdf) </translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1514"/>
+        <source>Open VYM example maps </source>
+        <comment>Help action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1515"/>
+        <source>Open VYM example maps </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1519"/>
+        <source>About VYM</source>
+        <comment>Help action</comment>
+        <translation type="unfinished">À propos de VYM</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1524"/>
+        <source>About QT</source>
+        <comment>Help action</comment>
+        <translation type="unfinished">À propos de QT</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1552"/>
+        <source>Remove</source>
+        <comment>Context menu name</comment>
+        <translation type="unfinished">Enlever</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1569"/>
+        <source>References (URLs, vymLinks, ...)</source>
+        <comment>Context menu name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1591"/>
+        <source>Edit XLink</source>
+        <comment>Context menu name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1592"/>
+        <source>Follow XLink</source>
+        <comment>Context menu name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1599"/>
+        <source>Save image</source>
+        <comment>Context action</comment>
+        <translation type="unfinished">Sauver l&apos;image</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1645"/>
+        <source>&amp;%1 %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2108"/>
+        <source>Load Freemind map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2202"/>
+        <source>Export as CSV</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2518"/>
+        <source>Sorry, currently only Konqueror and Mozilla support tabbed browsing.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3268"/>
+        <source>Directory with vym macros:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3300"/>
+        <source>QInputDialog::getInteger()</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3281"/>
+        <source>Number of undo/redo levels:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3286"/>
+        <source>Settings have been changed. The next map opened will have &quot;%1&quot; undo/redo levels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3301"/>
+        <source>Number of seconds before autosave:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3411"/>
+        <source>History for %1</source>
+        <comment>Window Caption</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3735"/>
+        <source>Couldn&apos;t find the documentation %1 in:
+%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3771"/>
+        <source>Load vym example map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3820"/>
+        <source>Couldn&apos;t find a macro at  %1.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3821"/>
+        <source>Set directory for vym macros</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>MapEditor</name>
+    <message>
+        <location filename="../mapeditor.cpp" line="1703"/>
+        <source>Critical Parse Error</source>
+        <translation>Erreur critique d&apos;analyse syntaxique</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4136"/>
+        <source>Overwrite</source>
+        <translation>Écraser</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4137"/>
+        <source>Cancel</source>
+        <translation>Annuler</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2129"/>
+        <source>Critical Export Error</source>
+        <translation>Erreur critique d&apos;exportation</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Critical Parse Error by reading backupFile</source>
+        <translation type="obsolete">Erreur critique d&apos;analyse syntaxique en lisant le fichier de sauvegarde</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2432"/>
+        <source>Critical Error</source>
+        <translation>Erreur critique</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3474"/>
+        <source>Enter URL:</source>
+        <translation>Entrer l&apos;URL:</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>vym map</source>
+        <translation type="obsolete">schéma VYM</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4067"/>
+        <source>Images</source>
+        <translation>Images</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>vym - save image as</source>
+        <translation type="obsolete">VYM - Sauver l&apos;image comme</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4314"/>
+        <source>Critical Import Error</source>
+        <translation>Erreur critique d&apos;importation</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>New Map</source>
+        <comment>Heading of mapcenter in new map</comment>
+        <translation type="obsolete">Nouveau schéma</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4130"/>
+        <source>The file %1 exists already.
+Do you want to overwrite it?</source>
+        <translation>Le fichier %1 existe déjà.
+Voulez-vous l&apos;écraser?</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2129"/>
+        <source>MapEditor::exportXML couldn&apos;t open %1</source>
+        <translation>MapEditor::exportXML n&apos;a pas pu ouvrir %1</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Temporary directory %1 used for undo is gone. 
+I will create a new one, but at the moment no undo is available.
+Maybe you want to reload your original data.
+
+Sorry for any inconveniences.</source>
+        <translation type="obsolete">Le répertoire temporaire %1 utilisé pour la fonction &quot;défaire&quot; a disparu.
+Je vais en créer un nouveau, mais pour le moment la fonction &quot;défaire&quot; n&apos;est plus disponible.
+Peut-être voulez-vous recharger vos données originales.
+
+Désolé pour le dérangement.</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4314"/>
+        <source>Cannot find the directory %1</source>
+        <translation>Ne peut ouvrir le répertoire %1</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3579"/>
+        <source>Link to another map</source>
+        <translation>Lien vers un autre schéma</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4072"/>
+        <source>Load image</source>
+        <translation>Charger une image</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Save image as %1</source>
+        <translation type="obsolete">Sauver l&apos;image comme %1</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4362"/>
+        <source>Choose directory structure to import</source>
+        <translation>Choisir la structure de répertoire à importer</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="110"/>
+        <source>unnamed</source>
+        <translation>sans nom</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3324"/>
+        <source>Warning</source>
+        <translation>Avertissement</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Couldn&apos;t find script %1
+to notifiy Browsers of changed bookmarks.</source>
+        <translation type="obsolete">N&apos;a pas pu trouver le script %1
+pour notifier le changement de signets aux navigateurs.</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1795"/>
+        <source>Critical Load Error</source>
+        <translation type="unfinished">Erreur grave de chargement</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1602"/>
+        <source>Couldn&apos;t create temporary directory before load
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1645"/>
+        <source>Couldn&apos;t find a map (*.xml) in .vym archive.
+</source>
+        <translation type="unfinished">Incapable de trouver une carte (*.xml) dans une archive .vym.
+</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1741"/>
+        <source>The map %1
+did not use the compressed vym file format.
+Writing it uncompressed will also write images 
+and flags and thus may overwrite files in the given directory
+
+Do you want to write the map</source>
+        <translation type="unfinished">La carte %1
+n&apos;utilise pas le format compressé de vym.
+Si on l&apos;écrit  non compressée, on va écrire les images et les indicateurs
+et pourra écraser des fichiers dans le répertoire
+Voulez vous écrire la carte </translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1746"/>
+        <source>compressed (vym default)</source>
+        <translation type="unfinished">compressé (défaut VYM)</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1747"/>
+        <source>uncompressed</source>
+        <translation type="unfinished">décompressé</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1782"/>
+        <source>Save Error</source>
+        <translation type="unfinished">Sauver l&apos;erreur</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1778"/>
+        <source>%1
+could not be removed before saving</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1783"/>
+        <source>%1
+could not be renamed before saving</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1796"/>
+        <source>Couldn&apos;t create temporary directory before save
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2033"/>
+        <source>Export map as image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2110"/>
+        <source>Export XML to directory</source>
+        <translation type="unfinished">Exporter le XML vers le répertoire</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2260"/>
+        <source>Autosave disabled during undo.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2426"/>
+        <source>Critical Parse Error while reading %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2432"/>
+        <source>Could not read %1</source>
+        <translation type="unfinished">N&apos;a pas pu lire %1</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3268"/>
+        <source>Load background image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3324"/>
+        <source>Can&apos;t get color of heading,
+there&apos;s no branch selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3489"/>
+        <source>Text</source>
+        <comment>Filedialog</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3490"/>
+        <source>Spreadsheet</source>
+        <comment>Filedialog</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3491"/>
+        <source>Textdocument</source>
+        <comment>Filedialog</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3492"/>
+        <source>Images</source>
+        <comment>Filedialog</comment>
+        <translation type="unfinished">Images</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3495"/>
+        <source>Set URL to a local file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3727"/>
+        <source>%1 items on map
+</source>
+        <comment>Info about map</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4116"/>
+        <source>Save image</source>
+        <translation type="unfinished">Sauver l&apos;image</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="5291"/>
+        <source>The file of the map  on disk has changed:
+
+   %1
+
+Do you want to reload that map with the new file?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="5297"/>
+        <source>Reload</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="5298"/>
+        <source>Ignore</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="../file.cpp" line="439"/>
+        <source>This is not an image.</source>
+        <translation>Ce n&apos;est pas une image.</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="557"/>
+        <source>Critical Export Error</source>
+        <translation>Erreur critique d&apos;exportation</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="352"/>
+        <source>Could not write %1</source>
+        <translation>N&apos;a pas pu écrire %1</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="353"/>
+        <source>Export failed.</source>
+        <translation>L&apos;exportation a échoué.</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="524"/>
+        <source>Check &quot;%1&quot; in
+%2</source>
+        <translation>Vérifier &quot;%1&quot; in
+%2</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="557"/>
+        <source>Could not read %1</source>
+        <translation>N&apos;a pas pu lire %1</translation>
+    </message>
+    <message>
+        <location filename="../xsltproc.cpp" line="82"/>
+        <source>Critical Error</source>
+        <translation>Erreur critique</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="272"/>
+        <source>Couldn&apos;t start zip to compress data.</source>
+        <translation>N&apos;a pas pu lancer zip pour décomprimer les données.</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="282"/>
+        <source>zip didn&apos;t exit normally</source>
+        <translation>zip ne s&apos;est pas terminé normalement</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="316"/>
+        <source>Couldn&apos;t start unzip to decompress data.</source>
+        <translation>N&apos;a pas pu lancer unzip pour décompresser les données.</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="326"/>
+        <source>unzip didn&apos;t exit normally</source>
+        <translation>unzip ne s&apos;est pas terminé normalement</translation>
+    </message>
+    <message>
+        <location filename="../xsltproc.cpp" line="77"/>
+        <source>Could not start %1</source>
+        <translation>N&apos;a pas pu lancer %1</translation>
+    </message>
+    <message>
+        <location filename="../xsltproc.cpp" line="83"/>
+        <source>%1 didn&apos;t exit normally</source>
+        <translation>%1 ne s&apos;est pas terminé normalement</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="77"/>
+        <source>The file %1 exists already.
+Do you want to overwrite it?</source>
+        <translation>Le fichier %1 existe déjà.
+Voulez-vous l&apos;écraser?</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="105"/>
+        <source>Overwrite</source>
+        <translation>Écraser</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="106"/>
+        <source>Cancel</source>
+        <translation>Annuler</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="441"/>
+        <source>Sorry, no preview for
+multiple selected files.</source>
+        <translation>Navré, pas de prévisualisation
+pour plusieurs fichiers sélectionnés.</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="294"/>
+        <source>Exporting the %1 bookmarks will overwrite
+your existing bookmarks file.</source>
+        <translation>Exporter les signets %1 va écraser
+votre fichier de signets existant.</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="295"/>
+        <source>Warning: Overwriting %1 bookmarks</source>
+        <translation>Avertissement: écrasement des signets %1</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="278"/>
+        <source>Warning</source>
+        <translation>Avertissement</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="279"/>
+        <source>Couldn&apos;t find script %1
+to notifiy Browsers of changed bookmarks.</source>
+        <translation>N&apos;a pas pu trouver le script %1
+pour notifier le changement de signets aux navigateurs.</translation>
+    </message>
+    <message>
+        <location filename="../main.cpp" line="192"/>
+        <source>Error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../imports.cpp" line="17"/>
+        <source>Couldn&apos;t access temporary directory
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="131"/>
+        <source>Export as ASCII</source>
+        <translation type="unfinished">Exporter en ASCII</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="131"/>
+        <source>(still experimental)</source>
+        <translation type="unfinished">(toujours expérimental)</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="99"/>
+        <source>The directory %1 is not empty.
+Do you risk to overwrite its contents?</source>
+        <comment>write directory</comment>
+        <translation type="unfinished">Le répertoire %1 n&apos;est pas vide. Vous risquez d&apos;écraser son contenu ?</translation>
+    </message>
+    <message>
+        <location filename="../main.cpp" line="193"/>
+        <source>Couldn&apos;t open %1.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ShowTextDialog</name>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>VYM - Info</source>
+        <translation type="obsolete">VYM - Info</translation>
+    </message>
+    <message>
+        <location filename="../showtextdialog.ui" line="52"/>
+        <source>Close</source>
+        <translation>Fermer</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>History of %1</source>
+        <translation type="obsolete">Historique de %1</translation>
+    </message>
+    <message>
+        <location filename="../showtextdialog.ui" line="16"/>
+        <source>Dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SimpleScriptEditor</name>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="61"/>
+        <source>Save script</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="73"/>
+        <source>The file %1
+exists already.
+Do you want to overwrite it?</source>
+        <comment>dialog &apos;save as&apos;</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="78"/>
+        <source>Overwrite</source>
+        <translation type="unfinished">Écraser</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="79"/>
+        <source>Cancel</source>
+        <translation type="unfinished">Annuler</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="105"/>
+        <source>Load script</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="116"/>
+        <source>Error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="117"/>
+        <source>Couldn&apos;t open %1.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="13"/>
+        <source>Simple Script Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="38"/>
+        <source>Save as</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="48"/>
+        <source>Save</source>
+        <translation type="unfinished">Sauver</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="51"/>
+        <source>Qt::CTRL + Qt::Key_S</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="58"/>
+        <source>Open</source>
+        <translation type="unfinished">Ouvrir</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="61"/>
+        <source>Qt::CTRL +Qt::Key_O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="68"/>
+        <source>Run</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="71"/>
+        <source>Qt::CTRL + Qt::Key_R</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="78"/>
+        <source>Close</source>
+        <translation type="unfinished">Fermer</translation>
+    </message>
+</context>
+<context>
+    <name>TextEditor</name>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;File</source>
+        <translation type="obsolete">&amp;Fichier</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Import</source>
+        <translation type="obsolete">Importer</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="202"/>
+        <source>&amp;Import...</source>
+        <translation>&amp;Importer...</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Export Note (HTML)</source>
+        <translation type="obsolete">Exporter la note (HTML)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="211"/>
+        <source>&amp;Export...</source>
+        <translation>&amp;Exporter...</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Export Note As (HTML) </source>
+        <translation type="obsolete">Exporter la note comme (HTML) </translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="219"/>
+        <source>Export &amp;As... (HTML)</source>
+        <translation>Exporter &amp;comme... (HTML)</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Export Note As (ASCII) </source>
+        <translation type="obsolete">Exporter la note comme (ASCII) </translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="225"/>
+        <source>Export &amp;As...(ASCII)</source>
+        <translation>Exporter &amp;comme... (ASCII)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="675"/>
+        <source>Print Note</source>
+        <translation>Imprimer la note</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="233"/>
+        <source>&amp;Print...</source>
+        <translation>&amp;Imprimer...</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="246"/>
+        <source>&amp;Edit</source>
+        <translation>&amp;Éditer</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Undo</source>
+        <translation type="obsolete">Défaire</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="249"/>
+        <source>&amp;Undo</source>
+        <translation>&amp;Défaire</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Redo</source>
+        <translation type="obsolete">Refaire</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="257"/>
+        <source>&amp;Redo</source>
+        <translation>&amp;Refaire</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Select and copy all</source>
+        <translation type="obsolete">Sélectionner et copier tout</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="266"/>
+        <source>Select and copy &amp;all</source>
+        <translation>Sélectionner et copier &amp;tout</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Copy</source>
+        <translation type="obsolete">Copier</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="273"/>
+        <source>&amp;Copy</source>
+        <translation>&amp;Copier</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Cut</source>
+        <translation type="obsolete">Couper</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="281"/>
+        <source>Cu&amp;t</source>
+        <translation>Cou&amp;per</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Paste</source>
+        <translation type="obsolete">Coller</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="289"/>
+        <source>&amp;Paste</source>
+        <translation>Co&amp;ller</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Delete all</source>
+        <translation type="obsolete">Effacer tout</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="297"/>
+        <source>&amp;Delete All</source>
+        <translation>E&amp;ffacer tout</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Convert paragraphs to linebreaks</source>
+        <translation type="obsolete">Convertir les paragraphes en sauts de ligne</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Convert Paragraphs</source>
+        <translation type="obsolete">&amp;Convertir les paragraphes</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Join all lines of a paragraph</source>
+        <translation type="obsolete">Joindre toutes les lignes d&apos;un paragraphe</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>&amp;Join lines</source>
+        <translation type="obsolete">&amp;Joindre les lignes</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Toggle font hint for the whole text</source>
+        <translation type="obsolete">Basculer l&apos;indicateur de fonte pour tut le document</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="314"/>
+        <source>&amp;Font hint</source>
+        <translation>&amp;Indicateur de fonte</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="347"/>
+        <source>&amp;Color...</source>
+        <translation>&amp;Couleur...</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="353"/>
+        <source>&amp;Bold</source>
+        <translation>&amp;Gras</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="361"/>
+        <source>&amp;Italic</source>
+        <translation>&amp;Italique</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="369"/>
+        <source>&amp;Underline</source>
+        <translation>&amp;Souligner</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="400"/>
+        <source>&amp;Left</source>
+        <translation>&amp;Gauche</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="406"/>
+        <source>C&amp;enter</source>
+        <translation>C&amp;entrer</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="412"/>
+        <source>&amp;Right</source>
+        <translation>&amp;Droite</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="418"/>
+        <source>&amp;Justify</source>
+        <translation>&amp;Justifier</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="428"/>
+        <source>&amp;Settings</source>
+        <translation>&amp;Réglages</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Set fixed font</source>
+        <translation type="obsolete">Mettre une police fixe</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="431"/>
+        <source>Set &amp;fixed font</source>
+        <translation>Mettre une police &amp;fixe</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Set variable font</source>
+        <translation type="obsolete">Mettre une police variable</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="437"/>
+        <source>Set &amp;variable font</source>
+        <translation>Mettre une police &amp;variable</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Used fixed font by default</source>
+        <translation type="obsolete">Utiliser une police fixe par défaut</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="443"/>
+        <source>&amp;fixed font is default</source>
+        <translation>&amp;police fixe par défaut</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="557"/>
+        <source>Export Note to single file</source>
+        <translation>Exporter les notes en un unique fichier</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>The file </source>
+        <translation type="obsolete">Le fichier </translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source> exists already. Do you want to overwrite it?</source>
+        <translation type="obsolete"> existes déjà. Voulez-vous l&apos;écraser?</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="645"/>
+        <source>Overwrite</source>
+        <translation>Écraser</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="646"/>
+        <source>Cancel</source>
+        <translation>Annuler</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>Couldn&apos;t export note </source>
+        <translation type="obsolete">N&apos;a pas pu exporter la note </translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="631"/>
+        <source>Export Note to single file (ASCII)</source>
+        <translation>Exporter les notes en un unique fichier (ASCII)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="380"/>
+        <source>Subs&amp;cript</source>
+        <translation>Indi&amp;ce</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="388"/>
+        <source>Su&amp;perscript</source>
+        <translation>Ex&amp;posant</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="457"/>
+        <source>Note Editor</source>
+        <translation>Éditeur de note</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="310"/>
+        <source>F&amp;ormat</source>
+        <translation>F&amp;ormater</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="38"/>
+        <source>Ready</source>
+        <comment>Statusbar message</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="39"/>
+        <source>Note Editor</source>
+        <comment>Window caption</comment>
+        <translation type="unfinished">Éditeur de note</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="163"/>
+        <source>No filename available for this note.</source>
+        <comment>Statusbar message</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="197"/>
+        <source>Note Actions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="199"/>
+        <source>&amp;Note</source>
+        <comment>Menubar</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="203"/>
+        <source>Import</source>
+        <comment>Status tip for Note menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="212"/>
+        <source>Export Note (HTML)</source>
+        <comment>Status tip for Note menu</comment>
+        <translation type="unfinished">Exporter la note (HTML)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="220"/>
+        <source>Export Note As (HTML) </source>
+        <comment>Status tip for Note Menu</comment>
+        <translation type="unfinished">Exporter la note comme (HTML) </translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="226"/>
+        <source>Export Note As (ASCII) </source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished">Exporter la note comme (ASCII) </translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="234"/>
+        <source>Print Note</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished">Imprimer la note</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="244"/>
+        <source>Edit Actions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="250"/>
+        <source>Undo</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished">Défaire</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="258"/>
+        <source>Redo</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished">Refaire</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="267"/>
+        <source>Select and copy all</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished">Sélectionner et copier tout</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="274"/>
+        <source>Copy</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished">Copier</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="282"/>
+        <source>Cut</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished">Couper</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="290"/>
+        <source>Paste</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished">Coller</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="298"/>
+        <source>Delete all</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished">Effacer tout</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="308"/>
+        <source>Format Actions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="315"/>
+        <source>Toggle font hint for the whole text</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished">Basculer l&apos;indicateur de fonte pour tut le document</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="432"/>
+        <source>Set fixed font</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished">Mettre une police fixe</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="438"/>
+        <source>Set variable font</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished">Mettre une police variable</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="444"/>
+        <source>Used fixed font by default</source>
+        <comment>Status tip for note menu</comment>
+        <translation type="unfinished">Utiliser une police fixe par défaut</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="640"/>
+        <source>The file %1
+exists already.
+Do you want to overwrite it?</source>
+        <comment>dialog &apos;save note as&apos;</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="589"/>
+        <source>Couldn&apos;t export note </source>
+        <comment>dialog &apos;save note as&apos;</comment>
+        <translation type="unfinished">N&apos;a pas pu exporter la note </translation>
+    </message>
+</context>
+<context>
+    <name>WarningDialog</name>
+    <message>
+        <location filename="../warningdialog.ui" line="13"/>
+        <source>VYM - Warning : Foo...</source>
+        <translation>VYM - Avertissement: bla...</translation>
+    </message>
+    <message>
+        <location filename="" line="7471221"/>
+        <source>textLabel</source>
+        <translation type="obsolete">Étiquette de texte
+</translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.ui" line="106"/>
+        <source>showAgainBox</source>
+        <translation>montrer la boite de répétition</translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.cpp" line="11"/>
+        <source>Proceed</source>
+        <translation>Procéder</translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.cpp" line="15"/>
+        <source>Show this message again</source>
+        <translation>Afficher à nouveau ce message</translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.ui" line="132"/>
+        <source>Cancel</source>
+        <translation>Annuler</translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.ui" line="139"/>
+        <source>Ok</source>
+        <translation>OK</translation>
+    </message>
+</context>
+</TS>
diff --git a/lang/vym_it.qm b/lang/vym_it.qm
new file mode 100644 (file)
index 0000000..9b03dea
Binary files /dev/null and b/lang/vym_it.qm differ
diff --git a/lang/vym_it.ts b/lang/vym_it.ts
new file mode 100644 (file)
index 0000000..c02ebc3
--- /dev/null
@@ -0,0 +1,4493 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS><TS version="1.1" language="it">
+<context>
+    <name>AboutDialog</name>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Ok</source>
+        <translation type="obsolete">Ok</translation>
+    </message>
+    <message>
+        <location filename="../aboutdialog.cpp" line="205"/>
+        <source>Ok</source>
+        <comment>Ok Button</comment>
+        <translation>Ok</translation>
+    </message>
+</context>
+<context>
+    <name>AboutTextBrowser</name>
+    <message>
+        <location filename="../aboutdialog.cpp" line="228"/>
+        <source>Please use Settings-&gt;</source>
+        <translation>Usare le Impostazioni</translation>
+    </message>
+    <message>
+        <location filename="../aboutdialog.cpp" line="228"/>
+        <source>Set application to open an URL</source>
+        <translation>Impostare un applicazione per aprire gli URL</translation>
+    </message>
+    <message>
+        <location filename="../aboutdialog.cpp" line="226"/>
+        <source>Warning</source>
+        <comment>About window</comment>
+        <translation>Allarme</translation>
+    </message>
+    <message>
+        <location filename="../aboutdialog.cpp" line="227"/>
+        <source>Couldn&apos;t find a viewer to open %1.
+</source>
+        <comment>About window</comment>
+        <translation>Non è possibile trovare un applicazione per aprire %1.</translation>
+    </message>
+</context>
+<context>
+    <name>Attribute Dialog</name>
+    <message>
+        <location filename="../attributedialog.cpp" line="74"/>
+        <source>AttributeDialog - Edit definitions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../attributedialog.cpp" line="76"/>
+        <source>AttributeDialog - Edit %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>AttributeDialog</name>
+    <message>
+        <location filename="../attributedialog.cpp" line="48"/>
+        <source>Attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../attributedialog.cpp" line="49"/>
+        <source>Add key</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../attributedialog.cpp" line="50"/>
+        <source>Close</source>
+        <translation type="unfinished">Chiudi</translation>
+    </message>
+</context>
+<context>
+    <name>AttributeWidget</name>
+    <message>
+        <location filename="../attributewidget.ui" line="13"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>BranchPropertyWindow</name>
+    <message>
+        <location filename="../branchpropwindow.cpp" line="16"/>
+        <source>Property Editor</source>
+        <comment>Window caption</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.cpp" line="32"/>
+        <source>Name</source>
+        <comment>Branchprop window: Attribute name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.cpp" line="33"/>
+        <source>Value</source>
+        <comment>Branchprop window: Attribute value</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.cpp" line="34"/>
+        <source>Type</source>
+        <comment>Branchprop window: Attribute type</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="19"/>
+        <source>Branch Property Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="29"/>
+        <source>Frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="50"/>
+        <source>Geometry</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="63"/>
+        <source>No Frame</source>
+        <translation type="unfinished">Senza Frame</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="68"/>
+        <source>Rectangle</source>
+        <translation type="unfinished">Rettangolo</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="73"/>
+        <source>Ellipse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="94"/>
+        <source>Padding</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="101"/>
+        <source>Borderline width</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="151"/>
+        <source>Colors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="194"/>
+        <source>Borderline color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="217"/>
+        <source>Background color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="246"/>
+        <source>Layout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="254"/>
+        <source>Include images horizontally</source>
+        <translation type="unfinished">Includi immagini orizzontalmente</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="261"/>
+        <source>Include images vertically</source>
+        <translation type="unfinished">Includi immagini verticalmente</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="284"/>
+        <source>Link</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="290"/>
+        <source>Hide link if unselected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="311"/>
+        <source>Attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="337"/>
+        <source>+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="344"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="413"/>
+        <source>Close</source>
+        <translation type="unfinished">Chiudi</translation>
+    </message>
+</context>
+<context>
+    <name>EditXLinkDialog</name>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="24"/>
+        <source>Edit XLink</source>
+        <translation>Edita lo XLink</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="62"/>
+        <source>XLink width:</source>
+        <translation>spessore XLink:</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="78"/>
+        <source>Set color of heading</source>
+        <translation>Cambia colore del titolo</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="108"/>
+        <source>XLink color:</source>
+        <translation>colore del XLink:</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="150"/>
+        <source>Use as default:</source>
+        <translation>Usa come predefinito:</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Delete XLink</source>
+        <translation type="obsolete">Elimina XLink</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="225"/>
+        <source>Ok</source>
+        <translation>Ok</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="202"/>
+        <source>Quit and delete XLink</source>
+        <translation>Esci e cancella lo Xlink</translation>
+    </message>
+</context>
+<context>
+    <name>ExportHTMLDialog</name>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Export HTML</source>
+        <translation type="obsolete">Esporta in HTML</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Directory:</source>
+        <translation type="obsolete">Cartella:</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Browse</source>
+        <translation type="obsolete">Naviga</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Options</source>
+        <translation type="obsolete">Opzioni</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Include image of map</source>
+        <translation type="obsolete">Includi l&apos;immagine della mappa</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>create image only</source>
+        <translation type="obsolete">crea solo immagini</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>use WIKI style</source>
+        <translation type="obsolete">usa lo stile WIKI</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>use heading for URLs (instead of link target)</source>
+        <translation type="obsolete">usa titoli per gli URL (al posto dei link target)</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>use image of earth to mark URLs in text</source>
+        <translation type="obsolete">usa l&apos;immagine del globo terrestre per distinguere gli URL nel testo</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>use default CSS file</source>
+        <translation type="obsolete">usa il file CSS predefinito</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>show output of external scripts</source>
+        <translation type="obsolete">mostra l&apos;output degli script esterni</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Export</source>
+        <translation type="obsolete">Esporta</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Cancel</source>
+        <translation type="obsolete">Cancella</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>VYM - Export HTML to directory</source>
+        <translation type="obsolete">VYM - Esporta l&apos;HTML nella cartella</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Critcal export error</source>
+        <translation type="obsolete">Errore critico nell&apos;esportazione</translation>
+    </message>
+</context>
+<context>
+    <name>ExportXHTMLDialog</name>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="19"/>
+        <source>Export XHTML</source>
+        <translation>Esporta in XHTML</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="48"/>
+        <source>Export to directory:</source>
+        <translation>Esporta nella cartella:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="455"/>
+        <source>Browse</source>
+        <translation>Naviga</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="92"/>
+        <source>Options</source>
+        <translation>Opzioni</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="144"/>
+        <source>Include image</source>
+        <translation>Includi immagine</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="151"/>
+        <source>Colored headings in text</source>
+        <translation>Colori i titoli nel testo</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="158"/>
+        <source>Save settings in map</source>
+        <translation>Salva le impostazioni della mappa</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>showWarnings e.g. if directory is not empty</source>
+        <translation type="obsolete">mostra i Warning es. se la cartella non è vuota</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="113"/>
+        <source>show output of external scripts</source>
+        <translation>mostra l&apos;output degli script esterni</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="289"/>
+        <source>CSS:</source>
+        <translation>CSS:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="232"/>
+        <source>XSL:</source>
+        <translation>XSL:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="376"/>
+        <source>Before export:</source>
+        <translation>Prima di esportare:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="436"/>
+        <source>After Export:</source>
+        <translation>Dopo l&apos;esportazione:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="508"/>
+        <source>Export</source>
+        <translation>Esporta</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="501"/>
+        <source>Cancel</source>
+        <translation>Cancella</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="335"/>
+        <source>Warning</source>
+        <translation>Attenzione</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>The settings saved in the map would like to run scripts:
+
+</source>
+        <translation type="obsolete">Le impostazioni salvate nella mappa chiedono di eseguire degli script:
+
+</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Please check, if you really
+want to allow this in your system!</source>
+        <translation type="obsolete">Per favore, ricontrollare se davvero si 
+vuol permettere l&apos;azione sul proprio sistema! </translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="140"/>
+        <source>VYM - Export HTML to directory</source>
+        <translation>VYM - Esporta HTML in cartella </translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>VYM - Path to CSS file</source>
+        <translation type="obsolete">VYM - Percorso del file CSS</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>VYM - Path to XSL file</source>
+        <translation type="obsolete">VYM - Percorso del file XSL</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>VYM - Path to pre export script</source>
+        <translation type="obsolete">VYM - Percorso dello script di pre esportazione</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>VYM - Path to post export script</source>
+        <translation type="obsolete">VYM - Percorso dello script di post esportazione</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source> could not be opened!</source>
+        <translation type="obsolete"> non può essere aperto!</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="405"/>
+        <source>Critical Error</source>
+        <translation>Errore Critico</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Couldn&apos;t start </source>
+        <translation type="obsolete"> Non è possibile iniziare</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>didn&apos;t exit normally</source>
+        <translation type="obsolete">non è finito normalmente</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Stylesheets:</source>
+        <translation type="obsolete">Fogli di stile:</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Scripts:</source>
+        <translation type="obsolete">Script:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="176"/>
+        <source>Stylesheets</source>
+        <translation>Foglio di Stile</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="320"/>
+        <source>Scripts</source>
+        <translation>Script</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="119"/>
+        <source>The settings saved in the map would like to run scripts:
+
+%1
+
+Please check, if you really
+want to allow this in your system!</source>
+        <translation>Le impostazioni salvate chiedono di eseguire degli script:
+
+%1
+
+Controllare, se veramente volete 
+permettere questo sul vostro sistema!</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="335"/>
+        <source>Could not open %1</source>
+        <translation>Non è possibile %1</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="320"/>
+        <source>Could not write %1</source>
+        <translation>Non è possibile scrivere %1</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="401"/>
+        <source>Could not start %1</source>
+        <translation>Non è possibile iniziare %1</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="406"/>
+        <source>%1 didn&apos;t exit normally</source>
+        <translation>%1 non è terminato normalmente</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="165"/>
+        <source>show warnings of xslt processor</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ExtraInfoDialog</name>
+    <message>
+        <location filename="../extrainfodialog.ui" line="16"/>
+        <source>VYM - Info</source>
+        <translation>VIM - Info</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="28"/>
+        <source>Map:</source>
+        <translation>Mappa:</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="42"/>
+        <source>Author:</source>
+        <translation>Autore:</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="52"/>
+        <source>Comment:</source>
+        <translation>Commenti:</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="77"/>
+        <source>Statistics:</source>
+        <translation>Statistiche:</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="129"/>
+        <source>Cancel</source>
+        <translation>Cancella</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="136"/>
+        <source>Close</source>
+        <translation>Chiudi</translation>
+    </message>
+</context>
+<context>
+    <name>FindWindow</name>
+    <message>
+        <location filename="../findwindow.cpp" line="40"/>
+        <source>Clear</source>
+        <translation>Pulisci</translation>
+    </message>
+    <message>
+        <location filename="../findwindow.cpp" line="45"/>
+        <source>Cancel</source>
+        <translation>Cancella</translation>
+    </message>
+    <message>
+        <location filename="../findwindow.cpp" line="51"/>
+        <source>Find</source>
+        <translation>Trova</translation>
+    </message>
+    <message>
+        <location filename="../findwindow.cpp" line="14"/>
+        <source>Find Text</source>
+        <translation>Trova Testo</translation>
+    </message>
+    <message>
+        <location filename="../findwindow.cpp" line="21"/>
+        <source>Text to find:</source>
+        <translation>Testo da Trovare:</translation>
+    </message>
+</context>
+<context>
+    <name>Heading of mapcenter in new map</name>
+    <message>
+        <location filename="../vymmodel.cpp" line="105"/>
+        <source>New map</source>
+        <translation type="unfinished">Nuova Mappa</translation>
+    </message>
+</context>
+<context>
+    <name>HistoryWindow</name>
+    <message>
+        <location filename="../historywindow.ui" line="13"/>
+        <source>Dialog</source>
+        <translation>Finestra di Dialogo</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="50"/>
+        <source>Redo</source>
+        <translation>Rifai</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>New Row</source>
+        <translation type="obsolete">Nuova Riga</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="72"/>
+        <source>Time</source>
+        <translation>Tempo</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="77"/>
+        <source>Comment</source>
+        <translation>Commenti</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="85"/>
+        <source>Undo</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="122"/>
+        <source>Close</source>
+        <translation>Chiudi</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.cpp" line="18"/>
+        <source>Action</source>
+        <comment>Table with actions</comment>
+        <translation>Azioni</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.cpp" line="21"/>
+        <source>Comment</source>
+        <comment>Table with actions</comment>
+        <translation>Commenti</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.cpp" line="24"/>
+        <source>Undo action</source>
+        <comment>Table with actions</comment>
+        <translation>Cancella azione</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.cpp" line="126"/>
+        <source>Current state</source>
+        <comment>Current bar in history hwindow</comment>
+        <translation>Stato corrente</translation>
+    </message>
+</context>
+<context>
+    <name>Main</name>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>&amp;File</source>
+        <translation type="obsolete">&amp;File</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>New map</source>
+        <comment>File menu</comment>
+        <translation type="obsolete">Nuova Mappa</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>&amp;New...</source>
+        <translation type="obsolete">&amp;Nuovo...</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Open</source>
+        <comment>File menu</comment>
+        <translation type="obsolete">Apri</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>&amp;Open...</source>
+        <translation type="obsolete">&amp;Apri...</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Open Recent</source>
+        <translation type="obsolete">Apri Recente</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Save</source>
+        <translation type="obsolete">Salva</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>&amp;Save...</source>
+        <translation type="obsolete">&amp;Salva...</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Save &amp;As</source>
+        <translation type="obsolete">Salva &amp;Con nome</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Save &amp;As...</source>
+        <translation type="obsolete">Salva &amp;Con nome...</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Import directory structure (experimental)</source>
+        <translation type="obsolete">Importare la struttura di una cartella (sperimentale)</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Import Dir</source>
+        <translation type="obsolete">Importa Cartella</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Export</source>
+        <translation type="obsolete">Esporta</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Print</source>
+        <translation type="obsolete">Stampa</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>&amp;Print...</source>
+        <translation type="obsolete">S&amp;tampa...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="429"/>
+        <source>Close Map</source>
+        <translation>Chiudi Mappa</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>&amp;Close Map</source>
+        <translation type="obsolete">C&amp;hiudi Mappa</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Exit VYM</source>
+        <translation type="obsolete">Esci da VYM</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>E&amp;xit VYM</source>
+        <translation type="obsolete">&amp;Esci da VYM</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>&amp;Edit</source>
+        <translation type="obsolete">&amp;Modifica</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="454"/>
+        <source>Undo</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>&amp;Undo</source>
+        <translation type="obsolete">Annu&amp;lla</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="471"/>
+        <source>Copy</source>
+        <translation>Copia</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>&amp;Copy</source>
+        <translation type="obsolete">Co&amp;pia</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="480"/>
+        <source>Cut</source>
+        <translation>Taglia</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Cu&amp;t</source>
+        <translation type="obsolete">Ta&amp;glia</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="490"/>
+        <source>Paste</source>
+        <translation>Incolla</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>&amp;Paste</source>
+        <translation type="obsolete">&amp;Incolla</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="614"/>
+        <source>Move branch up</source>
+        <translation>Vai al ramo superiore</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Move up</source>
+        <translation type="obsolete">Vai sopra</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="624"/>
+        <source>Move branch down</source>
+        <translation>Vai al ramo inferiore</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Move down</source>
+        <translation type="obsolete">Vai giù</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="645"/>
+        <source>Scroll branch</source>
+        <translation>Nascondi/Mostra ramificazione</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Unscroll all</source>
+        <translation type="obsolete">Mostra tutti i rami</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Unscroll all scrolled branches</source>
+        <translation type="obsolete">Mostra tutti i rami nascosti</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="669"/>
+        <source>Find</source>
+        <translation>Cerca</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="678"/>
+        <source>Open URL</source>
+        <translation>Apri URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="699"/>
+        <source>Edit URL</source>
+        <translation>Modifica URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="717"/>
+        <source>Use heading of selected branch as URL</source>
+        <translation>Usa i titoli dei rami selezionati come URL</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Use heading for URL</source>
+        <translation type="obsolete">Usa titoli per gli URL</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Create URL to Bugzilla</source>
+        <translation type="obsolete">Crea URL a Bugzilla</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="738"/>
+        <source>Jump to another vym map, if needed load it first</source>
+        <translation>Salta ad un&apos;altra mappa vym, se necessario caricala prima</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Jump to map</source>
+        <translation type="obsolete">Salta ad una mappa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="754"/>
+        <source>Edit link to another vym map</source>
+        <translation>Edita link a un&apos;altra mappa</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Edit vym link</source>
+        <translation type="obsolete">Edita un link vym</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="760"/>
+        <source>Delete link to another vym map</source>
+        <translation>Cancella il link ad un&apos;altra mappa vym</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Delete vym link</source>
+        <translation type="obsolete">Cancella link vym</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="775"/>
+        <source>Edit Map Info</source>
+        <translation>Edita Info della Mappa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="515"/>
+        <source>edit Heading</source>
+        <translation>edita Titolo</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Edit heading</source>
+        <translation type="obsolete">Edita Titolo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="524"/>
+        <source>Delete Selection</source>
+        <translation>Cancella la Selezione</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="545"/>
+        <source>Add a branch as child of selection</source>
+        <translation>Aggiungi un ramo come figlio della selezione</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Add branch as child</source>
+        <translation type="obsolete">Aggiungi ramo come figlio</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="588"/>
+        <source>Add a branch above selection</source>
+        <translation>Aggiungi un ramo sopra la selzione</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Add branch above</source>
+        <translation type="obsolete">Aggiungi ramo sopra</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="606"/>
+        <source>Add a branch below selection</source>
+        <translation>Aggiungi ramo sotto la selezione</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Add branch below</source>
+        <translation type="obsolete">Aggiungi ramo sotto</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="782"/>
+        <source>Add map at selection</source>
+        <translation>Aggiungi mappa alla selezione</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Import (add)</source>
+        <translation type="obsolete">Importa (aggiungi)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="790"/>
+        <source>Replace selection with map</source>
+        <translation>Rimpiazza la selezione con una mappa</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Import (replace)</source>
+        <translation type="obsolete">Importa (rimpiazza)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="798"/>
+        <source>Save selection</source>
+        <translation>Salva selezione</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="825"/>
+        <source>Select upper branch</source>
+        <translation>Seleziona il ramo superiore</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="831"/>
+        <source>Select lower branch</source>
+        <translation>Seleziona il ramo inferiore</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="837"/>
+        <source>Select left branch</source>
+        <translation>Seleziona il ramo sinistro</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="843"/>
+        <source>Select right branch</source>
+        <translation>Seleziona il ramo destro</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Select child branch</source>
+        <translation type="obsolete">Seleziona il ramo figlio</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="849"/>
+        <source>Select first branch</source>
+        <translation>Seleziona il primo ramo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="859"/>
+        <source>Select last branch</source>
+        <translation>Seleziona l&apos;ultimo ramo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="870"/>
+        <source>Add Image</source>
+        <translation>Aggiungi Immagine</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>&amp;Format</source>
+        <translation type="obsolete">&amp;Formato</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="895"/>
+        <source>Set Color</source>
+        <translation>Scegli Colore</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="894"/>
+        <source>Set &amp;Color</source>
+        <translation>Scegli C&amp;olore</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="901"/>
+        <source>Pick color
+Hint: You can pick a color from another branch and color using CTRL+Left Button</source>
+        <translation>Prendi colore
+Consiglio: Puoi prendere il colore di un altro ramo usando CTRL+Tasto Sinistro</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Pic&amp;k color</source>
+        <translation type="obsolete">P&amp;rendi colore</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="911"/>
+        <source>Color branch</source>
+        <translation>Colore del ramo</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Color &amp;branch</source>
+        <translation type="obsolete">Colore &amp;del ramo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="921"/>
+        <source>Color Subtree</source>
+        <translation>Colore del sottoalbero</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Color sub&amp;tree</source>
+        <translation type="obsolete">Colore del so&amp;ttoalbero</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="940"/>
+        <source>Line</source>
+        <translation>Linea</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="933"/>
+        <source>Linkstyle Line</source>
+        <translation>Collegamenti Lineari</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Linkstyle Parabel</source>
+        <translation type="obsolete">Collegamenti Parabolici</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="946"/>
+        <source>PolyLine</source>
+        <translation>PoliLinee</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="945"/>
+        <source>Linkstyle Thick Line</source>
+        <translation>Collegamento Linea Spessa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="952"/>
+        <source>PolyParabel</source>
+        <translation>PoliParabole</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Linkstyle Thick Parabel</source>
+        <translation type="obsolete">Collegamento Parabola spessa</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>No Frame</source>
+        <translation type="obsolete">Senza Frame</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Rectangle</source>
+        <translation type="obsolete">Rettangolo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="967"/>
+        <source>Use same color for links and headings</source>
+        <translation>Usa lo stesso colore per titoli e collegamenti</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>&amp;Use color of heading for link</source>
+        <translation type="obsolete">&amp;Usa colore dei titoli per i collegamenti</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="975"/>
+        <source>Set Link Color</source>
+        <translation>Specifica Colore dei collegamenti</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="974"/>
+        <source>Set &amp;Link Color</source>
+        <translation type="unfinished">Specifica Co&amp;lore dei Collegamenti</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="987"/>
+        <source>Set Background Color</source>
+        <translation>Specifica colore di Sfondo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="986"/>
+        <source>Set &amp;Background Color</source>
+        <translation>Specifica Colore di S&amp;fondo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1005"/>
+        <source>&amp;View</source>
+        <translation>&amp;Vedi</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1009"/>
+        <source>Zoom reset</source>
+        <translation>Zoom reset</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>reset Zoom</source>
+        <translation type="obsolete">reset Zoom</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1016"/>
+        <source>Zoom in</source>
+        <translation>Zoom dentro</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1023"/>
+        <source>Zoom out</source>
+        <translation>Zoom fuori</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Toggle Note Editor</source>
+        <translation type="obsolete">Mostra l&apos;Editor di Note</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>&amp;Next Window</source>
+        <translation type="obsolete">&amp;Prossima Finestra</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Next Window</source>
+        <translation type="obsolete">Prossima Finestra</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>&amp;Previous Window</source>
+        <translation type="obsolete">Finestra &amp;Precedente</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Previous Window</source>
+        <translation type="obsolete">Finestra Precedente</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Modes when using modifiers</source>
+        <translation type="obsolete">Metodi nell&apos;uso dei modifier</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1102"/>
+        <source>Use modifier to color branches</source>
+        <translation>Usa i modifier per colorare i rami</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1376"/>
+        <source>&amp;Settings</source>
+        <translation>&amp;Preferenze</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1381"/>
+        <source>Set application to open pdf files</source>
+        <translation>Scegli il programma per aprire i file pdf</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3253"/>
+        <source>Set application to open an URL</source>
+        <translation>Scegli l&apos;applicazione per aprire gli URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1427"/>
+        <source>Edit branch after adding it</source>
+        <translation>Edita il ramo dopo averlo aggiunto</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1434"/>
+        <source>Select branch after adding it</source>
+        <translation>Seleziona il ramo dopo averlo aggiunto</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1441"/>
+        <source>Select heading before editing</source>
+        <translation>Seleziona il titolo prima di editarlo</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Select existing heading</source>
+        <translation type="obsolete">Seleziona il titolo esistente</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Enable pasting into new branch</source>
+        <translation type="obsolete">Abilita incolla nei nuovi rami</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Enable Delete key for deleting branches</source>
+        <translation type="obsolete">Abilita tasto Cancella per cancellare i rami</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Enable Delete key</source>
+        <translation type="obsolete">Abilita il tasto Cancella</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1484"/>
+        <source>&amp;Test</source>
+        <translation>&amp;Test</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Test Flag</source>
+        <translation type="obsolete">Test Flag</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>test flag</source>
+        <translation type="obsolete">test flag</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Show Clipboard</source>
+        <translation type="obsolete">Mostra Clipboard</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Show clipboard</source>
+        <translation type="obsolete">Mostra clipboard</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>&amp;Help</source>
+        <translation type="obsolete">&amp;Aiuto</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1510"/>
+        <source>Open VYM Documentation (pdf)</source>
+        <translation>Apri la documentazione di VYM (pdf)</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Open VYM Documentation (pdf) </source>
+        <translation type="obsolete"> Apri la documentazione di VYM (pdf)</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Information about VYM</source>
+        <translation type="obsolete">Informazioni riguardo VYM </translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1520"/>
+        <source>About VYM</source>
+        <translation>A proposito di VYM</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1525"/>
+        <source>Information about QT toolkit</source>
+        <translation>Informazioni riguardo le QT toolkit</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>About QT</source>
+        <translation type="obsolete">Riguardo le QT</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Save image</source>
+        <translation type="obsolete">Salva immagine</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Use for Export</source>
+        <translation type="obsolete">Usa per Esportare</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Export map as image</source>
+        <translation type="obsolete">Esporta mappa come immagine</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Export as ASCII (still experimental)</source>
+        <translation type="obsolete">Esporta come ASCI (in via di sperimentazione)</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Export (ASCII)</source>
+        <translation type="obsolete">Esporta (ASCII)</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Export XML</source>
+        <translation type="obsolete">Esporta in XML</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Export HTML</source>
+        <translation type="obsolete">Esporta in HTML</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Export XHTML</source>
+        <translation type="obsolete">Esporta in XHTML</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>The directory </source>
+        <translation type="obsolete"> La cartella</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source> is not empty. Do you risk to overwrite its contents?</source>
+        <translation type="obsolete"> non è vuota. Vuoi rischiare sovvrascrivendone il contenuto?</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2017"/>
+        <source>Overwrite</source>
+        <translation>Sovvrascrivi</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2018"/>
+        <source>Cancel</source>
+        <translation>Cancella</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>The map </source>
+        <translation type="obsolete"> La mappa</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>
+ is already opened.Opening the same map in multiple editors may lead 
+to confusion when finishing working with vym.Do you want to</source>
+        <translation type="obsolete">
+è già aperta. Aprire la stessa mappa in più editor può portare
+in confusione quando si finisce di lavorare con vym. Vuoi </translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1783"/>
+        <source>Open anyway</source>
+        <translation>Aprire lo stesso</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1831"/>
+        <source>Create</source>
+        <translation>Crea</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Critical Load Error</source>
+        <translation type="obsolete">Errore Critico di Caricamento</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Couldn&apos;t start unzip to decompress data.</source>
+        <translation type="obsolete">Non è possibile iniziare l&apos;unzip per la decompressione dei dati.</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>unzip didn&apos;t exit normally</source>
+        <translation type="obsolete">unzip non è finito normalmente</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Couldn&apos;t find a map (*.xml) in .vym archive.
+</source>
+        <translation type="obsolete">Non è possibile trovare una mappa (*.xml) nell&apos;archivio .vym.
+</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1907"/>
+        <source>Load vym map</source>
+        <translation>Carica una mappa vym</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1910"/>
+        <source>Import: Add vym map to selection</source>
+        <translation>Importa: Aggiungi una mappa vym alla selezione</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1913"/>
+        <source>Import: Replace selection with vym map</source>
+        <translation>Importa: Rimpiazza la selezione con una mappa vym</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Save Error</source>
+        <translation type="obsolete">Errore di Salvataggio</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>
+could not be removed before saving</source>
+        <translation type="obsolete">
+non può essere rimosso prima del salvataggio</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>
+did not use the compressed vym file format.
+Writing it uncompressed will also write images 
+and flags and thus may overwrite files in the given directory
+
+Do you want to write the map</source>
+        <translation type="obsolete">
+non usa un formato di file compresso vym.
+ Scrivendolo non compresso, può anche scrivere le immagini
+e i flag e pertanto può sovvrascrivere i file nella cartella data
+
+Vuoi scrivere la mappa </translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>compressed (vym default)</source>
+        <translation type="obsolete">compresso (predefinito in vym)</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>uncompressed</source>
+        <translation type="obsolete">non compresso</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Critical Save Error</source>
+        <translation type="obsolete">Errore Critico di Salvataggio</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Couldn&apos;t start zip to compress data.</source>
+        <translation type="obsolete">Non è possibile iniziare lo zip per la decompressione dei dati.</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>zip didn&apos;t exit normally</source>
+        <translation type="obsolete">lo zip non è finito normalmente</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Saved</source>
+        <translation type="obsolete">Salvato</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Couldn&apos;t save</source>
+        <translation type="obsolete">Non è possibile salvare</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>The file </source>
+        <translation type="obsolete"> Il file</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>
+exists already. Do you want to</source>
+        <translation type="obsolete">
+esiste già. Vuoi</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Export XML to directory</source>
+        <translation type="obsolete">Esporta XML in una cartella</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source> has been modified but not saved yet. Do you want to</source>
+        <translation type="obsolete"> è stato modificato ma non ancora salvato. Vuoi</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2306"/>
+        <source>Save modified map before closing it</source>
+        <translation>Salvare la mappa modificata prima di chiudere</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2357"/>
+        <source>Discard changes</source>
+        <translation>Tralascia le modifiche</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2351"/>
+        <source>This map is not saved yet. Do you want to</source>
+        <translation>Questa mapp è stata modificata ma non ancora salvata. Vuoi</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2356"/>
+        <source>Save map</source>
+        <translation>Salvare la mappa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3285"/>
+        <source>VYM -Information:</source>
+        <translation>VIM - Informazioni:</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>No matches found for </source>
+        <translation type="obsolete"> Nessuna corrispondenza trovata per </translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2790"/>
+        <source>Critical Error</source>
+        <translation>Errore Critico</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Enter path for pdf reader:</source>
+        <translation type="obsolete">Seleziona il percorso del lettore pdf:</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Enter path for application to open an URL:</source>
+        <translation type="obsolete">Seleziona il percorso dell&apos;aplicazione per aprire gli URL:</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3734"/>
+        <source>Critcal error</source>
+        <translation>Errore Critico</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Couldn&apos;t find the documentation
+vym.pdf in various places.</source>
+        <translation type="obsolete">Non è possibile trovare la documentazione
+vym.pdf in ognidove.</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Couldn&apos;t find a viewer to read vym.pdf.
+Please use Settings-&gt;</source>
+        <translation type="obsolete">Non è possibile trovare un lettore per il file vym.pdf
+Per favore usare Preferenze-&gt;</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="570"/>
+        <source>Add a branch by inserting and making selection its child</source>
+        <translation>Aggiungere un ramo inserendo e selezionando il figlio</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Add branch (insert)</source>
+        <translation type="obsolete">Aggiungi ramo (inserisci)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="806"/>
+        <source>Remove only branch and keep its childs</source>
+        <translation>Rimuovi solo il ramo e mantieni i figli</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Remove only branch </source>
+        <translation type="obsolete"> Rimuovi solo il ramo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="816"/>
+        <source>Remove childs of branch</source>
+        <translation>Rimuovi i figli del ramo</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Remove childs</source>
+        <translation type="obsolete">Rimuovi i figli</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1110"/>
+        <source>Use modifier to copy</source>
+        <translation>Usa i modifier per copiare</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1541"/>
+        <source>Add</source>
+        <translation>Aggiungi</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Remove</source>
+        <translation type="obsolete">Rimuovi</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Edit XLink</source>
+        <translation type="obsolete">Edita il XLink</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Goto XLink</source>
+        <translation type="obsolete">Vai al XLink</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>This map does not exist:
+  </source>
+        <translation type="obsolete">Questa mappa non esite:
+  </translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>
+Do you want to create a new one?</source>
+        <translation type="obsolete">
+Vuoi crearne una nuova?</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1117"/>
+        <source>Use modifier to draw xLinks</source>
+        <translation>Usa i modifier per disegnare XLink</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1456"/>
+        <source>Use exclusive flags in flag toolbars</source>
+        <translation>Usa solo i flag esclusivi nel flag toolbars</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Enable exclusive flags</source>
+        <translation type="obsolete">Abilita i flag esclusivi</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2139"/>
+        <source>Import</source>
+        <translation>Importa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="399"/>
+        <source>KDE Bookmarks</source>
+        <translation>Segnalibri di KDE</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="420"/>
+        <source>&amp;Print</source>
+        <translation>&amp;Stampa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="435"/>
+        <source>Exit</source>
+        <translation>Esci</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="462"/>
+        <source>Redo</source>
+        <translation>Rifai</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>&amp;Redo</source>
+        <translation type="obsolete">&amp;Rifai</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Create URL to FATE</source>
+        <translation type="obsolete">Crea URL a FATE</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="766"/>
+        <source>Hide object in exports</source>
+        <translation>Nascondi oggetto nell&apos;esportazione</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Include top and bottom position of images into branch</source>
+        <translation type="obsolete">Includi le posizioni sopra e sotto delle immagini nel ramo</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Include left and right position of images into branch</source>
+        <translation type="obsolete">InIncludi le posizioni destra e sinistra delle immagini nel ramo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="960"/>
+        <source>Hide link</source>
+        <translation>Nacondi link</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Note</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Note</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>WWW Document (external)</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Documento WWW (esterno)</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Link to another vym map</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Collega ad un&apos;altra mappa vym</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>subtree is scrolled</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">sottoalbero è espanso</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>subtree is temporary scrolled</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">sottoalbero è temporaneamente espanso</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Hide object in exported maps</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Nascondi oggetto nelle mappe esportate</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1164"/>
+        <source>Take care!</source>
+        <comment>Standardflag</comment>
+        <translation>Fare attenzione!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1168"/>
+        <source>Really?</source>
+        <comment>Standardflag</comment>
+        <translation>Veramente?</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1172"/>
+        <source>ok!</source>
+        <comment>Standardflag</comment>
+        <translation>ok!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1176"/>
+        <source>Not ok!</source>
+        <comment>Standardflag</comment>
+        <translation>Non ok!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1180"/>
+        <source>This won&apos;t work!</source>
+        <comment>Standardflag</comment>
+        <translation>Questo non funzionerà!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1184"/>
+        <source>Good</source>
+        <comment>Standardflag</comment>
+        <translation>Bene</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1188"/>
+        <source>Bad</source>
+        <comment>Standardflag</comment>
+        <translation>Male</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1197"/>
+        <source>Time critical</source>
+        <comment>Standardflag</comment>
+        <translation>In tempo critico</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1203"/>
+        <source>Idea!</source>
+        <comment>Standardflag</comment>
+        <translation>Idea!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1207"/>
+        <source>Important</source>
+        <comment>Standardflag</comment>
+        <translation>Importante</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1211"/>
+        <source>Unimportant</source>
+        <comment>Standardflag</comment>
+        <translation>Non Importante</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1224"/>
+        <source>I like this</source>
+        <comment>Standardflag</comment>
+        <translation>Mi piace</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1228"/>
+        <source>I do not like this</source>
+        <comment>Standardflag</comment>
+        <translation>Non mi piace</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>I just love... </source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete"> Lo amo... </translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1241"/>
+        <source>Dangerous</source>
+        <comment>Standardflag</comment>
+        <translation>Pericoloso</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1249"/>
+        <source>This will help</source>
+        <comment>Standardflag</comment>
+        <translation>Questo aiuta</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1386"/>
+        <source>Set application to open external links</source>
+        <translation>Imposta applicazione per aprire i link esterni</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1448"/>
+        <source>Delete key for deleting branches</source>
+        <translation>Tasto Cancella per cancellare i rami</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1463"/>
+        <source>Use hide flag during exports </source>
+        <translation>Usare i flag nascosti durante l&apos;esportazione </translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2249"/>
+        <source>(still experimental)</source>
+        <translation>(in via di sperimentazione)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1778"/>
+        <source>The map %1
+is already opened.Opening the same map in multiple editors may lead 
+to confusion when finishing working with vym.Do you want to</source>
+        <translation>La mappa %1
+è già aperta. Aprire la stessa mappa in più editor può confondere 
+quando si finisce di lavorare con vym. Si vuole continuare</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1825"/>
+        <source>This map does not exist:
+  %1
+Do you want to create a new one?</source>
+        <translation>Questa mappa non esiste:
+  %1
+Si vuole crearne una nuova?</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>The map %1
+did not use the compressed vym file format.
+Writing it uncompressed will also write images 
+and flags and thus may overwrite files in the given directory
+
+Do you want to write the map</source>
+        <translation type="obsolete">La mappa %1
+non usa il formato di compressione vym.
+Salvandolo in modo non compresso, salva anche le immagini 
+e le flag e quindi potrebbe sovvrascrivere dei file in questa cartella
+Si vuole salvare la mappa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1977"/>
+        <source>Saved  %1</source>
+        <translation>Salvato  %1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1982"/>
+        <source>Couldn&apos;t save </source>
+        <translation>Non si può salvare </translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2012"/>
+        <source>The file %1
+exists already. Do you want to</source>
+        <translation>Il file %1
+è già esistente. Si vuole</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Export as ASCII</source>
+        <translation type="obsolete">Esporta in ASCII</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2221"/>
+        <source>Export as LaTeX</source>
+        <translation>Esporta  in LaTex</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2269"/>
+        <source>Export to</source>
+        <translation>Esporta in</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2301"/>
+        <source>The map %1 has been modified but not saved yet. Do you want to</source>
+        <translation>La mappa %1 è stata modificata ma non salvata. Si vuole</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2791"/>
+        <source>Couldn&apos;t open map %1</source>
+        <translation>Non è possibile aprire la mappa %1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="685"/>
+        <source>Open URL in new tab</source>
+        <translation>Apri l&apos;URL in una nuova scheda</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3819"/>
+        <source>Warning</source>
+        <translation>Attenzione</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3749"/>
+        <source>Couldn&apos;t find a viewer to open %1.
+</source>
+        <translation>Non è possibile trovare un applicazione per aprire %1.
+</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3821"/>
+        <source>Please use Settings-&gt;</source>
+        <translation>Usare le Impostazioni-&gt;</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2498"/>
+        <source>Couldn&apos;t start %1 to open a new tab in %2.</source>
+        <translation>Non è possibile avviare %1 per aprire una nuova scheda in %2.</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3750"/>
+        <source>Set application to open PDF files</source>
+        <translation>Scegli il programma per aprire i file PDF</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1192"/>
+        <source>Oh no!</source>
+        <comment>Standardflag</comment>
+        <translation>Oh no!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1200"/>
+        <source>Call...</source>
+        <comment>Standardflag</comment>
+        <translation>Chiama...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1215"/>
+        <source>Very important!</source>
+        <comment>Standardflag</comment>
+        <translation>Molto Importante!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1219"/>
+        <source>Very unimportant!</source>
+        <comment>Standardflag</comment>
+        <translation>Molto irrilevante!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1232"/>
+        <source>Rose</source>
+        <comment>Standardflag</comment>
+        <translation>Rosa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1238"/>
+        <source>Surprise!</source>
+        <comment>Standardflag</comment>
+        <translation>Sorpresa!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1245"/>
+        <source>Info</source>
+        <comment>Standardflag</comment>
+        <translation>Info</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="350"/>
+        <source>Firefox Bookmarks</source>
+        <translation>Segnalibri di Firefox</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1039"/>
+        <source>Show Note Editor</source>
+        <translation>Mostra editor di Note</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Show history window</source>
+        <translation type="obsolete">Mostra la finestra di Cronologia</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2079"/>
+        <source>Bookmarks</source>
+        <translation>Segnalibri</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2513"/>
+        <source>Couldn&apos;t start %1 to open a new tab</source>
+        <translation>Non è possibile avviare %1 per aprire una nuova scheda</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Modes when using modifiers</source>
+        <comment>Toolbars</comment>
+        <translation type="obsolete">Metodi nell&apos;uso dei modifier</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1154"/>
+        <source>Standard Flags</source>
+        <comment>Standard Flag Toolbar</comment>
+        <translation>Flag standard</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2289"/>
+        <source>Couldn&apos;t find configuration for export to Open Office
+</source>
+        <translation>Non è possibile trovare una configurazione per esportare in Open Office
+</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2431"/>
+        <source>No matches found for &quot;%1&quot;</source>
+        <translation>Nessuna corrispondenza trovata per &quot;%1&quot;</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="297"/>
+        <source>&amp;Map</source>
+        <translation>&amp;Mappa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="692"/>
+        <source>Open all URLs in subtree</source>
+        <translation>Apri tutte le URL in un Sottoramo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="745"/>
+        <source>Open all vym links in subtree</source>
+        <translation>Apri tutti i link vym in un Sottoramo</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Couldn&apos;t create temporary directory before load
+</source>
+        <translation type="obsolete">Non è possibile creare una cartella temporanea prima di caricare</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Couldn&apos;t create temporary directory before save
+</source>
+        <translation type="obsolete">Non è possibile creare una cartella temporanea prima di salvare
+</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2518"/>
+        <source>Sorry, currently only Konqueror and Mozilla support tabbed browsing.</source>
+        <translation>Spiacenti, attualmente solo Konqueror e Mozilla supportano la navigazione con schede.</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>&amp;New...</source>
+        <comment>File menu</comment>
+        <translation type="obsolete">&amp;Nuovo...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="302"/>
+        <source>New map</source>
+        <comment>Status tip File menu</comment>
+        <translation>Nuova Mappa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="315"/>
+        <source>&amp;Open...</source>
+        <comment>File menu</comment>
+        <translation>&amp;Apri...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="316"/>
+        <source>Open</source>
+        <comment>Status tip File menu</comment>
+        <translation>Apri</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="322"/>
+        <source>Open Recent</source>
+        <comment>File menu</comment>
+        <translation>Apri Recente</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="325"/>
+        <source>&amp;Save...</source>
+        <comment>File menu</comment>
+        <translation>&amp;Salva...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="326"/>
+        <source>Save</source>
+        <comment>Status tip file menu</comment>
+        <translation>Salva</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="333"/>
+        <source>Save &amp;As...</source>
+        <comment>File menu</comment>
+        <translation>Salva &amp;Con nome...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="334"/>
+        <source>Save &amp;As</source>
+        <comment>Status tip file menu</comment>
+        <translation>Salva &amp;Con nome</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="340"/>
+        <source>Import</source>
+        <comment>File menu</comment>
+        <translation>Importa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="350"/>
+        <source>Import %1</source>
+        <comment>Status tip file menu</comment>
+        <translation>Importa %1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="343"/>
+        <source>KDE bookmarks</source>
+        <translation>Segnalibri di KDE</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="349"/>
+        <source>Firefox Bookmarks</source>
+        <comment>File menu</comment>
+        <translation>Segnalibri di Firefox</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="361"/>
+        <source>Import %1</source>
+        <comment>status tip file menu</comment>
+        <translation>Importa %1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="365"/>
+        <source>Import Dir%1</source>
+        <comment>File menu</comment>
+        <translation>Importa Cartella%1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="366"/>
+        <source>Import directory structure (experimental)</source>
+        <comment>status tip file menu</comment>
+        <translation>Importare la struttura di una cartella (sperimentale)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="370"/>
+        <source>Export</source>
+        <comment>File menu</comment>
+        <translation>Esporta</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="372"/>
+        <source>Image%1</source>
+        <comment>File export menu</comment>
+        <translation>Immagine%1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="373"/>
+        <source>Export map as image</source>
+        <comment>status tip file menu</comment>
+        <translation>Esporta mappa come immagine</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="378"/>
+        <source>Export in Open Document Format used e.g. in Open Office </source>
+        <comment>status tip file menu</comment>
+        <translation>Esporta in Open Document Format es. in Open Office </translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="384"/>
+        <source>Export as %1</source>
+        <comment>status tip file menu</comment>
+        <translation>Esporta come %1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="384"/>
+        <source> webpage (XHTML)</source>
+        <comment>status tip file menu</comment>
+        <translation> pagina web (XHTML)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="414"/>
+        <source>Export as %1</source>
+        <translation>Esporta come %1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="398"/>
+        <source>KDE Bookmarks</source>
+        <comment>File menu</comment>
+        <translation>Segnalibri di KDE</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="421"/>
+        <source>Print</source>
+        <comment>File menu</comment>
+        <translation>Stampa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="428"/>
+        <source>&amp;Close Map</source>
+        <comment>File menu</comment>
+        <translation>C&amp;hiudi Mappa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="434"/>
+        <source>E&amp;xit</source>
+        <comment>File menu</comment>
+        <translation>&amp;Esci</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="445"/>
+        <source>&amp;Actions toolbar</source>
+        <comment>Toolbar name</comment>
+        <translation>Toolbar delle &amp;Azioni</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="448"/>
+        <source>&amp;Edit</source>
+        <comment>Edit menu</comment>
+        <translation>&amp;Modifica</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="452"/>
+        <source>&amp;Undo</source>
+        <comment>Edit menu</comment>
+        <translation>&amp;Cancella</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="461"/>
+        <source>&amp;Redo</source>
+        <comment>Edit menu</comment>
+        <translation>&amp;Rifai</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="470"/>
+        <source>&amp;Copy</source>
+        <comment>Edit menu</comment>
+        <translation>&amp;Copia</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="479"/>
+        <source>Cu&amp;t</source>
+        <comment>Edit menu</comment>
+        <translation>&amp;Taglia</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="488"/>
+        <source>&amp;Paste</source>
+        <comment>Edit menu</comment>
+        <translation>&amp;Incolla</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="514"/>
+        <source>Edit heading</source>
+        <comment>Edit menu</comment>
+        <translation>Edita Titolo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="523"/>
+        <source>Delete Selection</source>
+        <comment>Edit menu</comment>
+        <translation>Cancella la Selezione</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="544"/>
+        <source>Add branch as child</source>
+        <comment>Edit menu</comment>
+        <translation>Aggiungi ramo come figlio</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="569"/>
+        <source>Add branch (insert)</source>
+        <comment>Edit menu</comment>
+        <translation>Aggiungi ramo (inserisci)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="587"/>
+        <source>Add branch above</source>
+        <comment>Edit menu</comment>
+        <translation>Aggiungi ramo sopra</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="605"/>
+        <source>Add branch below</source>
+        <comment>Edit menu</comment>
+        <translation>Aggiungi ramo sotto</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="613"/>
+        <source>Move up</source>
+        <comment>Edit menu</comment>
+        <translation>Vai sopra</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="622"/>
+        <source>Move down</source>
+        <comment>Edit menu</comment>
+        <translation>Vai giù</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="643"/>
+        <source>Scroll branch</source>
+        <comment>Edit menu</comment>
+        <translation>Nascondi/Mostra ramificazione</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Unscroll all scrolled branches</source>
+        <comment>Edit menu</comment>
+        <translation type="obsolete">Mostra tutti i rami nascosti</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="668"/>
+        <source>Find...</source>
+        <comment>Edit menu</comment>
+        <translation>Trova...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="676"/>
+        <source>Open URL</source>
+        <comment>Edit menu</comment>
+        <translation>Apri URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="684"/>
+        <source>Open URL in new tab</source>
+        <comment>Edit menu</comment>
+        <translation>Apri l&apos;URL in una nuova scheda</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="691"/>
+        <source>Open all URLs in subtree</source>
+        <comment>Edit menu</comment>
+        <translation>Apri tutte le URL in un Sottoramo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="698"/>
+        <source>Edit URL...</source>
+        <comment>Edit menu</comment>
+        <translation>Modifica URL...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="716"/>
+        <source>Use heading for URL</source>
+        <comment>Edit menu</comment>
+        <translation>Usa titoli per gli URL</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Create URL to Bugzilla</source>
+        <comment>Edit menu</comment>
+        <translation type="obsolete">Crea URL a Bugzilla</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Create URL to FATE</source>
+        <comment>Edit menu</comment>
+        <translation type="obsolete">Crea URL a FATE</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="737"/>
+        <source>Open linked map</source>
+        <comment>Edit menu</comment>
+        <translation>Apri una mappa linkata</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="744"/>
+        <source>Open all vym links in subtree</source>
+        <comment>Edit menu</comment>
+        <translation>Apri tutti i link vym in un Sottoramo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="752"/>
+        <source>Edit vym link...</source>
+        <comment>Edit menu</comment>
+        <translation>Edita un link vym...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="759"/>
+        <source>Delete vym link</source>
+        <comment>Edit menu</comment>
+        <translation>Cancella link vym</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="765"/>
+        <source>Hide in exports</source>
+        <comment>Edit menu</comment>
+        <translation>Nascondi nell&apos;esportazione</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="774"/>
+        <source>Edit Map Info...</source>
+        <comment>Edit menu</comment>
+        <translation>Edita le info della Mappa...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="781"/>
+        <source>Add map (insert)</source>
+        <comment>Edit menu</comment>
+        <translation>Aggiungi mappa (inserisci)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="789"/>
+        <source>Add map (replace)</source>
+        <comment>Edit menu</comment>
+        <translation>Aggiungi mappa (rimpiazza)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="797"/>
+        <source>Save selection</source>
+        <comment>Edit menu</comment>
+        <translation>Salva selezione</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="805"/>
+        <source>Remove only branch </source>
+        <comment>Edit menu</comment>
+        <translation> Rimuovi solo il ramo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="815"/>
+        <source>Remove childs</source>
+        <comment>Edit menu</comment>
+        <translation>Rimuovi i figli</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="824"/>
+        <source>Select upper branch</source>
+        <comment>Edit menu</comment>
+        <translation>Seleziona il ramo superiore</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="830"/>
+        <source>Select lower branch</source>
+        <comment>Edit menu</comment>
+        <translation>Seleziona il ramo inferiore</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="836"/>
+        <source>Select left branch</source>
+        <comment>Edit menu</comment>
+        <translation>Seleziona il ramo sinistro</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="842"/>
+        <source>Select child branch</source>
+        <comment>Edit menu</comment>
+        <translation>Seleziona il ramo figlio</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="848"/>
+        <source>Select first branch</source>
+        <comment>Edit menu</comment>
+        <translation>Seleziona il primo ramo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="858"/>
+        <source>Select last branch</source>
+        <comment>Edit menu</comment>
+        <translation>Seleziona l&apos;ultimo ramo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="869"/>
+        <source>Add Image...</source>
+        <comment>Edit menu</comment>
+        <translation>Aggiungi Immagine...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="887"/>
+        <source>F&amp;ormat</source>
+        <comment>Format menu</comment>
+        <translation>F&amp;ormato</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="889"/>
+        <source>Format Actions</source>
+        <comment>Format Toolbar name</comment>
+        <translation>Toolbar delle Formattazioni</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="900"/>
+        <source>Pic&amp;k color</source>
+        <comment>Edit menu</comment>
+        <translation>P&amp;rendi colore</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="910"/>
+        <source>Color &amp;branch</source>
+        <comment>Edit menu</comment>
+        <translation>Colore &amp;del ramo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="920"/>
+        <source>Color sub&amp;tree</source>
+        <comment>Edit menu</comment>
+        <translation>Colore del so&amp;ttoalbero</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>No Frame</source>
+        <comment>Branch attribute</comment>
+        <translation type="obsolete">Senza Frame</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>RectangleBranch attribute</source>
+        <translation type="obsolete">Attributo RamoRettangolare</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Include images vertically</source>
+        <comment>Branch attribute</comment>
+        <translation type="obsolete">Includi immagini verticalmente</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Include images horizontally</source>
+        <comment>Branch attribute</comment>
+        <translation type="obsolete">Includi immagini orizzontalmente</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="959"/>
+        <source>Hide link if object is not selected</source>
+        <comment>Branch attribute</comment>
+        <translation>Nascondi link se gli oggetti non sono selezionati</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="966"/>
+        <source>&amp;Use color of heading for link</source>
+        <comment>Branch attribute</comment>
+        <translation>&amp;Usa colore dei titoli per i collegamenti</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1002"/>
+        <source>View Actions</source>
+        <comment>View Toolbar name</comment>
+        <translation>Vedi Azioni</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1008"/>
+        <source>reset Zoom</source>
+        <comment>View action</comment>
+        <translation>reset Zoom</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1015"/>
+        <source>Zoom in</source>
+        <comment>View action</comment>
+        <translation>Zoom dentro</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1022"/>
+        <source>Zoom out</source>
+        <comment>View action</comment>
+        <translation>Zoom fuori</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1038"/>
+        <source>Show Note Editor</source>
+        <comment>View action</comment>
+        <translation>Mostra editor di Note</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Show history window</source>
+        <comment>View action</comment>
+        <translation type="obsolete">Mostra la finestra di Cronologia</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Next Window</source>
+        <comment>View action</comment>
+        <translation type="obsolete">Prossima Finestra</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Previous Window</source>
+        <comment>View action</comment>
+        <translation type="obsolete">Finestra Precedente</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1095"/>
+        <source>Modes when using modifiers</source>
+        <comment>Modifier Toolbar name</comment>
+        <translation>Metodi nell&apos;uso dei modifier</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1100"/>
+        <source>Use modifier to color branches</source>
+        <comment>Mode modifier</comment>
+        <translation>Usa i modifier per colorare i rami</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1108"/>
+        <source>Use modifier to copy</source>
+        <comment>Mode modifier</comment>
+        <translation>Usa i modifier per copiare</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1115"/>
+        <source>Use modifier to draw xLinks</source>
+        <comment>Mode modifier</comment>
+        <translation>Usa i modifier per disegnare XLink</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1380"/>
+        <source>Set application to open pdf files</source>
+        <comment>Settings action</comment>
+        <translation>Scegli il programma per aprire i file pdf</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1385"/>
+        <source>Set application to open external links</source>
+        <comment>Settings action</comment>
+        <translation>Imposta applicazione per aprire i link esterni</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1426"/>
+        <source>Edit branch after adding it</source>
+        <comment>Settings action</comment>
+        <translation>Edita il ramo dopo averlo aggiunto</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1433"/>
+        <source>Select branch after adding it</source>
+        <comment>Settings action</comment>
+        <translation>Seleziona il ramo dopo averlo aggiunto</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1440"/>
+        <source>Select existing heading</source>
+        <comment>Settings action</comment>
+        <translation>Seleziona il titolo esistente</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1447"/>
+        <source>Delete key</source>
+        <comment>Settings action</comment>
+        <translation>Tasto Cancella</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1455"/>
+        <source>Exclusive flags</source>
+        <comment>Settings action</comment>
+        <translation>Flag esclusivi</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1462"/>
+        <source>Use hide flags</source>
+        <comment>Settings action</comment>
+        <translation>Usa i flag nascosti</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1506"/>
+        <source>&amp;Help</source>
+        <comment>Help menubar entry</comment>
+        <translation>&amp;Aiuto</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1509"/>
+        <source>Open VYM Documentation (pdf) </source>
+        <comment>Help action</comment>
+        <translation> Apri la documentazione di VYM (pdf) </translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1519"/>
+        <source>About VYM</source>
+        <comment>Help action</comment>
+        <translation>A proposito di VYM</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1524"/>
+        <source>About QT</source>
+        <comment>Help action</comment>
+        <translation>Riguardo le QT</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1552"/>
+        <source>Remove</source>
+        <comment>Context menu name</comment>
+        <translation>Rimuovi</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>URLs and vymLinks</source>
+        <comment>Context menu name</comment>
+        <translation type="obsolete">URL e Link di vym</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1591"/>
+        <source>Edit XLink</source>
+        <comment>Context menu name</comment>
+        <translation>Edita il XLink</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1592"/>
+        <source>Follow XLink</source>
+        <comment>Context menu name</comment>
+        <translation>Segui XLink</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1599"/>
+        <source>Save image</source>
+        <comment>Context action</comment>
+        <translation>Salva immagine</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>The directory %1 is not empty.
+Do you risk to overwrite its contents?</source>
+        <comment>write directory</comment>
+        <translation type="obsolete">La cartella %1 non è vuota. 
+Si rischia di sovvrascrivere i contenuti?</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="301"/>
+        <source>&amp;New map</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="308"/>
+        <source>&amp;Copy to new map</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="309"/>
+        <source>Copy selection to mapcenter of a new map</source>
+        <comment>Status tip File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="532"/>
+        <source>Add mapcenter</source>
+        <comment>Canvas context menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="631"/>
+        <source>Sort children</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="661"/>
+        <source>Unscroll childs</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="662"/>
+        <source>Unscroll all scrolled branches in selected subtree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="707"/>
+        <source>Edit local URL...</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="708"/>
+        <source>Edit local URL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="723"/>
+        <source>Create URL to Novell Bugzilla</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="724"/>
+        <source>Create URL to Novell Bugzilla</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="730"/>
+        <source>Create URL to Novell FATE</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="731"/>
+        <source>Create URL to Novell FATE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="874"/>
+        <source>Property window</source>
+        <comment>Dialog to edit properties of selection</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="875"/>
+        <source>Set properties for selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="939"/>
+        <source>Linkstyle Curve</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="951"/>
+        <source>Linkstyle Thick Curve</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="980"/>
+        <source>Set &amp;Selection Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="981"/>
+        <source>Set Selection Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="992"/>
+        <source>Set &amp;Background image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="993"/>
+        <source>Set Background image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1029"/>
+        <source>Show selection</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1030"/>
+        <source>Show selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1047"/>
+        <source>History Window</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1048"/>
+        <source>Show History Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1060"/>
+        <source>Antialiasing</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1061"/>
+        <source>Antialiasing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1068"/>
+        <source>Smooth pixmap transformations</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1076"/>
+        <source>Next Map</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1082"/>
+        <source>Previous Map</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1136"/>
+        <source>Note</source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished">Note</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1139"/>
+        <source>URL to Document </source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1142"/>
+        <source>Link to another vym map</source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished">Collega ad un&apos;altra mappa vym</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1145"/>
+        <source>subtree is scrolled</source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished">sottoalbero è espanso</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1148"/>
+        <source>subtree is temporary scrolled</source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished">sottoalbero è temporaneamente espanso</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1151"/>
+        <source>Hide object in exported maps</source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished">Nascondi oggetto nelle mappe esportate</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1235"/>
+        <source>I just love...</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1256"/>
+        <source>Important</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished">Importante</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1261"/>
+        <source>Priority</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1265"/>
+        <source>Back</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1268"/>
+        <source>Forward</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1271"/>
+        <source>Look here</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1274"/>
+        <source>Dangerous</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished">Pericoloso</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1277"/>
+        <source>Don&apos;t forget</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1280"/>
+        <source>Flag</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1284"/>
+        <source>Home</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1288"/>
+        <source>Telephone</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1291"/>
+        <source>Music</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1294"/>
+        <source>Mailbox</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1297"/>
+        <source>Maix</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1300"/>
+        <source>Password</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1303"/>
+        <source>To be improved</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1306"/>
+        <source>Stop</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1309"/>
+        <source>Magic</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1312"/>
+        <source>To be discussed</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1315"/>
+        <source>Reminder</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1318"/>
+        <source>Excellent</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1321"/>
+        <source>Linux</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1324"/>
+        <source>Sweet</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1390"/>
+        <source>Set path for macros</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1391"/>
+        <source>Set path for macros</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1395"/>
+        <source>Set number of undo levels</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1396"/>
+        <source>Set number of undo levels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1402"/>
+        <source>Autosave</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1403"/>
+        <source>Autosave</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1410"/>
+        <source>Autosave time</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1411"/>
+        <source>Autosave time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1416"/>
+        <source>Write backup file on save</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1417"/>
+        <source>Write backup file on save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1469"/>
+        <source>Animation</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1470"/>
+        <source>Animation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1514"/>
+        <source>Open VYM example maps </source>
+        <comment>Help action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1515"/>
+        <source>Open VYM example maps </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1569"/>
+        <source>References (URLs, vymLinks, ...)</source>
+        <comment>Context menu name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1645"/>
+        <source>&amp;%1 %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2108"/>
+        <source>Load Freemind map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2202"/>
+        <source>Export as CSV</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3268"/>
+        <source>Directory with vym macros:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3300"/>
+        <source>QInputDialog::getInteger()</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3281"/>
+        <source>Number of undo/redo levels:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3286"/>
+        <source>Settings have been changed. The next map opened will have &quot;%1&quot; undo/redo levels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3301"/>
+        <source>Number of seconds before autosave:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3411"/>
+        <source>History for %1</source>
+        <comment>Window Caption</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3735"/>
+        <source>Couldn&apos;t find the documentation %1 in:
+%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3771"/>
+        <source>Load vym example map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3820"/>
+        <source>Couldn&apos;t find a macro at  %1.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3821"/>
+        <source>Set directory for vym macros</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>MapEditor</name>
+    <message>
+        <location filename="../mapeditor.cpp" line="1703"/>
+        <source>Critical Parse Error</source>
+        <translation>Errore Critico di Interpretazione</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Critical Save Error</source>
+        <translation type="obsolete">Errore Critico di Salvataggio</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Couldn&apos;t write to </source>
+        <translation type="obsolete"> È impossibile scrivere su</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>VYM - Export (ASCII)</source>
+        <translation type="obsolete">VYM - Esporta (ASCII)</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>The file </source>
+        <translation type="obsolete"> Il file</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source> exists already. Do you want to overwrite it?</source>
+        <translation type="obsolete"> esiste già. Vuoi sovvrascriverlo?</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4136"/>
+        <source>Overwrite</source>
+        <translation>Sovvrascrivi</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4137"/>
+        <source>Cancel</source>
+        <translation>Cancella</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Critical Export Error </source>
+        <translation type="obsolete">Errore critico nell&apos;esportazione</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Couldn&apos;t create directory </source>
+        <translation type="obsolete"> Non è possibile creare la cartella</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2129"/>
+        <source>Critical Export Error</source>
+        <translation>Errore critico nell&apos;esportazione</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>MapEditor::exportXML couldn&apos;t open </source>
+        <translation type="obsolete">non è possibile aprire MapEditor::exportXML </translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Critical Parse Error by reading backupFile</source>
+        <translation type="obsolete">Errore Critico di Interpretazione nel leggere il file di backup</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2432"/>
+        <source>Critical Error</source>
+        <translation>Errore Critico</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source> used for undo is gone. 
+I will create a new one, but at the moment no undo is available.
+Maybe you want to reload your original data.
+
+Sorry for any inconveniences.</source>
+        <translation type="obsolete">  non ci sono altri annullamenti.
+Ne creerò uno nuovo, ma al momento nessun annulla è presente.
+Forse vuoi ricaricare i tuoi dati originali.
+
+Ci dispiace per il disagio.</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3474"/>
+        <source>Enter URL:</source>
+        <translation>Inserisci URL:</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>VYM - Link to another map</source>
+        <translation type="obsolete">VYM - Collega ad un&apos;altra mappa</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>vym map</source>
+        <translation type="obsolete">mappa vym</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>vym - load image</source>
+        <translation type="obsolete">vym - carica immagine</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4067"/>
+        <source>Images</source>
+        <translation>Immagini</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>vym - Load image</source>
+        <translation type="obsolete">vym - Carica Immagini</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>vym - save image as</source>
+        <translation type="obsolete">vym - salva immagine come</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>vym - Save image as </source>
+        <translation type="obsolete"> vym - Salva immagine come</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4314"/>
+        <source>Critical Import Error</source>
+        <translation>Errore critico nell&apos;importazione</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Cannot find the directory</source>
+        <translation type="obsolete">Non trovo la cartella</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>VYM - Choose directory structur to import</source>
+        <translation type="obsolete">VYM - Scegli la struttura delle cartelle da importare</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Note</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Note</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>WWW Document (external)</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Documento WWW (esterno)</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Link to another vym map</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Collega ad un&apos;altra mappa vym</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>subtree is scrolled</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">sottoalbero è espanso</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>subtree is temporary scrolled</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">sottoalbero è temporaneamente espanso</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Take care!</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Attenzione!</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Really?</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Veramente?</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>ok!</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">ok!</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Not ok!</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Non ok!</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>This won&apos;t work!</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Questo non funzionerà!</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Good</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Bene</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Bad</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Male</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Time critical</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">In tempo critico</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Idea!</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Idea!</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Important</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Importante</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Unimportant</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Nono Importante</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>I like this</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Mi piace</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>I do not like this</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Non mi piace</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>I just love... </source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete"> Lo amo...</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Dangerous</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Pericoloso</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>This will help</source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Questo aiuta</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>New Map</source>
+        <comment>Heading of mapcenter in new map</comment>
+        <translation type="obsolete">Nuova mappa</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Critcal Save error</source>
+        <translation type="obsolete">Errore Critico di Salvataggio</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2129"/>
+        <source>MapEditor::exportXML couldn&apos;t open %1</source>
+        <translation>MapEditor::exportXML non è possibile aprire %1</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3579"/>
+        <source>Link to another map</source>
+        <translation>Collega ad un&apos;altra mappa vym</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4072"/>
+        <source>Load image</source>
+        <translation>Carica immagine</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4130"/>
+        <source>The file %1 exists already.
+Do you want to overwrite it?</source>
+        <translation>Il file %1 esiste già.
+Vuoi sovvrascriverlo?</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4314"/>
+        <source>Cannot find the directory %1</source>
+        <translation>Non è possibile trovare la cartella %1</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4362"/>
+        <source>Choose directory structure to import</source>
+        <translation>Scegliere la struttura delle cartelle da importare</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="110"/>
+        <source>unnamed</source>
+        <translation>senza nome</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3324"/>
+        <source>Warning</source>
+        <translation>Attenzione</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>History for </source>
+        <translation type="obsolete">Cronologia di </translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4116"/>
+        <source>Save image</source>
+        <translation>Salva immagine</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2426"/>
+        <source>Critical Parse Error while reading %1</source>
+        <translation>Errore Critico di Interpretazione durante la lettura di %1</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2432"/>
+        <source>Could not read %1</source>
+        <translation>Non è possibile leggere %1</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3324"/>
+        <source>Can&apos;t get color of heading,
+there&apos;s no branch selected</source>
+        <translation>Non è possibile determinare il colore del titolo.
+Nessun ramo è stato selezionato</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1795"/>
+        <source>Critical Load Error</source>
+        <translation type="unfinished">Errore Critico di Caricamento</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1602"/>
+        <source>Couldn&apos;t create temporary directory before load
+</source>
+        <translation type="unfinished">Non è possibile creare una cartella temporanea prima di caricare</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1645"/>
+        <source>Couldn&apos;t find a map (*.xml) in .vym archive.
+</source>
+        <translation type="unfinished">Non è possibile trovare una mappa (*.xml) nell&apos;archivio .vym.
+</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1741"/>
+        <source>The map %1
+did not use the compressed vym file format.
+Writing it uncompressed will also write images 
+and flags and thus may overwrite files in the given directory
+
+Do you want to write the map</source>
+        <translation type="unfinished">La mappa %1
+non usa il formato di compressione vym.
+Salvandolo in modo non compresso, salva anche le immagini 
+e le flag e quindi potrebbe sovvrascrivere dei file in questa cartella
+Si vuole salvare la mappa</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1746"/>
+        <source>compressed (vym default)</source>
+        <translation type="unfinished">compresso (predefinito in vym)</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1747"/>
+        <source>uncompressed</source>
+        <translation type="unfinished">non compresso</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1782"/>
+        <source>Save Error</source>
+        <translation type="unfinished">Errore di Salvataggio</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1778"/>
+        <source>%1
+could not be removed before saving</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1783"/>
+        <source>%1
+could not be renamed before saving</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1796"/>
+        <source>Couldn&apos;t create temporary directory before save
+</source>
+        <translation type="unfinished">Non è possibile creare una cartella temporanea prima di salvare
+</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2033"/>
+        <source>Export map as image</source>
+        <translation type="unfinished">Esporta mappa come immagine</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2110"/>
+        <source>Export XML to directory</source>
+        <translation type="unfinished">Esporta XML in una cartella</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2260"/>
+        <source>Autosave disabled during undo.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3268"/>
+        <source>Load background image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3489"/>
+        <source>Text</source>
+        <comment>Filedialog</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3490"/>
+        <source>Spreadsheet</source>
+        <comment>Filedialog</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3491"/>
+        <source>Textdocument</source>
+        <comment>Filedialog</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3492"/>
+        <source>Images</source>
+        <comment>Filedialog</comment>
+        <translation type="unfinished">Immagini</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3495"/>
+        <source>Set URL to a local file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3727"/>
+        <source>%1 items on map
+</source>
+        <comment>Info about map</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="5291"/>
+        <source>The file of the map  on disk has changed:
+
+   %1
+
+Do you want to reload that map with the new file?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="5297"/>
+        <source>Reload</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="5298"/>
+        <source>Ignore</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="../file.cpp" line="439"/>
+        <source>This is not an image.</source>
+        <translation>Questa non è un immagine.</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="77"/>
+        <source>The file %1 exists already.
+Do you want to overwrite it?</source>
+        <translation>Il file %1 esiste già.Vuoi sovvrascriverlo?</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="105"/>
+        <source>Overwrite</source>
+        <translation>Sovvrascrivi</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="106"/>
+        <source>Cancel</source>
+        <translation>Cancella</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="557"/>
+        <source>Critical Export Error</source>
+        <translation>Errore critico nell&apos;esportazione</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="352"/>
+        <source>Could not write %1</source>
+        <translation>Non è possibile scrivere %1</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="353"/>
+        <source>Export failed.</source>
+        <translation>Esportazione fallita.</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="524"/>
+        <source>Check &quot;%1&quot; in
+%2</source>
+        <translation>Controllare &quot;%1&quot; in
+%2</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="557"/>
+        <source>Could not read %1</source>
+        <translation>Non è possibile leggere %1</translation>
+    </message>
+    <message>
+        <location filename="../xsltproc.cpp" line="82"/>
+        <source>Critical Error</source>
+        <translation>Errore Critico</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="272"/>
+        <source>Couldn&apos;t start zip to compress data.</source>
+        <translation>Non è possibile iniziare lo zip per la decompressione dei dati.</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="282"/>
+        <source>zip didn&apos;t exit normally</source>
+        <translation>lo zip non è terminato normalmente</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="316"/>
+        <source>Couldn&apos;t start unzip to decompress data.</source>
+        <translation>Non è possibile iniziare l&apos;unzip per la decompressione dei dati.</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="326"/>
+        <source>unzip didn&apos;t exit normally</source>
+        <translation>unzip non è finito normalmente</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="441"/>
+        <source>Sorry, no preview for
+multiple selected files.</source>
+        <translation>Spiacenti, nessuna anteprima per
+più file selezionati.</translation>
+    </message>
+    <message>
+        <location filename="../xsltproc.cpp" line="77"/>
+        <source>Could not start %1</source>
+        <translation>Non è possibile iniziare %1</translation>
+    </message>
+    <message>
+        <location filename="../xsltproc.cpp" line="83"/>
+        <source>%1 didn&apos;t exit normally</source>
+        <translation>%1 non è terminato normalmente</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="294"/>
+        <source>Exporting the %1 bookmarks will overwrite
+your existing bookmarks file.</source>
+        <translation>Esportando il segnalibri %1 sovvrascriverà
+il vostro attuale file di segnalibri.</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="295"/>
+        <source>Warning: Overwriting %1 bookmarks</source>
+        <translation>Attenzione: Sovvrascrizione %1 segnalibri</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="278"/>
+        <source>Warning</source>
+        <translation>Attenzione</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="279"/>
+        <source>Couldn&apos;t find script %1
+to notifiy Browsers of changed bookmarks.</source>
+        <translation>Non è possibile trovare lo script %1
+per notificare il Browser del cambiamento nei segnalibri.</translation>
+    </message>
+    <message>
+        <location filename="../main.cpp" line="192"/>
+        <source>Error</source>
+        <translation>Errore</translation>
+    </message>
+    <message>
+        <location filename="../imports.cpp" line="17"/>
+        <source>Couldn&apos;t access temporary directory
+</source>
+        <translation>La cartella temporanea non è accessibile
+</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="131"/>
+        <source>Export as ASCII</source>
+        <translation type="unfinished">Esporta in ASCII</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="131"/>
+        <source>(still experimental)</source>
+        <translation type="unfinished">(in via di sperimentazione)</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="99"/>
+        <source>The directory %1 is not empty.
+Do you risk to overwrite its contents?</source>
+        <comment>write directory</comment>
+        <translation type="unfinished">La cartella %1 non è vuota. 
+Si rischia di sovvrascrivere i contenuti?</translation>
+    </message>
+    <message>
+        <location filename="../main.cpp" line="193"/>
+        <source>Couldn&apos;t open %1.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ShowTextDialog</name>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>VYM - Info</source>
+        <translation type="obsolete">VIM - Info</translation>
+    </message>
+    <message>
+        <location filename="../showtextdialog.ui" line="52"/>
+        <source>Close</source>
+        <translation>Chiudi</translation>
+    </message>
+    <message>
+        <location filename="../showtextdialog.ui" line="16"/>
+        <source>Dialog</source>
+        <translation>Finestra di Dialogo</translation>
+    </message>
+</context>
+<context>
+    <name>SimpleScriptEditor</name>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="61"/>
+        <source>Save script</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="73"/>
+        <source>The file %1
+exists already.
+Do you want to overwrite it?</source>
+        <comment>dialog &apos;save as&apos;</comment>
+        <translation type="unfinished">Il file %1 
+esiste già.
+Vuoi sovvrascriverlo?</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="78"/>
+        <source>Overwrite</source>
+        <translation type="unfinished">Sovvrascrivi</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="79"/>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancella</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="105"/>
+        <source>Load script</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="116"/>
+        <source>Error</source>
+        <translation type="unfinished">Errore</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="117"/>
+        <source>Couldn&apos;t open %1.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="13"/>
+        <source>Simple Script Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="38"/>
+        <source>Save as</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="48"/>
+        <source>Save</source>
+        <translation type="unfinished">Salva</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="51"/>
+        <source>Qt::CTRL + Qt::Key_S</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="58"/>
+        <source>Open</source>
+        <translation type="unfinished">Apri</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="61"/>
+        <source>Qt::CTRL +Qt::Key_O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="68"/>
+        <source>Run</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="71"/>
+        <source>Qt::CTRL + Qt::Key_R</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="78"/>
+        <source>Close</source>
+        <translation type="unfinished">Chiudi</translation>
+    </message>
+</context>
+<context>
+    <name>TextEditor</name>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>&amp;File</source>
+        <translation type="obsolete">&amp;File</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Import</source>
+        <translation type="obsolete">Importa</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="202"/>
+        <source>&amp;Import...</source>
+        <translation>&amp;Importa...</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Export Note (HTML)</source>
+        <translation type="obsolete">Esporta Note (HTML)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="211"/>
+        <source>&amp;Export...</source>
+        <translation>&amp;Esporta...</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Export Note As (HTML) </source>
+        <translation type="obsolete"> Esporta Note come (HTML)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="219"/>
+        <source>Export &amp;As... (HTML)</source>
+        <translation> Es&amp;porta Come... (HTML)</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Export Note As (ASCII) </source>
+        <translation type="obsolete">  Esporta Note come (ASCII)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="225"/>
+        <source>Export &amp;As...(ASCII)</source>
+        <translation> Es&amp;porta Come... (ASCII)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="675"/>
+        <source>Print Note</source>
+        <translation>Stampa Nota</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="233"/>
+        <source>&amp;Print...</source>
+        <translation>&amp;Stampa...</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="246"/>
+        <source>&amp;Edit</source>
+        <translation>&amp;Modifica</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Undo</source>
+        <translation type="obsolete">Annulla</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="249"/>
+        <source>&amp;Undo</source>
+        <translation>&amp;Annulla</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Redo</source>
+        <translation type="obsolete">Rifai</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="257"/>
+        <source>&amp;Redo</source>
+        <translation>&amp;Rifai</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Select and copy all</source>
+        <translation type="obsolete">Seleziona e copia tutto</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="266"/>
+        <source>Select and copy &amp;all</source>
+        <translation>Seleziona e copia t&amp;utto</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Copy</source>
+        <translation type="obsolete">Copia</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="273"/>
+        <source>&amp;Copy</source>
+        <translation>&amp;Copia</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Cut</source>
+        <translation type="obsolete">Taglia</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="281"/>
+        <source>Cu&amp;t</source>
+        <translation>&amp;Taglia</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Paste</source>
+        <translation type="obsolete">Incolla</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="289"/>
+        <source>&amp;Paste</source>
+        <translation>I&amp;ncolla</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Delete all</source>
+        <translation type="obsolete">Cancella tutto</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="297"/>
+        <source>&amp;Delete All</source>
+        <translation>Cance&amp;lla tutto</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Convert paragraphs to linebreaks</source>
+        <translation type="obsolete">Converti paragrafi in &apos;a capo&apos;</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>&amp;Convert Paragraphs</source>
+        <translation type="obsolete">Converti para&amp;grafi</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Join all lines of a paragraph</source>
+        <translation type="obsolete">Unire tutte le linee del paragrafo</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>&amp;Join lines</source>
+        <translation type="obsolete">&amp;Unisci linee</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>&amp;Format</source>
+        <translation type="obsolete">&amp;Formato</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Toggle font hint for the whole text</source>
+        <translation type="obsolete">(mostra/nascondi) suggerimento caratteri per tutto il testo</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="314"/>
+        <source>&amp;Font hint</source>
+        <translation>&amp;Suggerimento Caratteri</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="347"/>
+        <source>&amp;Color...</source>
+        <translation>&amp;Colore...</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="353"/>
+        <source>&amp;Bold</source>
+        <translation>&amp;Grassetto</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="361"/>
+        <source>&amp;Italic</source>
+        <translation>&amp;Corsivo</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="369"/>
+        <source>&amp;Underline</source>
+        <translation>So&amp;ttolinea</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="400"/>
+        <source>&amp;Left</source>
+        <translation>&amp;Sinistra</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="406"/>
+        <source>C&amp;enter</source>
+        <translation>C&amp;entro</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="412"/>
+        <source>&amp;Right</source>
+        <translation>&amp;Destra</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="418"/>
+        <source>&amp;Justify</source>
+        <translation>&amp;Giustificato</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="428"/>
+        <source>&amp;Settings</source>
+        <translation>&amp;Preferenze</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Set fixed font</source>
+        <translation type="obsolete">Scegli Caratteri fissi</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="431"/>
+        <source>Set &amp;fixed font</source>
+        <translation>Scegli Caratteri &amp;Fissi</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Set variable font</source>
+        <translation type="obsolete">Scegli Caratteri Variabili</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="437"/>
+        <source>Set &amp;variable font</source>
+        <translation>Scegli &amp;Caratteri Variabili</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Used fixed font by default</source>
+        <translation type="obsolete">Usa caretteri fissi come predefinito</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="443"/>
+        <source>&amp;fixed font is default</source>
+        <translation>carattere &amp;fisso predefinito</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="557"/>
+        <source>Export Note to single file</source>
+        <translation>Esporta nota in un file singolo</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>The file </source>
+        <translation type="obsolete"> Il file</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source> exists already. Do you want to overwrite it?</source>
+        <translation type="obsolete"> esiste già. Vuoi sovvrascriverlo?</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="645"/>
+        <source>Overwrite</source>
+        <translation>Sovvrascrivi</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="646"/>
+        <source>Cancel</source>
+        <translation>Cancella</translation>
+    </message>
+    <message>
+        <location filename="vym/code/lang" line="0"/>
+        <source>Couldn&apos;t export note </source>
+        <translation type="obsolete"> Non è possibile esportare la nota</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="631"/>
+        <source>Export Note to single file (ASCII)</source>
+        <translation>Esporta nota in un file singolo (ASCII)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="457"/>
+        <source>Note Editor</source>
+        <translation>Editor di Note</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="380"/>
+        <source>Subs&amp;cript</source>
+        <translation>Pedi&amp;ce</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="388"/>
+        <source>Su&amp;perscript</source>
+        <translation>A&amp;pice</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="310"/>
+        <source>F&amp;ormat</source>
+        <translation>F&amp;ormattazione</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="244"/>
+        <source>Edit Actions</source>
+        <translation>Edita Azioni</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="308"/>
+        <source>Format Actions</source>
+        <translation>Formatta Azioni</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="197"/>
+        <source>Note Actions</source>
+        <translation>Note Azioni</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="38"/>
+        <source>Ready</source>
+        <comment>Statusbar message</comment>
+        <translation>Pronto</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="163"/>
+        <source>No filename available for this note.</source>
+        <comment>Statusbar message</comment>
+        <translation>Nessun nome di file disponibile per questa nota.</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="39"/>
+        <source>Note Editor</source>
+        <comment>Window caption</comment>
+        <translation>Editor di Note</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="199"/>
+        <source>&amp;Note</source>
+        <comment>Menubar</comment>
+        <translation>&amp;Nota</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="203"/>
+        <source>Import</source>
+        <comment>Status tip for Note menu</comment>
+        <translation>Importa</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="212"/>
+        <source>Export Note (HTML)</source>
+        <comment>Status tip for Note menu</comment>
+        <translation>Esporta Note (HTML)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="220"/>
+        <source>Export Note As (HTML) </source>
+        <comment>Status tip for Note Menu</comment>
+        <translation>Esporta Note come (HTML) </translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="226"/>
+        <source>Export Note As (ASCII) </source>
+        <comment>Status tip for note menu</comment>
+        <translation> Esporta Note come (ASCII) </translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="234"/>
+        <source>Print Note</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Stampa Nota</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="250"/>
+        <source>Undo</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="258"/>
+        <source>Redo</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Rifai</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="267"/>
+        <source>Select and copy all</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Seleziona e copia tutto</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="274"/>
+        <source>Copy</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Copia</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="282"/>
+        <source>Cut</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Taglia</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="290"/>
+        <source>Paste</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Incolla</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="298"/>
+        <source>Delete all</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Cancella tutto</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="315"/>
+        <source>Toggle font hint for the whole text</source>
+        <comment>Status tip for note menu</comment>
+        <translation>(mostra/nascondi) suggerimento caratteri per tutto il testo</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="432"/>
+        <source>Set fixed font</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Scegli Caratteri fissi</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="438"/>
+        <source>Set variable font</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Scegli Caratteri Variabili</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="444"/>
+        <source>Used fixed font by default</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Usa caretteri fissi come predefinito</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="640"/>
+        <source>The file %1
+exists already.
+Do you want to overwrite it?</source>
+        <comment>dialog &apos;save note as&apos;</comment>
+        <translation>Il file %1 
+esiste già.
+Vuoi sovvrascriverlo?</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="589"/>
+        <source>Couldn&apos;t export note </source>
+        <comment>dialog &apos;save note as&apos;</comment>
+        <translation>Non è possibile esportare la nota </translation>
+    </message>
+</context>
+<context>
+    <name>WarningDialog</name>
+    <message>
+        <location filename="../warningdialog.ui" line="132"/>
+        <source>Cancel</source>
+        <translation>Cancella</translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.ui" line="139"/>
+        <source>Ok</source>
+        <translation>Ok</translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.ui" line="13"/>
+        <source>VYM - Warning : Foo...</source>
+        <translation>VYM - Attenzione : Foo...</translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.ui" line="106"/>
+        <source>showAgainBox</source>
+        <translation>mostraBoxAncora</translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.cpp" line="11"/>
+        <source>Proceed</source>
+        <translation>Procedi</translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.cpp" line="15"/>
+        <source>Show this message again</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
diff --git a/lang/vym_pt_BR.qm b/lang/vym_pt_BR.qm
new file mode 100644 (file)
index 0000000..4008378
Binary files /dev/null and b/lang/vym_pt_BR.qm differ
diff --git a/lang/vym_pt_BR.ts b/lang/vym_pt_BR.ts
new file mode 100644 (file)
index 0000000..3466af5
--- /dev/null
@@ -0,0 +1,3515 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS><TS version="1.1" language="pt_BR">
+<context>
+    <name>AboutDialog</name>
+    <message>
+        <location filename="../aboutdialog.cpp" line="205"/>
+        <source>Ok</source>
+        <comment>Ok Button</comment>
+        <translation>OK</translation>
+    </message>
+</context>
+<context>
+    <name>AboutTextBrowser</name>
+    <message>
+        <location filename="../aboutdialog.cpp" line="228"/>
+        <source>Please use Settings-&gt;</source>
+        <translation>Por favor use Configurações-&gt;</translation>
+    </message>
+    <message>
+        <location filename="../aboutdialog.cpp" line="228"/>
+        <source>Set application to open an URL</source>
+        <translation>Definir aplicação externa para abrir URL</translation>
+    </message>
+    <message>
+        <location filename="../aboutdialog.cpp" line="226"/>
+        <source>Warning</source>
+        <comment>About window</comment>
+        <translation>Aviso</translation>
+    </message>
+    <message>
+        <location filename="../aboutdialog.cpp" line="227"/>
+        <source>Couldn&apos;t find a viewer to open %1.
+</source>
+        <comment>About window</comment>
+        <translation>Não foi possível encontrar um programa para abrir %1.
+</translation>
+    </message>
+</context>
+<context>
+    <name>Attribute Dialog</name>
+    <message>
+        <location filename="../attributedialog.cpp" line="74"/>
+        <source>AttributeDialog - Edit definitions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../attributedialog.cpp" line="76"/>
+        <source>AttributeDialog - Edit %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>AttributeDialog</name>
+    <message>
+        <location filename="../attributedialog.cpp" line="48"/>
+        <source>Attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../attributedialog.cpp" line="49"/>
+        <source>Add key</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../attributedialog.cpp" line="50"/>
+        <source>Close</source>
+        <translation type="unfinished">Fechar</translation>
+    </message>
+</context>
+<context>
+    <name>AttributeWidget</name>
+    <message>
+        <location filename="../attributewidget.ui" line="13"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>BranchPropertyWindow</name>
+    <message>
+        <location filename="../branchpropwindow.cpp" line="16"/>
+        <source>Property Editor</source>
+        <comment>Window caption</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.cpp" line="32"/>
+        <source>Name</source>
+        <comment>Branchprop window: Attribute name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.cpp" line="33"/>
+        <source>Value</source>
+        <comment>Branchprop window: Attribute value</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.cpp" line="34"/>
+        <source>Type</source>
+        <comment>Branchprop window: Attribute type</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="19"/>
+        <source>Branch Property Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="29"/>
+        <source>Frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="50"/>
+        <source>Geometry</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="63"/>
+        <source>No Frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="68"/>
+        <source>Rectangle</source>
+        <translation type="unfinished">Retângulo</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="73"/>
+        <source>Ellipse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="94"/>
+        <source>Padding</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="101"/>
+        <source>Borderline width</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="151"/>
+        <source>Colors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="194"/>
+        <source>Borderline color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="217"/>
+        <source>Background color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="246"/>
+        <source>Layout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="254"/>
+        <source>Include images horizontally</source>
+        <translation type="unfinished">Incluir imagens horizontalmente</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="261"/>
+        <source>Include images vertically</source>
+        <translation type="unfinished">Incluir imagens verticalmente</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="284"/>
+        <source>Link</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="290"/>
+        <source>Hide link if unselected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="311"/>
+        <source>Attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="337"/>
+        <source>+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="344"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="413"/>
+        <source>Close</source>
+        <translation type="unfinished">Fechar</translation>
+    </message>
+</context>
+<context>
+    <name>EditXLinkDialog</name>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="24"/>
+        <source>Edit XLink</source>
+        <translation>Editar Ligação Externa</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="62"/>
+        <source>XLink width:</source>
+        <translation>Largura:</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="78"/>
+        <source>Set color of heading</source>
+        <translation>Usar cor do tópico</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="108"/>
+        <source>XLink color:</source>
+        <translation>Cor: </translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="150"/>
+        <source>Use as default:</source>
+        <translation>Definir como padrão:</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="202"/>
+        <source>Quit and delete XLink</source>
+        <translation>Sair e Apagar Ligação Externa</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="225"/>
+        <source>Ok</source>
+        <translation>OK</translation>
+    </message>
+</context>
+<context>
+    <name>ExportXHTMLDialog</name>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="19"/>
+        <source>Export XHTML</source>
+        <translation>Exportar HTML</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="48"/>
+        <source>Export to directory:</source>
+        <translation>Exportar para diretório:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="455"/>
+        <source>Browse</source>
+        <translation>Navegar</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="92"/>
+        <source>Options</source>
+        <translation>Opções</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="113"/>
+        <source>show output of external scripts</source>
+        <translation>Visualizar saída dos scripts externos</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="144"/>
+        <source>Include image</source>
+        <translation>Incluir imagem</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="151"/>
+        <source>Colored headings in text</source>
+        <translation>Tópicos com cores</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="158"/>
+        <source>Save settings in map</source>
+        <translation>Salvar configurações no mapa</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>showWarnings e.g. if directory is not empty</source>
+        <translation type="obsolete">Mostrar avisos, ex: se o diretório não estiver vazio</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="176"/>
+        <source>Stylesheets</source>
+        <translation>Estilos de página</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="232"/>
+        <source>XSL:</source>
+        <translation>XSL:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="289"/>
+        <source>CSS:</source>
+        <translation>CSS:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="320"/>
+        <source>Scripts</source>
+        <translation>Scripts</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="376"/>
+        <source>Before export:</source>
+        <translation>Pré-exportação:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="436"/>
+        <source>After Export:</source>
+        <translation>Pós-exportação:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="508"/>
+        <source>Export</source>
+        <translation>Exportar</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="501"/>
+        <source>Cancel</source>
+        <translation>Cancelar</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="335"/>
+        <source>Warning</source>
+        <translation>Aviso</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="119"/>
+        <source>The settings saved in the map would like to run scripts:
+
+%1
+
+Please check, if you really
+want to allow this in your system!</source>
+        <translation>As configurações salvas no mapa permitem executar os scripts:
+
+%1
+
+Por favor, verifique se você
+realmente quer permitir isso!</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="140"/>
+        <source>VYM - Export HTML to directory</source>
+        <translation>VYM - Exportar HTML para diretório</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>VYM - Path to CSS file</source>
+        <translation type="obsolete">VYM - Caminho para o arquivo CSS</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>VYM - Path to XSL file</source>
+        <translation type="obsolete">VYM - Caminho para arquivo XSL</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>VYM - Path to pre export script</source>
+        <translation type="obsolete">VYM - Caminho para script de pré-exportação</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>VYM - Path to post export script</source>
+        <translation type="obsolete">VYM - Caminho para script de pós-exportação</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="335"/>
+        <source>Could not open %1</source>
+        <translation>Não foi possível abrir %1</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="320"/>
+        <source>Could not write %1</source>
+        <translation>Não foi possível criar %1</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="405"/>
+        <source>Critical Error</source>
+        <translation>Erro Crítico</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="401"/>
+        <source>Could not start %1</source>
+        <translation>Não foi possível executar %1</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="406"/>
+        <source>%1 didn&apos;t exit normally</source>
+        <translation>%1 não terminou normalmente</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="165"/>
+        <source>show warnings of xslt processor</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ExtraInfoDialog</name>
+    <message>
+        <location filename="../extrainfodialog.ui" line="16"/>
+        <source>VYM - Info</source>
+        <translation>VYM - Informações</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="28"/>
+        <source>Map:</source>
+        <translation>Mapa:</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="42"/>
+        <source>Author:</source>
+        <translation>Autor:</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="52"/>
+        <source>Comment:</source>
+        <translation>Comentário:</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="77"/>
+        <source>Statistics:</source>
+        <translation>Estatísticas:</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="129"/>
+        <source>Cancel</source>
+        <translation>Cancelar</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="136"/>
+        <source>Close</source>
+        <translation>Fechar</translation>
+    </message>
+</context>
+<context>
+    <name>FindWindow</name>
+    <message>
+        <location filename="../findwindow.cpp" line="40"/>
+        <source>Clear</source>
+        <translation>Limpar</translation>
+    </message>
+    <message>
+        <location filename="../findwindow.cpp" line="45"/>
+        <source>Cancel</source>
+        <translation>Cancelar</translation>
+    </message>
+    <message>
+        <location filename="../findwindow.cpp" line="51"/>
+        <source>Find</source>
+        <translation>Pesquisar</translation>
+    </message>
+    <message>
+        <location filename="../findwindow.cpp" line="14"/>
+        <source>Find Text</source>
+        <translation>Pesquisar Texto</translation>
+    </message>
+    <message>
+        <location filename="../findwindow.cpp" line="21"/>
+        <source>Text to find:</source>
+        <translation>Pesquisar:</translation>
+    </message>
+</context>
+<context>
+    <name>Heading of mapcenter in new map</name>
+    <message>
+        <location filename="../vymmodel.cpp" line="105"/>
+        <source>New map</source>
+        <translation type="unfinished">Novo mapa</translation>
+    </message>
+</context>
+<context>
+    <name>HistoryWindow</name>
+    <message>
+        <location filename="../historywindow.ui" line="13"/>
+        <source>Dialog</source>
+        <translation>Diálogo</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="50"/>
+        <source>Redo</source>
+        <translation>Refazer</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>New Row</source>
+        <translation type="obsolete">Nova Linha</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="72"/>
+        <source>Time</source>
+        <translation>Tempo</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="77"/>
+        <source>Comment</source>
+        <translation>Comentário</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="85"/>
+        <source>Undo</source>
+        <translation>Desfazer</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="122"/>
+        <source>Close</source>
+        <translation>Fechar</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.cpp" line="18"/>
+        <source>Action</source>
+        <comment>Table with actions</comment>
+        <translation>Ações</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.cpp" line="21"/>
+        <source>Comment</source>
+        <comment>Table with actions</comment>
+        <translation>Comentário</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.cpp" line="24"/>
+        <source>Undo action</source>
+        <comment>Table with actions</comment>
+        <translation>Desfazer ação</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.cpp" line="126"/>
+        <source>Current state</source>
+        <comment>Current bar in history hwindow</comment>
+        <translation>Atual</translation>
+    </message>
+</context>
+<context>
+    <name>Main</name>
+    <message>
+        <location filename="../mainwindow.cpp" line="429"/>
+        <source>Close Map</source>
+        <translation>Fechar Mapa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="454"/>
+        <source>Undo</source>
+        <translation>Desfazer</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="471"/>
+        <source>Copy</source>
+        <translation>Copiar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="480"/>
+        <source>Cut</source>
+        <translation>Recortar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="490"/>
+        <source>Paste</source>
+        <translation>Colar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="614"/>
+        <source>Move branch up</source>
+        <translation>Mover ramo acima</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="624"/>
+        <source>Move branch down</source>
+        <translation>Mover ramo abaixo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="645"/>
+        <source>Scroll branch</source>
+        <translation>Contrair ramo</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Unscroll all</source>
+        <translation type="obsolete">Expandir ramos</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="669"/>
+        <source>Find</source>
+        <translation>Pesquisar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="678"/>
+        <source>Open URL</source>
+        <translation>Abrir URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="699"/>
+        <source>Edit URL</source>
+        <translation>Editar URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="717"/>
+        <source>Use heading of selected branch as URL</source>
+        <translation>Usar tópico do ramo selecionado como URL</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Create URL to Bugzilla</source>
+        <translation type="obsolete">Criar URL para o Bugzilla</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="738"/>
+        <source>Jump to another vym map, if needed load it first</source>
+        <translation>Ir para outro mapa VYM, se necessário ele será carregado antes</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="754"/>
+        <source>Edit link to another vym map</source>
+        <translation>Editar ligação para outro mapa VYM</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="760"/>
+        <source>Delete link to another vym map</source>
+        <translation>Apagar ligação para outro mapa VYM</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="775"/>
+        <source>Edit Map Info</source>
+        <translation>Editar Informações</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="515"/>
+        <source>edit Heading</source>
+        <translation>Editar Tópico</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="524"/>
+        <source>Delete Selection</source>
+        <translation>Apagar Seleção</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="545"/>
+        <source>Add a branch as child of selection</source>
+        <translation>Adicionar ramo como filho da seleção</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="588"/>
+        <source>Add a branch above selection</source>
+        <translation>Adicionar ramo acima da seleção</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="606"/>
+        <source>Add a branch below selection</source>
+        <translation>Adicionar ramo abaixo da seleção</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="782"/>
+        <source>Add map at selection</source>
+        <translation>Adicionar mapa à seleção</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="790"/>
+        <source>Replace selection with map</source>
+        <translation>Substituir seleção com mapa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="798"/>
+        <source>Save selection</source>
+        <translation>Salvar seleção</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="825"/>
+        <source>Select upper branch</source>
+        <translation>Selecionar ramo mais acima</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="831"/>
+        <source>Select lower branch</source>
+        <translation>Selecionar ramo mais abaixo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="837"/>
+        <source>Select left branch</source>
+        <translation>Selecionar ramo da esquerda</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="843"/>
+        <source>Select right branch</source>
+        <translation>Selecionar ramo da direita</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="849"/>
+        <source>Select first branch</source>
+        <translation>Selecionar primeiro ramo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="859"/>
+        <source>Select last branch</source>
+        <translation>Selecionar último ramo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="870"/>
+        <source>Add Image</source>
+        <translation>Adicionar Imagem</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="895"/>
+        <source>Set Color</source>
+        <translation>Definir Cor</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="894"/>
+        <source>Set &amp;Color</source>
+        <translation>Definir &amp;Cor</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="901"/>
+        <source>Pick color
+Hint: You can pick a color from another branch and color using CTRL+Left Button</source>
+        <translation>Capturar cor
+Dica: Você pode capturar a cor de outro ramo ou região usando CTRL+Botão esquerdo do mouse</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="911"/>
+        <source>Color branch</source>
+        <translation>Cor do ramo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="921"/>
+        <source>Color Subtree</source>
+        <translation>Cor da Subárvore</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="940"/>
+        <source>Line</source>
+        <translation>Linha</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="933"/>
+        <source>Linkstyle Line</source>
+        <translation>Estilo de Linhas</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Linkstyle Parabel</source>
+        <translation type="obsolete">Estilo de Parábolas</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="946"/>
+        <source>PolyLine</source>
+        <translation>Muti-linhas</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="945"/>
+        <source>Linkstyle Thick Line</source>
+        <translation>Estilo de Linhas Largas</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="952"/>
+        <source>PolyParabel</source>
+        <translation>Multi-parábolas</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Linkstyle Thick Parabel</source>
+        <translation type="obsolete">Estilo de Parábolas Largas</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>No Frame</source>
+        <translation type="obsolete">Nenhum Quadro</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Rectangle</source>
+        <translation type="obsolete">Retângulo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="967"/>
+        <source>Use same color for links and headings</source>
+        <translation>Usar a mesma cor para ligações e tópicos</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="975"/>
+        <source>Set Link Color</source>
+        <translation>Definir Cor da Ligação</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="987"/>
+        <source>Set Background Color</source>
+        <translation>Definir Cor de Fundo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="986"/>
+        <source>Set &amp;Background Color</source>
+        <translation>Definir Cor de &amp;Fundo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1005"/>
+        <source>&amp;View</source>
+        <translation>&amp;Visualizar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1009"/>
+        <source>Zoom reset</source>
+        <translation>Normal</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1016"/>
+        <source>Zoom in</source>
+        <translation>Ampliar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1023"/>
+        <source>Zoom out</source>
+        <translation>Reduzir</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>&amp;Next Window</source>
+        <translation type="obsolete">&amp;Próxima Janela</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>&amp;Previous Window</source>
+        <translation type="obsolete">Janela &amp;Anterior</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1102"/>
+        <source>Use modifier to color branches</source>
+        <translation>Usar modificador para colorir ramos</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1376"/>
+        <source>&amp;Settings</source>
+        <translation>&amp;Configurações</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1381"/>
+        <source>Set application to open pdf files</source>
+        <translation>Definir aplicação externa para abrir PDF</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1427"/>
+        <source>Edit branch after adding it</source>
+        <translation>Editar ramo depois de adicionar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1434"/>
+        <source>Select branch after adding it</source>
+        <translation>Selecionar ramo depois de adicionar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1441"/>
+        <source>Select heading before editing</source>
+        <translation>Selecionar tópico antes de editar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1484"/>
+        <source>&amp;Test</source>
+        <translation>&amp;Testar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1510"/>
+        <source>Open VYM Documentation (pdf)</source>
+        <translation>Documentação do VYM (pdf)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1525"/>
+        <source>Information about QT toolkit</source>
+        <translation>Informações sobre ferramentas QT</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2017"/>
+        <source>Overwrite</source>
+        <translation>Sobrescrever</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2018"/>
+        <source>Cancel</source>
+        <translation>Cancelar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1783"/>
+        <source>Open anyway</source>
+        <translation>Forçar abrir</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1831"/>
+        <source>Create</source>
+        <translation>Criar</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Critical Load Error</source>
+        <translation type="obsolete">Erro Crítico ao Carregar</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Couldn&apos;t find a map (*.xml) in .vym archive.
+</source>
+        <translation type="obsolete">Não foi possível encontrar um mapa (.xml) dentro do arquivo .vym.
+</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1907"/>
+        <source>Load vym map</source>
+        <translation>Carregar mapa VYM</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1910"/>
+        <source>Import: Add vym map to selection</source>
+        <translation>Importar: Adicionar mapa à seleção</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1913"/>
+        <source>Import: Replace selection with vym map</source>
+        <translation>Importar: Substituir seleção com um mapa</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Save Error</source>
+        <translation type="obsolete">Erro ao Salvar</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>
+could not be removed before saving</source>
+        <translation type="obsolete">
+não foi possível remover antes de salvar</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>compressed (vym default)</source>
+        <translation type="obsolete">comprimido (padrão)</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>uncompressed</source>
+        <translation type="obsolete">descomprimido</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Export XML to directory</source>
+        <translation type="obsolete">Exportar XML para diretório</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2306"/>
+        <source>Save modified map before closing it</source>
+        <translation>Salvar mapa modificado antes de fechar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2357"/>
+        <source>Discard changes</source>
+        <translation>Descartas alterações</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2351"/>
+        <source>This map is not saved yet. Do you want to</source>
+        <translation>Este mapa não foi salvo ainda. Quer fazê-lo agora?</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2356"/>
+        <source>Save map</source>
+        <translation>Salvar mapa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3285"/>
+        <source>VYM -Information:</source>
+        <translation>VYM - Informações:</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2790"/>
+        <source>Critical Error</source>
+        <translation>Erro Crítico</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3734"/>
+        <source>Critcal error</source>
+        <translation>Erro crítico</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Couldn&apos;t find the documentation
+vym.pdf in various places.</source>
+        <translation type="obsolete">Não foi possível encontrar a documentação
+(vym.pdf) em sua instalação.</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="570"/>
+        <source>Add a branch by inserting and making selection its child</source>
+        <translation>Adicionar ramo ao inserir e selecionar seus filhos</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="806"/>
+        <source>Remove only branch and keep its childs</source>
+        <translation>Apagar apenas ramos e manter seus filhos</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="816"/>
+        <source>Remove childs of branch</source>
+        <translation>Apagar filhos do ramo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1110"/>
+        <source>Use modifier to copy</source>
+        <translation>Usar modificador para copiar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1541"/>
+        <source>Add</source>
+        <translation>Adicionar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1117"/>
+        <source>Use modifier to draw xLinks</source>
+        <translation>Usar modificador para criar Ligações Externas</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1456"/>
+        <source>Use exclusive flags in flag toolbars</source>
+        <translation>Usar emblemas exclusivos na barra de tarefas</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1386"/>
+        <source>Set application to open external links</source>
+        <translation>Definir aplicação externa para abrir URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1448"/>
+        <source>Delete key for deleting branches</source>
+        <translation>Tecla Delete para apagar ramos</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1778"/>
+        <source>The map %1
+is already opened.Opening the same map in multiple editors may lead 
+to confusion when finishing working with vym.Do you want to</source>
+        <translation>O mapa %1
+já está aberto. Abrir o mesmo mapa múltiplas vezes pode
+causar perda de dados pois as mudanças em um não será automaticamente
+replicada no outro. Deseja continuar?</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1825"/>
+        <source>This map does not exist:
+  %1
+Do you want to create a new one?</source>
+        <translation>Este mapa não existe:
+%1
+Deseja criar um novo?</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>The map %1
+did not use the compressed vym file format.
+Writing it uncompressed will also write images 
+and flags and thus may overwrite files in the given directory
+
+Do you want to write the map</source>
+        <translation type="obsolete">O mapa %1
+não usa o formato de arquivo comprimido.
+Salvar no formato descomprimido também salvará imagens
+e emblemas que podem sobrescrever arquivos já presentes no diretório.
+Deseja continuar salvando este mapa?</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1977"/>
+        <source>Saved  %1</source>
+        <translation>Salvo %1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1982"/>
+        <source>Couldn&apos;t save </source>
+        <translation>Não foi possível salvar </translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2012"/>
+        <source>The file %1
+exists already. Do you want to</source>
+        <translation>O arquivo %1
+já existe. Deseja continuar?</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2301"/>
+        <source>The map %1 has been modified but not saved yet. Do you want to</source>
+        <translation>O mapa %1 foi modificado mas não foi salvo ainda. Deseja salvar?</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2791"/>
+        <source>Couldn&apos;t open map %1</source>
+        <translation>Não foi possível abrir o mapa %1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="435"/>
+        <source>Exit</source>
+        <translation>Sair</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="462"/>
+        <source>Redo</source>
+        <translation>Refazer</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Create URL to FATE</source>
+        <translation type="obsolete">Criar URL para FATE</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Include top and bottom position of images into branch</source>
+        <translation type="obsolete">Incluir posicionamento superior e inferior das imagens ao ramo</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Include left and right position of images into branch</source>
+        <translation type="obsolete">Incluir posicionamento esquerdo e direito das imagens ao ramo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="960"/>
+        <source>Hide link</source>
+        <translation>Ocultar ligação</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Note</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Nota</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>WWW Document (external)</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Documento de Internet (externo)</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Link to another vym map</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Ligar a outro mapa do VYM</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>subtree is scrolled</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">subárvore está contraída</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>subtree is temporary scrolled</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">subárvore está temporariamente contraída</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1164"/>
+        <source>Take care!</source>
+        <comment>Standardflag</comment>
+        <translation>Cuidado!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1168"/>
+        <source>Really?</source>
+        <comment>Standardflag</comment>
+        <translation>Mesmo?</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1172"/>
+        <source>ok!</source>
+        <comment>Standardflag</comment>
+        <translation>pronto!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1176"/>
+        <source>Not ok!</source>
+        <comment>Standardflag</comment>
+        <translation>Faltando!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1180"/>
+        <source>This won&apos;t work!</source>
+        <comment>Standardflag</comment>
+        <translation>Não vai funcionar!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1184"/>
+        <source>Good</source>
+        <comment>Standardflag</comment>
+        <translation>Bom</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1188"/>
+        <source>Bad</source>
+        <comment>Standardflag</comment>
+        <translation>Ruim</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1197"/>
+        <source>Time critical</source>
+        <comment>Standardflag</comment>
+        <translation>Falta de tempo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1203"/>
+        <source>Idea!</source>
+        <comment>Standardflag</comment>
+        <translation>Idéia!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1207"/>
+        <source>Important</source>
+        <comment>Standardflag</comment>
+        <translation>Importante</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1211"/>
+        <source>Unimportant</source>
+        <comment>Standardflag</comment>
+        <translation>Desnecessário</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1224"/>
+        <source>I like this</source>
+        <comment>Standardflag</comment>
+        <translation>Eu gosto</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1228"/>
+        <source>I do not like this</source>
+        <comment>Standardflag</comment>
+        <translation>Eu não gosto</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>I just love... </source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">Amor...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1241"/>
+        <source>Dangerous</source>
+        <comment>Standardflag</comment>
+        <translation>Perigoso</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1249"/>
+        <source>This will help</source>
+        <comment>Standardflag</comment>
+        <translation>Vai ajudar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1520"/>
+        <source>About VYM</source>
+        <translation>Sobre VYM</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2139"/>
+        <source>Import</source>
+        <translation>Importar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="399"/>
+        <source>KDE Bookmarks</source>
+        <translation>Favoritos KDE</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Export as ASCII</source>
+        <translation type="obsolete">Exportar como texto</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2249"/>
+        <source>(still experimental)</source>
+        <translation>(ainda em testes)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2221"/>
+        <source>Export as LaTeX</source>
+        <translation>Exportar como LaTeX</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="420"/>
+        <source>&amp;Print</source>
+        <translation>Im&amp;primir</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2269"/>
+        <source>Export to</source>
+        <translation>Exportar para</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="766"/>
+        <source>Hide object in exports</source>
+        <translation>Ocultar objeto ao exportar</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Hide object in exported maps</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">Ocultar objeto ao exportar mapa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1463"/>
+        <source>Use hide flag during exports </source>
+        <translation>Usar marcação de ocultação ao exportar </translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="685"/>
+        <source>Open URL in new tab</source>
+        <translation>Abrir URL em nova aba</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3819"/>
+        <source>Warning</source>
+        <translation>Aviso</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3749"/>
+        <source>Couldn&apos;t find a viewer to open %1.
+</source>
+        <translation>Não foi possível encontrar um programa para abrir %1.
+</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3821"/>
+        <source>Please use Settings-&gt;</source>
+        <translation>Por favor use Configurações-&gt;</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3253"/>
+        <source>Set application to open an URL</source>
+        <translation>Definir aplicação externa para abrir URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2498"/>
+        <source>Couldn&apos;t start %1 to open a new tab in %2.</source>
+        <translation>Não foi possível executar %1 para abrir uma nova aba em %2.</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3750"/>
+        <source>Set application to open PDF files</source>
+        <translation>Definir aplicação externa para abrir PDF</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1192"/>
+        <source>Oh no!</source>
+        <comment>Standardflag</comment>
+        <translation>Ahh não!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1200"/>
+        <source>Call...</source>
+        <comment>Standardflag</comment>
+        <translation>Telefonar...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1215"/>
+        <source>Very important!</source>
+        <comment>Standardflag</comment>
+        <translation>Muito importante!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1219"/>
+        <source>Very unimportant!</source>
+        <comment>Standardflag</comment>
+        <translation>Desprezível!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1232"/>
+        <source>Rose</source>
+        <comment>Standardflag</comment>
+        <translation>Rosa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1238"/>
+        <source>Surprise!</source>
+        <comment>Standardflag</comment>
+        <translation>Surpresa!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1245"/>
+        <source>Info</source>
+        <comment>Standardflag</comment>
+        <translation>Informação</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="350"/>
+        <source>Firefox Bookmarks</source>
+        <translation>Favoritos do Firefox</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1039"/>
+        <source>Show Note Editor</source>
+        <translation>Mostrar Editor de Notas</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Show history window</source>
+        <translation type="obsolete">Mostrar janela de histórico</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2079"/>
+        <source>Bookmarks</source>
+        <translation>Favoritos</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2513"/>
+        <source>Couldn&apos;t start %1 to open a new tab</source>
+        <translation>Não foi possível executar %1 para abrir uma nova aba</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Export map as image</source>
+        <translation type="obsolete">Exportar mapa como imagem</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1154"/>
+        <source>Standard Flags</source>
+        <comment>Standard Flag Toolbar</comment>
+        <translation>Emblemas Padrões</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2289"/>
+        <source>Couldn&apos;t find configuration for export to Open Office
+</source>
+        <translation>Não foi possível encontrar configuração para exportar para OpenOffice.org
+</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2431"/>
+        <source>No matches found for &quot;%1&quot;</source>
+        <translation>Nenhum resultado para &quot;%1&quot;</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="297"/>
+        <source>&amp;Map</source>
+        <translation>&amp;Mapa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="692"/>
+        <source>Open all URLs in subtree</source>
+        <translation>Abrir todas URLs da subárvore</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="745"/>
+        <source>Open all vym links in subtree</source>
+        <translation>Abrir todas ligações da subárvore</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Couldn&apos;t create temporary directory before load
+</source>
+        <translation type="obsolete">Não foi possível criar diretório temporário antes de carregar
+</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Couldn&apos;t create temporary directory before save
+</source>
+        <translation type="obsolete">Não foi possível criar diretório temporário antes de salvar
+</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2518"/>
+        <source>Sorry, currently only Konqueror and Mozilla support tabbed browsing.</source>
+        <translation>Navegação por abas só é compatível pelos navegadores Konqueror e Mozilla.</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>&amp;New...</source>
+        <comment>File menu</comment>
+        <translation type="obsolete">&amp;Novo...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="302"/>
+        <source>New map</source>
+        <comment>Status tip File menu</comment>
+        <translation>Novo mapa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="315"/>
+        <source>&amp;Open...</source>
+        <comment>File menu</comment>
+        <translation>&amp;Abrir...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="316"/>
+        <source>Open</source>
+        <comment>Status tip File menu</comment>
+        <translation>Abrir</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="322"/>
+        <source>Open Recent</source>
+        <comment>File menu</comment>
+        <translation>Abrir Recentes</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="325"/>
+        <source>&amp;Save...</source>
+        <comment>File menu</comment>
+        <translation>&amp;Salvar...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="326"/>
+        <source>Save</source>
+        <comment>Status tip file menu</comment>
+        <translation>Salvar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="333"/>
+        <source>Save &amp;As...</source>
+        <comment>File menu</comment>
+        <translation>Salvar &amp;Como...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="334"/>
+        <source>Save &amp;As</source>
+        <comment>Status tip file menu</comment>
+        <translation>Salvar &amp;Como</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="340"/>
+        <source>Import</source>
+        <comment>File menu</comment>
+        <translation>Importar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="350"/>
+        <source>Import %1</source>
+        <comment>Status tip file menu</comment>
+        <translation>Importar %1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="343"/>
+        <source>KDE bookmarks</source>
+        <translation>Favoritos KDE</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="349"/>
+        <source>Firefox Bookmarks</source>
+        <comment>File menu</comment>
+        <translation>Favoritos do Firefox</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="361"/>
+        <source>Import %1</source>
+        <comment>status tip file menu</comment>
+        <translation>Importar %1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="365"/>
+        <source>Import Dir%1</source>
+        <comment>File menu</comment>
+        <translation>Importar Diretório %1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="366"/>
+        <source>Import directory structure (experimental)</source>
+        <comment>status tip file menu</comment>
+        <translation>Importar diretório (em testes)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="370"/>
+        <source>Export</source>
+        <comment>File menu</comment>
+        <translation>Exportar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="372"/>
+        <source>Image%1</source>
+        <comment>File export menu</comment>
+        <translation>Imagem %1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="373"/>
+        <source>Export map as image</source>
+        <comment>status tip file menu</comment>
+        <translation>Exportar mapa como imagem</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="378"/>
+        <source>Export in Open Document Format used e.g. in Open Office </source>
+        <comment>status tip file menu</comment>
+        <translation>Exportar para formato Open Document Formato, ex: usado por OpenOffice.org</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="384"/>
+        <source>Export as %1</source>
+        <comment>status tip file menu</comment>
+        <translation>Exportar como %1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="384"/>
+        <source> webpage (XHTML)</source>
+        <comment>status tip file menu</comment>
+        <translation>página (XHTML)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="414"/>
+        <source>Export as %1</source>
+        <translation>Exportar como %1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="398"/>
+        <source>KDE Bookmarks</source>
+        <comment>File menu</comment>
+        <translation>Favoritos KDE</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="421"/>
+        <source>Print</source>
+        <comment>File menu</comment>
+        <translation>Imprimir</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="428"/>
+        <source>&amp;Close Map</source>
+        <comment>File menu</comment>
+        <translation>&amp;Fechar Mapa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="434"/>
+        <source>E&amp;xit</source>
+        <comment>File menu</comment>
+        <translation>Sai&amp;r</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="445"/>
+        <source>&amp;Actions toolbar</source>
+        <comment>Toolbar name</comment>
+        <translation>Barra de &amp;Ações</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="448"/>
+        <source>&amp;Edit</source>
+        <comment>Edit menu</comment>
+        <translation>&amp;Editar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="452"/>
+        <source>&amp;Undo</source>
+        <comment>Edit menu</comment>
+        <translation>Desfa&amp;zer</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="461"/>
+        <source>&amp;Redo</source>
+        <comment>Edit menu</comment>
+        <translation>&amp;Refazer</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="470"/>
+        <source>&amp;Copy</source>
+        <comment>Edit menu</comment>
+        <translation>&amp;Copiar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="479"/>
+        <source>Cu&amp;t</source>
+        <comment>Edit menu</comment>
+        <translation>Recor&amp;tar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="488"/>
+        <source>&amp;Paste</source>
+        <comment>Edit menu</comment>
+        <translation>C&amp;olar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="514"/>
+        <source>Edit heading</source>
+        <comment>Edit menu</comment>
+        <translation>Editar tópico</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="523"/>
+        <source>Delete Selection</source>
+        <comment>Edit menu</comment>
+        <translation>Apagar seleção</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="544"/>
+        <source>Add branch as child</source>
+        <comment>Edit menu</comment>
+        <translation>Adicionar ramo como filho</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="569"/>
+        <source>Add branch (insert)</source>
+        <comment>Edit menu</comment>
+        <translation>Adicionar ramo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="587"/>
+        <source>Add branch above</source>
+        <comment>Edit menu</comment>
+        <translation>Adicionar ramo acima</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="605"/>
+        <source>Add branch below</source>
+        <comment>Edit menu</comment>
+        <translation>Adicionar ramo abaixo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="613"/>
+        <source>Move up</source>
+        <comment>Edit menu</comment>
+        <translation>Mover acima</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="622"/>
+        <source>Move down</source>
+        <comment>Edit menu</comment>
+        <translation>Mover abaixo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="643"/>
+        <source>Scroll branch</source>
+        <comment>Edit menu</comment>
+        <translation>Contrair ramo</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Unscroll all scrolled branches</source>
+        <comment>Edit menu</comment>
+        <translation type="obsolete">Expandir ramos contraídos</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="668"/>
+        <source>Find...</source>
+        <comment>Edit menu</comment>
+        <translation>Pesquisar...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="676"/>
+        <source>Open URL</source>
+        <comment>Edit menu</comment>
+        <translation>Abrir URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="684"/>
+        <source>Open URL in new tab</source>
+        <comment>Edit menu</comment>
+        <translation>Abrir URL em nova aba</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="691"/>
+        <source>Open all URLs in subtree</source>
+        <comment>Edit menu</comment>
+        <translation>Abrir todas URLs da subárvore</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="698"/>
+        <source>Edit URL...</source>
+        <comment>Edit menu</comment>
+        <translation>Editar URL...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="716"/>
+        <source>Use heading for URL</source>
+        <comment>Edit menu</comment>
+        <translation>Usar tópico como URL</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Create URL to Bugzilla</source>
+        <comment>Edit menu</comment>
+        <translation type="obsolete">Criar URL para o Bugzilla</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Create URL to FATE</source>
+        <comment>Edit menu</comment>
+        <translation type="obsolete">Criar URL para FATE</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="737"/>
+        <source>Open linked map</source>
+        <comment>Edit menu</comment>
+        <translation>Abrir mapa ligado</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="744"/>
+        <source>Open all vym links in subtree</source>
+        <comment>Edit menu</comment>
+        <translation>Abrir todas ligações da subárvore</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="752"/>
+        <source>Edit vym link...</source>
+        <comment>Edit menu</comment>
+        <translation>Editar ligação...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="759"/>
+        <source>Delete vym link</source>
+        <comment>Edit menu</comment>
+        <translation>Apagar ligação</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="765"/>
+        <source>Hide in exports</source>
+        <comment>Edit menu</comment>
+        <translation>Ocultar ao exportar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="774"/>
+        <source>Edit Map Info...</source>
+        <comment>Edit menu</comment>
+        <translation>Editar Informações...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="781"/>
+        <source>Add map (insert)</source>
+        <comment>Edit menu</comment>
+        <translation>Adicionar mapa (novo)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="789"/>
+        <source>Add map (replace)</source>
+        <comment>Edit menu</comment>
+        <translation>Adicionar mapa (substituir)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="797"/>
+        <source>Save selection</source>
+        <comment>Edit menu</comment>
+        <translation>Salvar seleção</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="805"/>
+        <source>Remove only branch </source>
+        <comment>Edit menu</comment>
+        <translation>Remover apenas ramos</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="815"/>
+        <source>Remove childs</source>
+        <comment>Edit menu</comment>
+        <translation>Remover filhos</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="824"/>
+        <source>Select upper branch</source>
+        <comment>Edit menu</comment>
+        <translation>Selecionar ramo mais acima</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="830"/>
+        <source>Select lower branch</source>
+        <comment>Edit menu</comment>
+        <translation>Selecionar ramo mais abaixo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="836"/>
+        <source>Select left branch</source>
+        <comment>Edit menu</comment>
+        <translation>Selecionar ramo da esquerda</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="842"/>
+        <source>Select child branch</source>
+        <comment>Edit menu</comment>
+        <translation>Selecionar ramo filho</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="848"/>
+        <source>Select first branch</source>
+        <comment>Edit menu</comment>
+        <translation>Selecionar primeiro ramo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="858"/>
+        <source>Select last branch</source>
+        <comment>Edit menu</comment>
+        <translation>Selecionar último ramo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="869"/>
+        <source>Add Image...</source>
+        <comment>Edit menu</comment>
+        <translation>Adicionar Imagem...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="887"/>
+        <source>F&amp;ormat</source>
+        <comment>Format menu</comment>
+        <translation>&amp;Formatação</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="889"/>
+        <source>Format Actions</source>
+        <comment>Format Toolbar name</comment>
+        <translation>Ações de Formatação</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="900"/>
+        <source>Pic&amp;k color</source>
+        <comment>Edit menu</comment>
+        <translation>&amp;Capturar cor</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="910"/>
+        <source>Color &amp;branch</source>
+        <comment>Edit menu</comment>
+        <translation>Cor do &amp;ramo</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="920"/>
+        <source>Color sub&amp;tree</source>
+        <comment>Edit menu</comment>
+        <translation>Cor da subár&amp;vore</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>No Frame</source>
+        <comment>Branch attribute</comment>
+        <translation type="obsolete">Nenhuma Quadro</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>RectangleBranch attribute</source>
+        <translation type="obsolete">Propriedade do ramo retangular</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Include images vertically</source>
+        <comment>Branch attribute</comment>
+        <translation type="obsolete">Incluir imagens verticalmente</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Include images horizontally</source>
+        <comment>Branch attribute</comment>
+        <translation type="obsolete">Incluir imagens horizontalmente</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="959"/>
+        <source>Hide link if object is not selected</source>
+        <comment>Branch attribute</comment>
+        <translation>Ocultar ligações se objeto não for selecionado</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="966"/>
+        <source>&amp;Use color of heading for link</source>
+        <comment>Branch attribute</comment>
+        <translation>&amp;Usar cor do tópico para ligações</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1002"/>
+        <source>View Actions</source>
+        <comment>View Toolbar name</comment>
+        <translation>Visualizar Ações</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1008"/>
+        <source>reset Zoom</source>
+        <comment>View action</comment>
+        <translation>Normal</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1015"/>
+        <source>Zoom in</source>
+        <comment>View action</comment>
+        <translation>Ampliar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1022"/>
+        <source>Zoom out</source>
+        <comment>View action</comment>
+        <translation>Reduzir</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1038"/>
+        <source>Show Note Editor</source>
+        <comment>View action</comment>
+        <translation>Mostrar Editor de Notas</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Show history window</source>
+        <comment>View action</comment>
+        <translation type="obsolete">Mostrar janela de histórico</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Next Window</source>
+        <comment>View action</comment>
+        <translation type="obsolete">Próxima Janela</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>Previous Window</source>
+        <comment>View action</comment>
+        <translation type="obsolete">Janela Anterior</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1095"/>
+        <source>Modes when using modifiers</source>
+        <comment>Modifier Toolbar name</comment>
+        <translation>Modos quando usando modificadores</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1100"/>
+        <source>Use modifier to color branches</source>
+        <comment>Mode modifier</comment>
+        <translation>Usar modificador para colorir ramos</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1108"/>
+        <source>Use modifier to copy</source>
+        <comment>Mode modifier</comment>
+        <translation>Usar modificador para copiar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1115"/>
+        <source>Use modifier to draw xLinks</source>
+        <comment>Mode modifier</comment>
+        <translation>Usar modificador para criar Ligações Externas</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1380"/>
+        <source>Set application to open pdf files</source>
+        <comment>Settings action</comment>
+        <translation>Definir aplicação externa para abrir PDF</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1385"/>
+        <source>Set application to open external links</source>
+        <comment>Settings action</comment>
+        <translation>Definir aplicação externa para abrir URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1426"/>
+        <source>Edit branch after adding it</source>
+        <comment>Settings action</comment>
+        <translation>Editar ramo depois de adicionar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1433"/>
+        <source>Select branch after adding it</source>
+        <comment>Settings action</comment>
+        <translation>Selecionar ramo depois de adicionar</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1440"/>
+        <source>Select existing heading</source>
+        <comment>Settings action</comment>
+        <translation>Selecionar tópico</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1447"/>
+        <source>Delete key</source>
+        <comment>Settings action</comment>
+        <translation>Tecla Delete</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1455"/>
+        <source>Exclusive flags</source>
+        <comment>Settings action</comment>
+        <translation>Emblemas exclusivos</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1462"/>
+        <source>Use hide flags</source>
+        <comment>Settings action</comment>
+        <translation>Usar emblemas ocultos</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1506"/>
+        <source>&amp;Help</source>
+        <comment>Help menubar entry</comment>
+        <translation>A&amp;juda</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1509"/>
+        <source>Open VYM Documentation (pdf) </source>
+        <comment>Help action</comment>
+        <translation>Documentação do VYM (pdf)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1519"/>
+        <source>About VYM</source>
+        <comment>Help action</comment>
+        <translation>Sobre VYM</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1524"/>
+        <source>About QT</source>
+        <comment>Help action</comment>
+        <translation>Sobre QT</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1552"/>
+        <source>Remove</source>
+        <comment>Context menu name</comment>
+        <translation>Remover</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>URLs and vymLinks</source>
+        <comment>Context menu name</comment>
+        <translation type="obsolete">URLs e ligações</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1591"/>
+        <source>Edit XLink</source>
+        <comment>Context menu name</comment>
+        <translation>Editar Ligação Externa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1592"/>
+        <source>Follow XLink</source>
+        <comment>Context menu name</comment>
+        <translation>Seguir Ligação Externa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1599"/>
+        <source>Save image</source>
+        <comment>Context action</comment>
+        <translation>Salvar imagem</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>The directory %1 is not empty.
+Do you risk to overwrite its contents?</source>
+        <comment>write directory</comment>
+        <translation type="obsolete">O diretório %1 não está vazio.
+Deseja sobrescrever o conteúdo?</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="301"/>
+        <source>&amp;New map</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="308"/>
+        <source>&amp;Copy to new map</source>
+        <comment>File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="309"/>
+        <source>Copy selection to mapcenter of a new map</source>
+        <comment>Status tip File menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="532"/>
+        <source>Add mapcenter</source>
+        <comment>Canvas context menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="631"/>
+        <source>Sort children</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="661"/>
+        <source>Unscroll childs</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="662"/>
+        <source>Unscroll all scrolled branches in selected subtree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="707"/>
+        <source>Edit local URL...</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="708"/>
+        <source>Edit local URL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="723"/>
+        <source>Create URL to Novell Bugzilla</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="724"/>
+        <source>Create URL to Novell Bugzilla</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="730"/>
+        <source>Create URL to Novell FATE</source>
+        <comment>Edit menu</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="731"/>
+        <source>Create URL to Novell FATE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="874"/>
+        <source>Property window</source>
+        <comment>Dialog to edit properties of selection</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="875"/>
+        <source>Set properties for selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="939"/>
+        <source>Linkstyle Curve</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="951"/>
+        <source>Linkstyle Thick Curve</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="974"/>
+        <source>Set &amp;Link Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="980"/>
+        <source>Set &amp;Selection Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="981"/>
+        <source>Set Selection Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="992"/>
+        <source>Set &amp;Background image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="993"/>
+        <source>Set Background image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1029"/>
+        <source>Show selection</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1030"/>
+        <source>Show selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1047"/>
+        <source>History Window</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1048"/>
+        <source>Show History Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1060"/>
+        <source>Antialiasing</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1061"/>
+        <source>Antialiasing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1068"/>
+        <source>Smooth pixmap transformations</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1076"/>
+        <source>Next Map</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1082"/>
+        <source>Previous Map</source>
+        <comment>View action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1136"/>
+        <source>Note</source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished">Nota</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1139"/>
+        <source>URL to Document </source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1142"/>
+        <source>Link to another vym map</source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished">Ligar a outro mapa do VYM</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1145"/>
+        <source>subtree is scrolled</source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished">subárvore está contraída</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1148"/>
+        <source>subtree is temporary scrolled</source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished">subárvore está temporariamente contraída</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1151"/>
+        <source>Hide object in exported maps</source>
+        <comment>SystemFlag</comment>
+        <translation type="unfinished">Ocultar objeto ao exportar mapa</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1235"/>
+        <source>I just love...</source>
+        <comment>Standardflag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1256"/>
+        <source>Important</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished">Importante</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1261"/>
+        <source>Priority</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1265"/>
+        <source>Back</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1268"/>
+        <source>Forward</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1271"/>
+        <source>Look here</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1274"/>
+        <source>Dangerous</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished">Perigoso</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1277"/>
+        <source>Don&apos;t forget</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1280"/>
+        <source>Flag</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1284"/>
+        <source>Home</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1288"/>
+        <source>Telephone</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1291"/>
+        <source>Music</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1294"/>
+        <source>Mailbox</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1297"/>
+        <source>Maix</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1300"/>
+        <source>Password</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1303"/>
+        <source>To be improved</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1306"/>
+        <source>Stop</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1309"/>
+        <source>Magic</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1312"/>
+        <source>To be discussed</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1315"/>
+        <source>Reminder</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1318"/>
+        <source>Excellent</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1321"/>
+        <source>Linux</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1324"/>
+        <source>Sweet</source>
+        <comment>Freemind-Flag</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1390"/>
+        <source>Set path for macros</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1391"/>
+        <source>Set path for macros</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1395"/>
+        <source>Set number of undo levels</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1396"/>
+        <source>Set number of undo levels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1402"/>
+        <source>Autosave</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1403"/>
+        <source>Autosave</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1410"/>
+        <source>Autosave time</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1411"/>
+        <source>Autosave time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1416"/>
+        <source>Write backup file on save</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1417"/>
+        <source>Write backup file on save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1469"/>
+        <source>Animation</source>
+        <comment>Settings action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1470"/>
+        <source>Animation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1514"/>
+        <source>Open VYM example maps </source>
+        <comment>Help action</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1515"/>
+        <source>Open VYM example maps </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1569"/>
+        <source>References (URLs, vymLinks, ...)</source>
+        <comment>Context menu name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1645"/>
+        <source>&amp;%1 %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2108"/>
+        <source>Load Freemind map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2202"/>
+        <source>Export as CSV</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3268"/>
+        <source>Directory with vym macros:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3300"/>
+        <source>QInputDialog::getInteger()</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3281"/>
+        <source>Number of undo/redo levels:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3286"/>
+        <source>Settings have been changed. The next map opened will have &quot;%1&quot; undo/redo levels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3301"/>
+        <source>Number of seconds before autosave:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3411"/>
+        <source>History for %1</source>
+        <comment>Window Caption</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3735"/>
+        <source>Couldn&apos;t find the documentation %1 in:
+%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3771"/>
+        <source>Load vym example map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3820"/>
+        <source>Couldn&apos;t find a macro at  %1.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3821"/>
+        <source>Set directory for vym macros</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>MapEditor</name>
+    <message>
+        <location filename="../mapeditor.cpp" line="1703"/>
+        <source>Critical Parse Error</source>
+        <translation>Erro Crítico ao Ler</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4136"/>
+        <source>Overwrite</source>
+        <translation>Sobrescrever</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4137"/>
+        <source>Cancel</source>
+        <translation>Cancelar</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2129"/>
+        <source>Critical Export Error</source>
+        <translation>Erro Crítico ao Exportar</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2432"/>
+        <source>Critical Error</source>
+        <translation>Erro Crítico</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3474"/>
+        <source>Enter URL:</source>
+        <translation>Informe URL:</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>vym map</source>
+        <translation type="obsolete">mapa VYM</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4067"/>
+        <source>Images</source>
+        <translation>Imagens</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4314"/>
+        <source>Critical Import Error</source>
+        <translation>Erro Crítico ao Importar</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>New Map</source>
+        <comment>Heading of mapcenter in new map</comment>
+        <translation type="obsolete">Novo Mapa</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4130"/>
+        <source>The file %1 exists already.
+Do you want to overwrite it?</source>
+        <translation>O arquivo %1 já existe.
+Deseja sobrescrevê-lo?</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2129"/>
+        <source>MapEditor::exportXML couldn&apos;t open %1</source>
+        <translation>MapEditor::exportXML não foi possível abrir %1</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4314"/>
+        <source>Cannot find the directory %1</source>
+        <translation>Não foi possível encontrar o diretório %1</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3579"/>
+        <source>Link to another map</source>
+        <translation>Ligar a outro mapa</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4072"/>
+        <source>Load image</source>
+        <translation>Carregar imagem</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4362"/>
+        <source>Choose directory structure to import</source>
+        <translation>Escolha o diretório para importar</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="110"/>
+        <source>unnamed</source>
+        <translation>sem nome</translation>
+    </message>
+    <message>
+        <location filename="" line="7"/>
+        <source>History for </source>
+        <translation type="obsolete">Histórico</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4116"/>
+        <source>Save image</source>
+        <translation>Salvar imagem</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2426"/>
+        <source>Critical Parse Error while reading %1</source>
+        <translation>Erro Crítico ao ler %1</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2432"/>
+        <source>Could not read %1</source>
+        <translation>Não foi possível ler %1</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3324"/>
+        <source>Warning</source>
+        <translation>Aviso</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3324"/>
+        <source>Can&apos;t get color of heading,
+there&apos;s no branch selected</source>
+        <translation>Não é possível usar cor do tópico,
+não existe nenhum ramo selecionado</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1795"/>
+        <source>Critical Load Error</source>
+        <translation type="unfinished">Erro Crítico ao Carregar</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1602"/>
+        <source>Couldn&apos;t create temporary directory before load
+</source>
+        <translation type="unfinished">Não foi possível criar diretório temporário antes de carregar
+</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1645"/>
+        <source>Couldn&apos;t find a map (*.xml) in .vym archive.
+</source>
+        <translation type="unfinished">Não foi possível encontrar um mapa (.xml) dentro do arquivo .vym.
+</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1741"/>
+        <source>The map %1
+did not use the compressed vym file format.
+Writing it uncompressed will also write images 
+and flags and thus may overwrite files in the given directory
+
+Do you want to write the map</source>
+        <translation type="unfinished">O mapa %1
+não usa o formato de arquivo comprimido.
+Salvar no formato descomprimido também salvará imagens
+e emblemas que podem sobrescrever arquivos já presentes no diretório.
+Deseja continuar salvando este mapa?</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1746"/>
+        <source>compressed (vym default)</source>
+        <translation type="unfinished">comprimido (padrão)</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1747"/>
+        <source>uncompressed</source>
+        <translation type="unfinished">descomprimido</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1782"/>
+        <source>Save Error</source>
+        <translation type="unfinished">Erro ao Salvar</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1778"/>
+        <source>%1
+could not be removed before saving</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1783"/>
+        <source>%1
+could not be renamed before saving</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1796"/>
+        <source>Couldn&apos;t create temporary directory before save
+</source>
+        <translation type="unfinished">Não foi possível criar diretório temporário antes de salvar
+</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2033"/>
+        <source>Export map as image</source>
+        <translation type="unfinished">Exportar mapa como imagem</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2110"/>
+        <source>Export XML to directory</source>
+        <translation type="unfinished">Exportar XML para diretório</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2260"/>
+        <source>Autosave disabled during undo.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3268"/>
+        <source>Load background image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3489"/>
+        <source>Text</source>
+        <comment>Filedialog</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3490"/>
+        <source>Spreadsheet</source>
+        <comment>Filedialog</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3491"/>
+        <source>Textdocument</source>
+        <comment>Filedialog</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3492"/>
+        <source>Images</source>
+        <comment>Filedialog</comment>
+        <translation type="unfinished">Imagens</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3495"/>
+        <source>Set URL to a local file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3727"/>
+        <source>%1 items on map
+</source>
+        <comment>Info about map</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="5291"/>
+        <source>The file of the map  on disk has changed:
+
+   %1
+
+Do you want to reload that map with the new file?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="5297"/>
+        <source>Reload</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="5298"/>
+        <source>Ignore</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="../file.cpp" line="439"/>
+        <source>This is not an image.</source>
+        <translation>Imagem inválida.</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="557"/>
+        <source>Critical Export Error</source>
+        <translation>Erro Crítico ao Exportar</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="352"/>
+        <source>Could not write %1</source>
+        <translation>Não foi possível criar %1</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="353"/>
+        <source>Export failed.</source>
+        <translation>Falha ao exportar.</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="524"/>
+        <source>Check &quot;%1&quot; in
+%2</source>
+        <translation>Verifique &quot;%1&quot; em
+%2</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="557"/>
+        <source>Could not read %1</source>
+        <translation>Não foi possível ler %1</translation>
+    </message>
+    <message>
+        <location filename="../xsltproc.cpp" line="82"/>
+        <source>Critical Error</source>
+        <translation>Erro Crítico</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="272"/>
+        <source>Couldn&apos;t start zip to compress data.</source>
+        <translation>Não foi possível executar &quot;zip&quot; para comprimir dados.</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="282"/>
+        <source>zip didn&apos;t exit normally</source>
+        <translation>&quot;zip&quot; não terminou normalmente</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="316"/>
+        <source>Couldn&apos;t start unzip to decompress data.</source>
+        <translation>Não foi possível executar &quot;unzip&quot; para descomprimir dados.</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="326"/>
+        <source>unzip didn&apos;t exit normally</source>
+        <translation>&quot;unzip&quot; não terminou normalmente.</translation>
+    </message>
+    <message>
+        <location filename="../xsltproc.cpp" line="77"/>
+        <source>Could not start %1</source>
+        <translation>Não foi possível executar %1</translation>
+    </message>
+    <message>
+        <location filename="../xsltproc.cpp" line="83"/>
+        <source>%1 didn&apos;t exit normally</source>
+        <translation>%1 não terminou normalmente</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="77"/>
+        <source>The file %1 exists already.
+Do you want to overwrite it?</source>
+        <translation>O arquivo %1 já existe.
+Deseja sobrescrevê-lo?</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="105"/>
+        <source>Overwrite</source>
+        <translation>Sobrescrever</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="106"/>
+        <source>Cancel</source>
+        <translation>Cancelar</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="441"/>
+        <source>Sorry, no preview for
+multiple selected files.</source>
+        <translation>Nenhuma previsualização
+para os arquivos selecionados.</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="294"/>
+        <source>Exporting the %1 bookmarks will overwrite
+your existing bookmarks file.</source>
+        <translation>Exportando o %1 como favoritos vai sobrescrever
+seus favoritos atuais.</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="295"/>
+        <source>Warning: Overwriting %1 bookmarks</source>
+        <translation>Aviso: Sobrescrevendo %1 favoritos</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="278"/>
+        <source>Warning</source>
+        <translation>Aviso</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="279"/>
+        <source>Couldn&apos;t find script %1
+to notifiy Browsers of changed bookmarks.</source>
+        <translation>Não foi possível encontrar o script %1
+para notificar navegadores da alteração dos favoritos.</translation>
+    </message>
+    <message>
+        <location filename="../main.cpp" line="192"/>
+        <source>Error</source>
+        <translation>Erro</translation>
+    </message>
+    <message>
+        <location filename="../imports.cpp" line="17"/>
+        <source>Couldn&apos;t access temporary directory
+</source>
+        <translation>Não foi possível entrar no diretório temporário
+</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="131"/>
+        <source>Export as ASCII</source>
+        <translation type="unfinished">Exportar como texto</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="131"/>
+        <source>(still experimental)</source>
+        <translation type="unfinished">(ainda em testes)</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="99"/>
+        <source>The directory %1 is not empty.
+Do you risk to overwrite its contents?</source>
+        <comment>write directory</comment>
+        <translation type="unfinished">O diretório %1 não está vazio.
+Deseja sobrescrever o conteúdo?</translation>
+    </message>
+    <message>
+        <location filename="../main.cpp" line="193"/>
+        <source>Couldn&apos;t open %1.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ShowTextDialog</name>
+    <message>
+        <location filename="../showtextdialog.ui" line="16"/>
+        <source>Dialog</source>
+        <translation>Diálogo</translation>
+    </message>
+    <message>
+        <location filename="../showtextdialog.ui" line="52"/>
+        <source>Close</source>
+        <translation>Fechar</translation>
+    </message>
+</context>
+<context>
+    <name>SimpleScriptEditor</name>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="61"/>
+        <source>Save script</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="73"/>
+        <source>The file %1
+exists already.
+Do you want to overwrite it?</source>
+        <comment>dialog &apos;save as&apos;</comment>
+        <translation type="unfinished">O arquivo %1
+já existe.
+Deseja sobrescrevê-lo?</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="78"/>
+        <source>Overwrite</source>
+        <translation type="unfinished">Sobrescrever</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="79"/>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="105"/>
+        <source>Load script</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="116"/>
+        <source>Error</source>
+        <translation type="unfinished">Erro</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="117"/>
+        <source>Couldn&apos;t open %1.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="13"/>
+        <source>Simple Script Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="38"/>
+        <source>Save as</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="48"/>
+        <source>Save</source>
+        <translation type="unfinished">Salvar</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="51"/>
+        <source>Qt::CTRL + Qt::Key_S</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="58"/>
+        <source>Open</source>
+        <translation type="unfinished">Abrir</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="61"/>
+        <source>Qt::CTRL +Qt::Key_O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="68"/>
+        <source>Run</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="71"/>
+        <source>Qt::CTRL + Qt::Key_R</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="78"/>
+        <source>Close</source>
+        <translation type="unfinished">Fechar</translation>
+    </message>
+</context>
+<context>
+    <name>TextEditor</name>
+    <message>
+        <location filename="../texteditor.cpp" line="202"/>
+        <source>&amp;Import...</source>
+        <translation>&amp;Importar...</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="211"/>
+        <source>&amp;Export...</source>
+        <translation>E&amp;xportar...</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="219"/>
+        <source>Export &amp;As... (HTML)</source>
+        <translation>Exportar Como... (&amp;HTML)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="225"/>
+        <source>Export &amp;As...(ASCII)</source>
+        <translation>Exportar Como... (&amp;Texto)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="675"/>
+        <source>Print Note</source>
+        <translation>Imprimir Nota</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="233"/>
+        <source>&amp;Print...</source>
+        <translation>Im&amp;primir...</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="246"/>
+        <source>&amp;Edit</source>
+        <translation>&amp;Editar</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="249"/>
+        <source>&amp;Undo</source>
+        <translation>Desfa&amp;zer</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="257"/>
+        <source>&amp;Redo</source>
+        <translation>&amp;Refazer</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="266"/>
+        <source>Select and copy &amp;all</source>
+        <translation>Selecionar e copiar &amp;tudo</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="273"/>
+        <source>&amp;Copy</source>
+        <translation>&amp;Copiar</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="281"/>
+        <source>Cu&amp;t</source>
+        <translation>Recor&amp;tar</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="289"/>
+        <source>&amp;Paste</source>
+        <translation>C&amp;olar</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="297"/>
+        <source>&amp;Delete All</source>
+        <translation>&amp;Apagar Tudo</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="314"/>
+        <source>&amp;Font hint</source>
+        <translation>&amp;Fonte Sugerida</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="347"/>
+        <source>&amp;Color...</source>
+        <translation>&amp;Cor...</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="353"/>
+        <source>&amp;Bold</source>
+        <translation>&amp;Negrito</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="361"/>
+        <source>&amp;Italic</source>
+        <translation>&amp;Itálico</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="369"/>
+        <source>&amp;Underline</source>
+        <translation>&amp;Sublinhado</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="400"/>
+        <source>&amp;Left</source>
+        <translation>&amp;Esquerda</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="406"/>
+        <source>C&amp;enter</source>
+        <translation>Ce&amp;ntralizado</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="412"/>
+        <source>&amp;Right</source>
+        <translation>&amp;Direita</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="418"/>
+        <source>&amp;Justify</source>
+        <translation>&amp;Justificado</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="428"/>
+        <source>&amp;Settings</source>
+        <translation>&amp;Configurações</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="431"/>
+        <source>Set &amp;fixed font</source>
+        <translation>Definir fonte fi&amp;xa</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="437"/>
+        <source>Set &amp;variable font</source>
+        <translation>Definir fonte &amp;variável</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="443"/>
+        <source>&amp;fixed font is default</source>
+        <translation>Fonte fi&amp;xa como padrão</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="557"/>
+        <source>Export Note to single file</source>
+        <translation>Exportar Nota como Arquivo</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="645"/>
+        <source>Overwrite</source>
+        <translation>Sobrescrever</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="646"/>
+        <source>Cancel</source>
+        <translation>Cancelar</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="631"/>
+        <source>Export Note to single file (ASCII)</source>
+        <translation>Exportar Nota para Arquivo (Texto)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="380"/>
+        <source>Subs&amp;cript</source>
+        <translation>S&amp;ubscrito</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="388"/>
+        <source>Su&amp;perscript</source>
+        <translation>So&amp;brescrito</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="457"/>
+        <source>Note Editor</source>
+        <translation>Editor de Notas</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="310"/>
+        <source>F&amp;ormat</source>
+        <translation>&amp;Formatação</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="244"/>
+        <source>Edit Actions</source>
+        <translation>Ações de Edição</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="308"/>
+        <source>Format Actions</source>
+        <translation>Ações de Formatação</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="197"/>
+        <source>Note Actions</source>
+        <translation>Ações de Notas</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="38"/>
+        <source>Ready</source>
+        <comment>Statusbar message</comment>
+        <translation>Pronto</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="163"/>
+        <source>No filename available for this note.</source>
+        <comment>Statusbar message</comment>
+        <translation>Nenhum arquivo está disponível para esta nota.</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="39"/>
+        <source>Note Editor</source>
+        <comment>Window caption</comment>
+        <translation>Editor de Notas</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="199"/>
+        <source>&amp;Note</source>
+        <comment>Menubar</comment>
+        <translation>&amp;Nota</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="203"/>
+        <source>Import</source>
+        <comment>Status tip for Note menu</comment>
+        <translation>Importar</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="212"/>
+        <source>Export Note (HTML)</source>
+        <comment>Status tip for Note menu</comment>
+        <translation>Exportar Nota em HTML</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="220"/>
+        <source>Export Note As (HTML) </source>
+        <comment>Status tip for Note Menu</comment>
+        <translation>Exportar Nota em HTML</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="226"/>
+        <source>Export Note As (ASCII) </source>
+        <comment>Status tip for note menu</comment>
+        <translation>Exportar Nota em Texto</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="234"/>
+        <source>Print Note</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Imprimir Nota</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="250"/>
+        <source>Undo</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Desfazer</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="258"/>
+        <source>Redo</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Refazer</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="267"/>
+        <source>Select and copy all</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Selecionar e copiar tudo</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="274"/>
+        <source>Copy</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Copiar</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="282"/>
+        <source>Cut</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Recortar</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="290"/>
+        <source>Paste</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Colar</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="298"/>
+        <source>Delete all</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Apagar tudo</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="315"/>
+        <source>Toggle font hint for the whole text</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Usa sugestão de fonte enquanto digita</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="432"/>
+        <source>Set fixed font</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Definir fonta fixa</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="438"/>
+        <source>Set variable font</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Definir fonte variável</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="444"/>
+        <source>Used fixed font by default</source>
+        <comment>Status tip for note menu</comment>
+        <translation>Usar fonte fixa pro padrão</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="640"/>
+        <source>The file %1
+exists already.
+Do you want to overwrite it?</source>
+        <comment>dialog &apos;save note as&apos;</comment>
+        <translation>O arquivo %1
+já existe.
+Deseja sobrescrevê-lo?</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="589"/>
+        <source>Couldn&apos;t export note </source>
+        <comment>dialog &apos;save note as&apos;</comment>
+        <translation>Não foi possível exportar nota</translation>
+    </message>
+</context>
+<context>
+    <name>WarningDialog</name>
+    <message>
+        <location filename="../warningdialog.ui" line="13"/>
+        <source>VYM - Warning : Foo...</source>
+        <translation>VYM - Aviso : </translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.ui" line="106"/>
+        <source>showAgainBox</source>
+        <translation>showAgainBox</translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.ui" line="132"/>
+        <source>Cancel</source>
+        <translation>Cancelar</translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.ui" line="139"/>
+        <source>Ok</source>
+        <translation>OK</translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.cpp" line="11"/>
+        <source>Proceed</source>
+        <translation>Prosseguir</translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.cpp" line="15"/>
+        <source>Show this message again</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
diff --git a/lang/vym_ru.qm b/lang/vym_ru.qm
new file mode 100644 (file)
index 0000000..29cdfed
Binary files /dev/null and b/lang/vym_ru.qm differ
diff --git a/lang/vym_ru.ts b/lang/vym_ru.ts
new file mode 100644 (file)
index 0000000..6c68d9d
--- /dev/null
@@ -0,0 +1,3201 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<!DOCTYPE TS><TS version="1.1" language="ru_RU">\r
+<defaultcodec></defaultcodec>\r
+<context>\r
+    <name>AboutDialog</name>\r
+    <message>\r
+        <location filename="../aboutdialog.cpp" line="205"/>\r
+        <source>Ok</source>\r
+        <comment>Ok Button</comment>\r
+        <translation></translation>\r
+    </message>\r
+</context>\r
+<context>\r
+    <name>AboutTextBrowser</name>\r
+    <message>\r
+        <location filename="../aboutdialog.cpp" line="228"/>\r
+        <source>Please use Settings-&gt;</source>\r
+        <translation> Используйте пункт &quot;Настройки&quot;-&gt;</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../aboutdialog.cpp" line="228"/>\r
+        <source>Set application to open an URL</source>\r
+        <translation>Выберите приложение для открытия URL</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../aboutdialog.cpp" line="226"/>\r
+        <source>Warning</source>\r
+        <comment>About window</comment>\r
+        <translation>Внимание</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../aboutdialog.cpp" line="227"/>\r
+        <source>Couldn&apos;t find a viewer to open %1.\r
+</source>\r
+        <comment>About window</comment>\r
+        <translation>Не найдено приложение для %1.\r
+</translation>\r
+    </message>\r
+</context>\r
+<context>\r
+    <name>Attribute Dialog</name>\r
+    <message>\r
+        <location filename="../attributedialog.cpp" line="74"/>\r
+        <source>AttributeDialog - Edit definitions</source>\r
+        <translation></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../attributedialog.cpp" line="76"/>\r
+        <source>AttributeDialog - Edit %1</source>\r
+        <translation>Редактировать %1</translation>\r
+    </message>\r
+</context>\r
+<context>\r
+    <name>AttributeDialog</name>\r
+    <message>\r
+        <location filename="../attributedialog.cpp" line="48"/>\r
+        <source>Attributes</source>\r
+        <translation>Аттрибуты</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../attributedialog.cpp" line="49"/>\r
+        <source>Add key</source>\r
+        <translation>Добавить ключ</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../attributedialog.cpp" line="50"/>\r
+        <source>Close</source>\r
+        <translation>Закрыть</translation>\r
+    </message>\r
+</context>\r
+<context>\r
+    <name>AttributeWidget</name>\r
+    <message>\r
+        <location filename="../attributewidget.ui" line="13"/>\r
+        <source>Form</source>\r
+        <translation>Форма</translation>\r
+    </message>\r
+</context>\r
+<context>\r
+    <name>BranchPropertyWindow</name>\r
+    <message>\r
+        <location filename="../branchpropwindow.cpp" line="16"/>\r
+        <source>Property Editor</source>\r
+        <comment>Window caption</comment>\r
+        <translation>Редактор свойств</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../branchpropwindow.cpp" line="32"/>\r
+        <source>Name</source>\r
+        <comment>Branchprop window: Attribute name</comment>\r
+        <translation>Имя</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../branchpropwindow.cpp" line="33"/>\r
+        <source>Value</source>\r
+        <comment>Branchprop window: Attribute value</comment>\r
+        <translation>Значение</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../branchpropwindow.cpp" line="34"/>\r
+        <source>Type</source>\r
+        <comment>Branchprop window: Attribute type</comment>\r
+        <translation>Тип</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../branchpropwindow.ui" line="19"/>\r
+        <source>Branch Property Editor</source>\r
+        <translation>Редактор свойств ветви</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../branchpropwindow.ui" line="29"/>\r
+        <source>Frame</source>\r
+        <translation>Обрамление</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../branchpropwindow.ui" line="50"/>\r
+        <source>Geometry</source>\r
+        <translation>Форма</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../branchpropwindow.ui" line="63"/>\r
+        <source>No Frame</source>\r
+        <translation>Без обрамления</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../branchpropwindow.ui" line="68"/>\r
+        <source>Rectangle</source>\r
+        <translation>Прямоугольник</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../branchpropwindow.ui" line="73"/>\r
+        <source>Ellipse</source>\r
+        <translation>Эллипс</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../branchpropwindow.ui" line="94"/>\r
+        <source>Padding</source>\r
+        <translation>Отступы</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../branchpropwindow.ui" line="101"/>\r
+        <source>Borderline width</source>\r
+        <translation>Ширина границы</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../branchpropwindow.ui" line="151"/>\r
+        <source>Colors</source>\r
+        <translation>Цвета</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../branchpropwindow.ui" line="194"/>\r
+        <source>Borderline color</source>\r
+        <translation>Цвет границы</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../branchpropwindow.ui" line="217"/>\r
+        <source>Background color</source>\r
+        <translation>Цвет фона</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../branchpropwindow.ui" line="246"/>\r
+        <source>Layout</source>\r
+        <translation>Разметка</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../branchpropwindow.ui" line="254"/>\r
+        <source>Include images horizontally</source>\r
+        <translation>Размещать изображения горизонтально</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../branchpropwindow.ui" line="261"/>\r
+        <source>Include images vertically</source>\r
+        <translation>Размещать изображения вертикально</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../branchpropwindow.ui" line="284"/>\r
+        <source>Link</source>\r
+        <translation>Ссылка</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../branchpropwindow.ui" line="290"/>\r
+        <source>Hide link if unselected</source>\r
+        <translation>Скрыть невыбранную ссылку</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../branchpropwindow.ui" line="311"/>\r
+        <source>Attributes</source>\r
+        <translation>Аттрибуты</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../branchpropwindow.ui" line="337"/>\r
+        <source>+</source>\r
+        <translation>+</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../branchpropwindow.ui" line="344"/>\r
+        <source>-</source>\r
+        <translation>-</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../branchpropwindow.ui" line="413"/>\r
+        <source>Close</source>\r
+        <translation>Закрыть</translation>\r
+    </message>\r
+</context>\r
+<context>\r
+    <name>EditXLinkDialog</name>\r
+    <message>\r
+        <location filename="../editxlinkdialog.ui" line="24"/>\r
+        <source>Edit XLink</source>\r
+        <translation>Изменить XLink</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../editxlinkdialog.ui" line="62"/>\r
+        <source>XLink width:</source>\r
+        <translation>Ширина XLink:</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../editxlinkdialog.ui" line="78"/>\r
+        <source>Set color of heading</source>\r
+        <translation>Цвет заголовка</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../editxlinkdialog.ui" line="108"/>\r
+        <source>XLink color:</source>\r
+        <translation>Цвет XLink:</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../editxlinkdialog.ui" line="150"/>\r
+        <source>Use as default:</source>\r
+        <translation>Использовать по умолчанию:</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../editxlinkdialog.ui" line="202"/>\r
+        <source>Quit and delete XLink</source>\r
+        <translation>Выйти и удалить XLink</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../editxlinkdialog.ui" line="225"/>\r
+        <source>Ok</source>\r
+        <translation>OK</translation>\r
+    </message>\r
+</context>\r
+<context>\r
+    <name>ExportXHTMLDialog</name>\r
+    <message>\r
+        <location filename="../exportxhtmldialog.ui" line="19"/>\r
+        <source>Export XHTML</source>\r
+        <translation>Экспорт в XHTML</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exportxhtmldialog.ui" line="48"/>\r
+        <source>Export to directory:</source>\r
+        <translation>Экспорт в каталог:</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exportxhtmldialog.ui" line="455"/>\r
+        <source>Browse</source>\r
+        <translation>Обзор</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exportxhtmldialog.ui" line="92"/>\r
+        <source>Options</source>\r
+        <translation>Опции</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exportxhtmldialog.ui" line="113"/>\r
+        <source>show output of external scripts</source>\r
+        <translation>показывать вывод внешних скриптов</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exportxhtmldialog.ui" line="144"/>\r
+        <source>Include image</source>\r
+        <translation>Include image</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exportxhtmldialog.ui" line="151"/>\r
+        <source>Colored headings in text</source>\r
+        <translation>Цветные заголовки в тексте</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exportxhtmldialog.ui" line="158"/>\r
+        <source>Save settings in map</source>\r
+        <translation>Сохранить настройки в карте</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exportxhtmldialog.ui" line="176"/>\r
+        <source>Stylesheets</source>\r
+        <translation>Стили</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exportxhtmldialog.ui" line="232"/>\r
+        <source>XSL:</source>\r
+        <translation>XSL:</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exportxhtmldialog.ui" line="289"/>\r
+        <source>CSS:</source>\r
+        <translation>CSS:</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exportxhtmldialog.ui" line="320"/>\r
+        <source>Scripts</source>\r
+        <translation>Сценарии</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exportxhtmldialog.ui" line="376"/>\r
+        <source>Before export:</source>\r
+        <translation>До экспорта:</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exportxhtmldialog.ui" line="436"/>\r
+        <source>After Export:</source>\r
+        <translation>После экспорта:</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exportxhtmldialog.ui" line="508"/>\r
+        <source>Export</source>\r
+        <translation>Экспортировать</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exportxhtmldialog.ui" line="501"/>\r
+        <source>Cancel</source>\r
+        <translation>Отмена</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exportxhtmldialog.cpp" line="335"/>\r
+        <source>Warning</source>\r
+        <translation>Предупреждение</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exportxhtmldialog.cpp" line="119"/>\r
+        <source>The settings saved in the map would like to run scripts:\r
+\r
+%1\r
+\r
+Please check, if you really\r
+want to allow this in your system!</source>\r
+        <translation>The settings saved in the map would like to run scripts:\r
+\r
+%1\r
+\r
+Please check, if you really\r
+want to allow this in your system!</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exportxhtmldialog.cpp" line="140"/>\r
+        <source>VYM - Export HTML to directory</source>\r
+        <translation>VYM - Экспортировать HTML в папку</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exportxhtmldialog.cpp" line="335"/>\r
+        <source>Could not open %1</source>\r
+        <translation>Ошибка при открытии %1</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exportxhtmldialog.cpp" line="320"/>\r
+        <source>Could not write %1</source>\r
+        <translation>Ошибка при записи %1</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exportxhtmldialog.cpp" line="405"/>\r
+        <source>Critical Error</source>\r
+        <translation>Критическая ошибка</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exportxhtmldialog.cpp" line="401"/>\r
+        <source>Could not start %1</source>\r
+        <translation>Ошибка при запуске %1</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exportxhtmldialog.cpp" line="406"/>\r
+        <source>%1 didn&apos;t exit normally</source>\r
+        <translation>%1 завершился с ошибкой</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exportxhtmldialog.ui" line="165"/>\r
+        <source>show warnings of xslt processor</source>\r
+        <translation>показывать предупреждения XSLT процессора</translation>\r
+    </message>\r
+</context>\r
+<context>\r
+    <name>ExtraInfoDialog</name>\r
+    <message>\r
+        <location filename="../extrainfodialog.ui" line="16"/>\r
+        <source>VYM - Info</source>\r
+        <translation>VYM - Информация</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../extrainfodialog.ui" line="28"/>\r
+        <source>Map:</source>\r
+        <translation>Карта:</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../extrainfodialog.ui" line="42"/>\r
+        <source>Author:</source>\r
+        <translation>Автор:</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../extrainfodialog.ui" line="52"/>\r
+        <source>Comment:</source>\r
+        <translation>Комментарии:</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../extrainfodialog.ui" line="77"/>\r
+        <source>Statistics:</source>\r
+        <translation>Статистика:</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../extrainfodialog.ui" line="129"/>\r
+        <source>Cancel</source>\r
+        <translation>Отмена</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../extrainfodialog.ui" line="136"/>\r
+        <source>Close</source>\r
+        <translation>Закрыть</translation>\r
+    </message>\r
+</context>\r
+<context>\r
+    <name>FindWindow</name>\r
+    <message>\r
+        <location filename="../findwindow.cpp" line="40"/>\r
+        <source>Clear</source>\r
+        <translation>Очистить</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../findwindow.cpp" line="45"/>\r
+        <source>Cancel</source>\r
+        <translation>Отмена</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../findwindow.cpp" line="51"/>\r
+        <source>Find</source>\r
+        <translation>Найти</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../findwindow.cpp" line="14"/>\r
+        <source>Find Text</source>\r
+        <translation>Найти текст</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../findwindow.cpp" line="21"/>\r
+        <source>Text to find:</source>\r
+        <translation>Искать текст:</translation>\r
+    </message>\r
+</context>\r
+<context>\r
+    <name>Heading of mapcenter in new map</name>\r
+    <message>\r
+        <location filename="../vymmodel.cpp" line="105"/>\r
+        <source>New map</source>\r
+        <translation>Новая Карта</translation>\r
+    </message>\r
+</context>\r
+<context>\r
+    <name>HistoryWindow</name>\r
+    <message>\r
+        <location filename="../historywindow.ui" line="13"/>\r
+        <source>Dialog</source>\r
+        <translation>Dialog</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../historywindow.ui" line="50"/>\r
+        <source>Redo</source>\r
+        <translation>Вернуть</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../historywindow.ui" line="72"/>\r
+        <source>Time</source>\r
+        <translation>Время</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../historywindow.ui" line="77"/>\r
+        <source>Comment</source>\r
+        <translation>Комментарий</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../historywindow.ui" line="85"/>\r
+        <source>Undo</source>\r
+        <translation>Отменить</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../historywindow.ui" line="122"/>\r
+        <source>Close</source>\r
+        <translation>Закрыть</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../historywindow.cpp" line="18"/>\r
+        <source>Action</source>\r
+        <comment>Table with actions</comment>\r
+        <translation>Действия</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../historywindow.cpp" line="21"/>\r
+        <source>Comment</source>\r
+        <comment>Table with actions</comment>\r
+        <translation>Комментировать</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../historywindow.cpp" line="24"/>\r
+        <source>Undo action</source>\r
+        <comment>Table with actions</comment>\r
+        <translation>Вернуть действие</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../historywindow.cpp" line="126"/>\r
+        <source>Current state</source>\r
+        <comment>Current bar in history hwindow</comment>\r
+        <translation>Текущее состояние</translation>\r
+    </message>\r
+</context>\r
+<context>\r
+    <name>Main</name>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="429"/>\r
+        <source>Close Map</source>\r
+        <translation>Закрыть Карту</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="454"/>\r
+        <source>Undo</source>\r
+        <translation>Отменить</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="471"/>\r
+        <source>Copy</source>\r
+        <translation>Копировать</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="480"/>\r
+        <source>Cut</source>\r
+        <translation>Вырезать</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="490"/>\r
+        <source>Paste</source>\r
+        <translation>Вставить</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="614"/>\r
+        <source>Move branch up</source>\r
+        <translation>Переместить вверх</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="624"/>\r
+        <source>Move branch down</source>\r
+        <translation>Переместить вниз</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="645"/>\r
+        <source>Scroll branch</source>\r
+        <translation>Свернуть ветвь</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="669"/>\r
+        <source>Find</source>\r
+        <translation>Найти</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="678"/>\r
+        <source>Open URL</source>\r
+        <translation>Открыть URL</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="699"/>\r
+        <source>Edit URL</source>\r
+        <translation>Редактировать URL</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="717"/>\r
+        <source>Use heading of selected branch as URL</source>\r
+        <translation>Использовать заголовок выбранной ветви как URL</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="738"/>\r
+        <source>Jump to another vym map, if needed load it first</source>\r
+        <translation>Перейти на другую vym-Карту если необходимо загрузить её первой</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="754"/>\r
+        <source>Edit link to another vym map</source>\r
+        <translation>Редактировать ссылку на другую vym-Карту</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="760"/>\r
+        <source>Delete link to another vym map</source>\r
+        <translation>Удалить ссылку на другую vym-Карту</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="775"/>\r
+        <source>Edit Map Info</source>\r
+        <translation>Изменить данные о Карте</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="515"/>\r
+        <source>edit Heading</source>\r
+        <translation>Изменить заголовок</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="524"/>\r
+        <source>Delete Selection</source>\r
+        <translation>Удалить выделенное</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="545"/>\r
+        <source>Add a branch as child of selection</source>\r
+        <translation>Добавить новый дочерний узел</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="588"/>\r
+        <source>Add a branch above selection</source>\r
+        <translation>Новый дочерний узел до выбранного</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="606"/>\r
+        <source>Add a branch below selection</source>\r
+        <translation>Новый дочерний узел после выбранного</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="782"/>\r
+        <source>Add map at selection</source>\r
+        <translation>Добавить Карту к выделенному</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="790"/>\r
+        <source>Replace selection with map</source>\r
+        <translation>Заменить выделенное на Карту</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="798"/>\r
+        <source>Save selection</source>\r
+        <translation>Сохранить выделенное</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="825"/>\r
+        <source>Select upper branch</source>\r
+        <translation>Выбрать ветвь верхнего уровня</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="831"/>\r
+        <source>Select lower branch</source>\r
+        <translation>Выбрать ветвь нижнего уровня</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="837"/>\r
+        <source>Select left branch</source>\r
+        <translation>Выбрать левую ветвь</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="843"/>\r
+        <source>Select right branch</source>\r
+        <translation>Выбрать правую ветвь</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="849"/>\r
+        <source>Select first branch</source>\r
+        <translation>Выбрать первую ветвь</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="859"/>\r
+        <source>Select last branch</source>\r
+        <translation>Выбрать последнюю ветвь</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="870"/>\r
+        <source>Add Image</source>\r
+        <translation>Добавить изображение</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="895"/>\r
+        <source>Set Color</source>\r
+        <translation>Цвет</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="894"/>\r
+        <source>Set &amp;Color</source>\r
+        <translation>&amp;Цвет</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="901"/>\r
+        <source>Pick color\r
+Hint: You can pick a color from another branch and color using CTRL+Left Button</source>\r
+        <translation>Выбор цвета\r
+Подсказка: Вы можете использовать цвет другой ветви используя CTRL+ЛеваяКлавишаМыши</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="911"/>\r
+        <source>Color branch</source>\r
+        <translation>Цвет ветви</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="921"/>\r
+        <source>Color Subtree</source>\r
+        <translation>Цвет поддерева</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="940"/>\r
+        <source>Line</source>\r
+        <translation>Линия</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="933"/>\r
+        <source>Linkstyle Line</source>\r
+        <translation>Линия-ссылка</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="946"/>\r
+        <source>PolyLine</source>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="945"/>\r
+        <source>Linkstyle Thick Line</source>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="952"/>\r
+        <source>PolyParabel</source>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="967"/>\r
+        <source>Use same color for links and headings</source>\r
+        <translation>Использовать один цвет для ссылок и заголовков</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="975"/>\r
+        <source>Set Link Color</source>\r
+        <translation>Установить цвет сслыки</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="987"/>\r
+        <source>Set Background Color</source>\r
+        <translation>Установить цвет фона</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="986"/>\r
+        <source>Set &amp;Background Color</source>\r
+        <translation>&amp;Установить цвет фона</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1005"/>\r
+        <source>&amp;View</source>\r
+        <translation>&amp;Вид</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1009"/>\r
+        <source>Zoom reset</source>\r
+        <translation>Масштаб по-умолчанию</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1016"/>\r
+        <source>Zoom in</source>\r
+        <translation>Увеличить</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1023"/>\r
+        <source>Zoom out</source>\r
+        <translation>Уменьшить</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1102"/>\r
+        <source>Use modifier to color branches</source>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1376"/>\r
+        <source>&amp;Settings</source>\r
+        <translation>&amp;Настройки</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1381"/>\r
+        <source>Set application to open pdf files</source>\r
+        <translation>Установить приложение для открытия pdf</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1427"/>\r
+        <source>Edit branch after adding it</source>\r
+        <translation>Редактировать ветвь после добавления</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1434"/>\r
+        <source>Select branch after adding it</source>\r
+        <translation>Выбрать ветвь после добавления</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1441"/>\r
+        <source>Select heading before editing</source>\r
+        <translation>Выбрать заголовок после редактирования</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1484"/>\r
+        <source>&amp;Test</source>\r
+        <translation>&amp;Тест</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1510"/>\r
+        <source>Open VYM Documentation (pdf)</source>\r
+        <translation>Открыть документацию VYM (pdf)</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1525"/>\r
+        <source>Information about QT toolkit</source>\r
+        <translation>Информация о QT</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="2017"/>\r
+        <source>Overwrite</source>\r
+        <translation>Перезаписать</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="2018"/>\r
+        <source>Cancel</source>\r
+        <translation>Отмена</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1783"/>\r
+        <source>Open anyway</source>\r
+        <translation>Открывать всегда</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1831"/>\r
+        <source>Create</source>\r
+        <translation>Создать</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1907"/>\r
+        <source>Load vym map</source>\r
+        <translation>Загрузить карту в формате VYM</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1910"/>\r
+        <source>Import: Add vym map to selection</source>\r
+        <translation>Импортирование: Добавить vym-Карту к выделению</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1913"/>\r
+        <source>Import: Replace selection with vym map</source>\r
+        <translation>Импортирование: Заменить выделение vym-Картой</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="2306"/>\r
+        <source>Save modified map before closing it</source>\r
+        <translation>Сохранить изменнеую Карту перед закрытием</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="2357"/>\r
+        <source>Discard changes</source>\r
+        <translation>Отменить изменения</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="2351"/>\r
+        <source>This map is not saved yet. Do you want to</source>\r
+        <translation>Эта карта не сохранена. Вы хотите</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="2356"/>\r
+        <source>Save map</source>\r
+        <translation>Сохранить Карту</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="3285"/>\r
+        <source>VYM -Information:</source>\r
+        <translation>Информация VYM:</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="2790"/>\r
+        <source>Critical Error</source>\r
+        <translation>Критическая ошибка</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="3734"/>\r
+        <source>Critcal error</source>\r
+        <translation>Критическая ошибка</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="570"/>\r
+        <source>Add a branch by inserting and making selection its child</source>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="806"/>\r
+        <source>Remove only branch and keep its childs</source>\r
+        <translation>Удалить только ветвь и сохранить дочерние узлы</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="816"/>\r
+        <source>Remove childs of branch</source>\r
+        <translation>Удалить потомков ветви</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1110"/>\r
+        <source>Use modifier to copy</source>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1541"/>\r
+        <source>Add</source>\r
+        <translation>Добавить</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1117"/>\r
+        <source>Use modifier to draw xLinks</source>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1456"/>\r
+        <source>Use exclusive flags in flag toolbars</source>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1386"/>\r
+        <source>Set application to open external links</source>\r
+        <translation>Выберите приложение для открытия внешних ссылок</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1448"/>\r
+        <source>Delete key for deleting branches</source>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1778"/>\r
+        <source>The map %1\r
+is already opened.Opening the same map in multiple editors may lead \r
+to confusion when finishing working with vym.Do you want to</source>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1825"/>\r
+        <source>This map does not exist:\r
+  %1\r
+Do you want to create a new one?</source>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1977"/>\r
+        <source>Saved  %1</source>\r
+        <translation>Сохранено %1</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1982"/>\r
+        <source>Couldn&apos;t save </source>\r
+        <translation>Ошибка при сохранении</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="2012"/>\r
+        <source>The file %1\r
+exists already. Do you want to</source>\r
+        <translation>Файл %1\r
+уже существует. Вы хотите</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="2301"/>\r
+        <source>The map %1 has been modified but not saved yet. Do you want to</source>\r
+        <translation>Карта %1 была измененеа, но изменения не сохранены. Вы хотите</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="2791"/>\r
+        <source>Couldn&apos;t open map %1</source>\r
+        <translation>Ошибка при открытии Карты %1</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="435"/>\r
+        <source>Exit</source>\r
+        <translation>Выход</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="462"/>\r
+        <source>Redo</source>\r
+        <translation>Вернуть</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="960"/>\r
+        <source>Hide link</source>\r
+        <translation>Скрыть ссылку</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1164"/>\r
+        <source>Take care!</source>\r
+        <comment>Standardflag</comment>\r
+        <translation>Аккуратнее!</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1168"/>\r
+        <source>Really?</source>\r
+        <comment>Standardflag</comment>\r
+        <translation>Уверены?</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1172"/>\r
+        <source>ok!</source>\r
+        <comment>Standardflag</comment>\r
+        <translation>OK!</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1176"/>\r
+        <source>Not ok!</source>\r
+        <comment>Standardflag</comment>\r
+        <translation>Не ОK!</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1180"/>\r
+        <source>This won&apos;t work!</source>\r
+        <comment>Standardflag</comment>\r
+        <translation>Не будет работать!</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1184"/>\r
+        <source>Good</source>\r
+        <comment>Standardflag</comment>\r
+        <translation>Хорошо</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1188"/>\r
+        <source>Bad</source>\r
+        <comment>Standardflag</comment>\r
+        <translation>Плохо</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1197"/>\r
+        <source>Time critical</source>\r
+        <comment>Standardflag</comment>\r
+        <translation>Временные рамки</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1203"/>\r
+        <source>Idea!</source>\r
+        <comment>Standardflag</comment>\r
+        <translation>О, идея!</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1207"/>\r
+        <source>Important</source>\r
+        <comment>Standardflag</comment>\r
+        <translation>Важно</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1211"/>\r
+        <source>Unimportant</source>\r
+        <comment>Standardflag</comment>\r
+        <translation>Неважно</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1224"/>\r
+        <source>I like this</source>\r
+        <comment>Standardflag</comment>\r
+        <translation>Мне это нравится</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1228"/>\r
+        <source>I do not like this</source>\r
+        <comment>Standardflag</comment>\r
+        <translation>Мне это не нравится</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1241"/>\r
+        <source>Dangerous</source>\r
+        <comment>Standardflag</comment>\r
+        <translation>Опасность</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1249"/>\r
+        <source>This will help</source>\r
+        <comment>Standardflag</comment>\r
+        <translation>Должно помочь</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1520"/>\r
+        <source>About VYM</source>\r
+        <translation>О View Your Mind</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="2139"/>\r
+        <source>Import</source>\r
+        <translation>Импортировать</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="399"/>\r
+        <source>KDE Bookmarks</source>\r
+        <translation>Закладки KDE</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="2249"/>\r
+        <source>(still experimental)</source>\r
+        <translation>(still experimental)</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="2221"/>\r
+        <source>Export as LaTeX</source>\r
+        <translation>Экспортировать в LaTeX</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="420"/>\r
+        <source>&amp;Print</source>\r
+        <translation>&amp;Печать</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="2269"/>\r
+        <source>Export to</source>\r
+        <translation>Экспортировать в</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="766"/>\r
+        <source>Hide object in exports</source>\r
+        <translation>Скрыть объект при экспорте</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1463"/>\r
+        <source>Use hide flag during exports </source>\r
+        <translation>Не экспортировать помеченные объекты</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="685"/>\r
+        <source>Open URL in new tab</source>\r
+        <translation>Открыть URL в новой закладке</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="3819"/>\r
+        <source>Warning</source>\r
+        <translation>Предупреждение</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="3749"/>\r
+        <source>Couldn&apos;t find a viewer to open %1.\r
+</source>\r
+        <translation>Не найдено приложение для открытия %1.</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="3821"/>\r
+        <source>Please use Settings-&gt;</source>\r
+        <translation> Используйте пункт &quot;Настройки&quot;-&gt;</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="3253"/>\r
+        <source>Set application to open an URL</source>\r
+        <translation>Выберите приложение для открытия URL</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="2498"/>\r
+        <source>Couldn&apos;t start %1 to open a new tab in %2.</source>\r
+        <translation>Ошибка при запуске %1 для открытия в новой закладке %2.</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="3750"/>\r
+        <source>Set application to open PDF files</source>\r
+        <translation>Выберите приложение для открытия PDF документов</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1192"/>\r
+        <source>Oh no!</source>\r
+        <comment>Standardflag</comment>\r
+        <translation>Вот блин!</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1200"/>\r
+        <source>Call...</source>\r
+        <comment>Standardflag</comment>\r
+        <translation>Звонок...</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1215"/>\r
+        <source>Very important!</source>\r
+        <comment>Standardflag</comment>\r
+        <translation>Очень важно!</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1219"/>\r
+        <source>Very unimportant!</source>\r
+        <comment>Standardflag</comment>\r
+        <translation>Совсем неважно!</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1232"/>\r
+        <source>Rose</source>\r
+        <comment>Standardflag</comment>\r
+        <translation>Розочка</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1238"/>\r
+        <source>Surprise!</source>\r
+        <comment>Standardflag</comment>\r
+        <translation>Сюрприз!</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1245"/>\r
+        <source>Info</source>\r
+        <comment>Standardflag</comment>\r
+        <translation>Информация</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="350"/>\r
+        <source>Firefox Bookmarks</source>\r
+        <translation>Закладки Firefox</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1039"/>\r
+        <source>Show Note Editor</source>\r
+        <translation>Показать редактор заметок</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="2079"/>\r
+        <source>Bookmarks</source>\r
+        <translation>Закладки</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="2513"/>\r
+        <source>Couldn&apos;t start %1 to open a new tab</source>\r
+        <translation>Ошибка при запуске %1 для открытия в новой закладке</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1154"/>\r
+        <source>Standard Flags</source>\r
+        <comment>Standard Flag Toolbar</comment>\r
+        <translation>Стандартные флаги</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="2289"/>\r
+        <source>Couldn&apos;t find configuration for export to Open Office\r
+</source>\r
+        <translation>Ошибка конфигурации экспорта в Open Office\r
+</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="2431"/>\r
+        <source>No matches found for &quot;%1&quot;</source>\r
+        <translation>Совпадений не найдено для &quot;%1&quot;</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="297"/>\r
+        <source>&amp;Map</source>\r
+        <translation>&amp;Карта</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="692"/>\r
+        <source>Open all URLs in subtree</source>\r
+        <translation>Открыть все URL в поддереве</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="745"/>\r
+        <source>Open all vym links in subtree</source>\r
+        <translation>Открыть все vym-ссылки в поддереве</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="2518"/>\r
+        <source>Sorry, currently only Konqueror and Mozilla support tabbed browsing.</source>\r
+        <translation>Извините, в данный момент только Konwueror и Mozilla поддерживают закладки.</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="302"/>\r
+        <source>New map</source>\r
+        <comment>Status tip File menu</comment>\r
+        <translation>Новая Карта</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="315"/>\r
+        <source>&amp;Open...</source>\r
+        <comment>File menu</comment>\r
+        <translation>&amp;Открыть...</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="316"/>\r
+        <source>Open</source>\r
+        <comment>Status tip File menu</comment>\r
+        <translation>Открыть</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="322"/>\r
+        <source>Open Recent</source>\r
+        <comment>File menu</comment>\r
+        <translation>Открыть последние</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="325"/>\r
+        <source>&amp;Save...</source>\r
+        <comment>File menu</comment>\r
+        <translation>&amp;Сохранить...</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="326"/>\r
+        <source>Save</source>\r
+        <comment>Status tip file menu</comment>\r
+        <translation>Сохранить</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="333"/>\r
+        <source>Save &amp;As...</source>\r
+        <comment>File menu</comment>\r
+        <translation>Сохранить &amp;как...</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="334"/>\r
+        <source>Save &amp;As</source>\r
+        <comment>Status tip file menu</comment>\r
+        <translation>Сохранить &amp;как</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="340"/>\r
+        <source>Import</source>\r
+        <comment>File menu</comment>\r
+        <translation>Импортировать</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="350"/>\r
+        <source>Import %1</source>\r
+        <comment>Status tip file menu</comment>\r
+        <translation>Импортировать %1</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="343"/>\r
+        <source>KDE bookmarks</source>\r
+        <translation>Закладки KDE</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="349"/>\r
+        <source>Firefox Bookmarks</source>\r
+        <comment>File menu</comment>\r
+        <translation>Закладки Firefox</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="361"/>\r
+        <source>Import %1</source>\r
+        <comment>status tip file menu</comment>\r
+        <translation>Импортировать %1</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="365"/>\r
+        <source>Import Dir%1</source>\r
+        <comment>File menu</comment>\r
+        <translation>Папка для импортирования %1</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="366"/>\r
+        <source>Import directory structure (experimental)</source>\r
+        <comment>status tip file menu</comment>\r
+        <translation>Import directory structure (experimental)</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="370"/>\r
+        <source>Export</source>\r
+        <comment>File menu</comment>\r
+        <translation>Экспортировать</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="372"/>\r
+        <source>Image%1</source>\r
+        <comment>File export menu</comment>\r
+        <translation>Изображение%1</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="373"/>\r
+        <source>Export map as image</source>\r
+        <comment>status tip file menu</comment>\r
+        <translation>Экспортировать Карту как изображение</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="378"/>\r
+        <source>Export in Open Document Format used e.g. in Open Office </source>\r
+        <comment>status tip file menu</comment>\r
+        <translation>Экспортировать в формат Open Document (Open Office)</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="384"/>\r
+        <source>Export as %1</source>\r
+        <comment>status tip file menu</comment>\r
+        <translation>Экспоритровать в %1</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="384"/>\r
+        <source> webpage (XHTML)</source>\r
+        <comment>status tip file menu</comment>\r
+        <translation>веб-страница (XHTML)</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="414"/>\r
+        <source>Export as %1</source>\r
+        <translation>Экспоритровать в %1</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="398"/>\r
+        <source>KDE Bookmarks</source>\r
+        <comment>File menu</comment>\r
+        <translation>Закладки KDE</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="421"/>\r
+        <source>Print</source>\r
+        <comment>File menu</comment>\r
+        <translation>Печать</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="428"/>\r
+        <source>&amp;Close Map</source>\r
+        <comment>File menu</comment>\r
+        <translation>&amp;Закрыть Карту</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="434"/>\r
+        <source>E&amp;xit</source>\r
+        <comment>File menu</comment>\r
+        <translation>&amp;Выход</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="445"/>\r
+        <source>&amp;Actions toolbar</source>\r
+        <comment>Toolbar name</comment>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="448"/>\r
+        <source>&amp;Edit</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>&amp;Правка</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="452"/>\r
+        <source>&amp;Undo</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>&amp;Отменить</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="461"/>\r
+        <source>&amp;Redo</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>&amp;Вернуть</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="470"/>\r
+        <source>&amp;Copy</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>&amp;Копировать</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="479"/>\r
+        <source>Cu&amp;t</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Выреза&amp;ть</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="488"/>\r
+        <source>&amp;Paste</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>&amp;Вставить</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="514"/>\r
+        <source>Edit heading</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Изменить заголовок</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="523"/>\r
+        <source>Delete Selection</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Удалить выделенное</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="544"/>\r
+        <source>Add branch as child</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Добавить дочернюю ветвь</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="569"/>\r
+        <source>Add branch (insert)</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Добавить ветвь (insert)</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="587"/>\r
+        <source>Add branch above</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Добавить ветвь перед текущей</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="605"/>\r
+        <source>Add branch below</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Добавить ветвь после текущей</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="613"/>\r
+        <source>Move up</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Переместить вверх</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="622"/>\r
+        <source>Move down</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Переместить вниз</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="643"/>\r
+        <source>Scroll branch</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Свернуть ветвь</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="668"/>\r
+        <source>Find...</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Найти...</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="676"/>\r
+        <source>Open URL</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Открыть URL</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="684"/>\r
+        <source>Open URL in new tab</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Открыть URL в новой закладке</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="691"/>\r
+        <source>Open all URLs in subtree</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Открыть все URL в поддереве</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="698"/>\r
+        <source>Edit URL...</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Изменить URL...</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="716"/>\r
+        <source>Use heading for URL</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Use heading for URL</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="737"/>\r
+        <source>Open linked map</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Open linked map</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="744"/>\r
+        <source>Open all vym links in subtree</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Открыть все  ссылки в поддереве</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="752"/>\r
+        <source>Edit vym link...</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Редактировать ссылку...</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="759"/>\r
+        <source>Delete vym link</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Удалить ссылку</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="765"/>\r
+        <source>Hide in exports</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Скрыть при экспортировании</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="774"/>\r
+        <source>Edit Map Info...</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Изменить данные Карты...</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="781"/>\r
+        <source>Add map (insert)</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Добавить Карту (вставить)</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="789"/>\r
+        <source>Add map (replace)</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Добавить Карту (заменить)</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="797"/>\r
+        <source>Save selection</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Сохранить выделенное</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="805"/>\r
+        <source>Remove only branch </source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Удалить только ветвь</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="815"/>\r
+        <source>Remove childs</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Удалить дочерние ветви</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="824"/>\r
+        <source>Select upper branch</source>\r
+        <comment>Edit menu</comment>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="830"/>\r
+        <source>Select lower branch</source>\r
+        <comment>Edit menu</comment>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="836"/>\r
+        <source>Select left branch</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Выбрать левую ветвь</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="842"/>\r
+        <source>Select child branch</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Выбрать дочернюю ветвь</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="848"/>\r
+        <source>Select first branch</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Выбрать первую ветвь</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="858"/>\r
+        <source>Select last branch</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Выбрать последнюю ветвь</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="869"/>\r
+        <source>Add Image...</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Добавить изображение...</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="887"/>\r
+        <source>F&amp;ormat</source>\r
+        <comment>Format menu</comment>\r
+        <translation>Ф&amp;ормат</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="889"/>\r
+        <source>Format Actions</source>\r
+        <comment>Format Toolbar name</comment>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="900"/>\r
+        <source>Pic&amp;k color</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Выб&amp;рать цвет</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="910"/>\r
+        <source>Color &amp;branch</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Цвет &amp;ветви</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="920"/>\r
+        <source>Color sub&amp;tree</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Цвет под&amp;дерева</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="959"/>\r
+        <source>Hide link if object is not selected</source>\r
+        <comment>Branch attribute</comment>\r
+        <translation>Скрыть ссылку если объект не выбран</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="966"/>\r
+        <source>&amp;Use color of heading for link</source>\r
+        <comment>Branch attribute</comment>\r
+        <translation>&amp;Использовать цвет заголовка для ссылки</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1002"/>\r
+        <source>View Actions</source>\r
+        <comment>View Toolbar name</comment>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1008"/>\r
+        <source>reset Zoom</source>\r
+        <comment>View action</comment>\r
+        <translation>reset Zoom</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1015"/>\r
+        <source>Zoom in</source>\r
+        <comment>View action</comment>\r
+        <translation>Увеличить</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1022"/>\r
+        <source>Zoom out</source>\r
+        <comment>View action</comment>\r
+        <translation>Уменьшить</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1038"/>\r
+        <source>Show Note Editor</source>\r
+        <comment>View action</comment>\r
+        <translation>Редактор Заметок</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1095"/>\r
+        <source>Modes when using modifiers</source>\r
+        <comment>Modifier Toolbar name</comment>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1100"/>\r
+        <source>Use modifier to color branches</source>\r
+        <comment>Mode modifier</comment>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1108"/>\r
+        <source>Use modifier to copy</source>\r
+        <comment>Mode modifier</comment>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1115"/>\r
+        <source>Use modifier to draw xLinks</source>\r
+        <comment>Mode modifier</comment>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1380"/>\r
+        <source>Set application to open pdf files</source>\r
+        <comment>Settings action</comment>\r
+        <translation>Установить приложение для открытия pdf</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1385"/>\r
+        <source>Set application to open external links</source>\r
+        <comment>Settings action</comment>\r
+        <translation>Выберите приложение для открытия внешних ссылок</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1426"/>\r
+        <source>Edit branch after adding it</source>\r
+        <comment>Settings action</comment>\r
+        <translation>Редактировать ветвь после добавления</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1433"/>\r
+        <source>Select branch after adding it</source>\r
+        <comment>Settings action</comment>\r
+        <translation>Выбрать ветвь после добавления</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1440"/>\r
+        <source>Select existing heading</source>\r
+        <comment>Settings action</comment>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1447"/>\r
+        <source>Delete key</source>\r
+        <comment>Settings action</comment>\r
+        <translation>Удалить</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1455"/>\r
+        <source>Exclusive flags</source>\r
+        <comment>Settings action</comment>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1462"/>\r
+        <source>Use hide flags</source>\r
+        <comment>Settings action</comment>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1506"/>\r
+        <source>&amp;Help</source>\r
+        <comment>Help menubar entry</comment>\r
+        <translation>&amp;Справка</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1509"/>\r
+        <source>Open VYM Documentation (pdf) </source>\r
+        <comment>Help action</comment>\r
+        <translation>Открыть документацию VYM (pdf)</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1519"/>\r
+        <source>About VYM</source>\r
+        <comment>Help action</comment>\r
+        <translation>Информация о программе</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1524"/>\r
+        <source>About QT</source>\r
+        <comment>Help action</comment>\r
+        <translation>Информация о QT</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1552"/>\r
+        <source>Remove</source>\r
+        <comment>Context menu name</comment>\r
+        <translation>Удалить</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1591"/>\r
+        <source>Edit XLink</source>\r
+        <comment>Context menu name</comment>\r
+        <translation>Изменить XLink</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1592"/>\r
+        <source>Follow XLink</source>\r
+        <comment>Context menu name</comment>\r
+        <translation>Перейти по XLink</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1599"/>\r
+        <source>Save image</source>\r
+        <comment>Context action</comment>\r
+        <translation>Сохранить изображение</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="301"/>\r
+        <source>&amp;New map</source>\r
+        <comment>File menu</comment>\r
+        <translation>Новая Кар&amp;та</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="308"/>\r
+        <source>&amp;Copy to new map</source>\r
+        <comment>File menu</comment>\r
+        <translation>&amp;Копировать в новую карту</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="309"/>\r
+        <source>Copy selection to mapcenter of a new map</source>\r
+        <comment>Status tip File menu</comment>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="532"/>\r
+        <source>Add mapcenter</source>\r
+        <comment>Canvas context menu</comment>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="631"/>\r
+        <source>Sort children</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Сортировать дочерние ветви</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="661"/>\r
+        <source>Unscroll childs</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Развернуть дочерние ветви</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="662"/>\r
+        <source>Unscroll all scrolled branches in selected subtree</source>\r
+        <translation>Развернуть свернутые ветви в выбранном поддереве</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="707"/>\r
+        <source>Edit local URL...</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Редактировать локальный URL...</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="708"/>\r
+        <source>Edit local URL</source>\r
+        <translation>Редактировать локальный URL</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="723"/>\r
+        <source>Create URL to Novell Bugzilla</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Создать URL в Novell Bugzilla</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="724"/>\r
+        <source>Create URL to Novell Bugzilla</source>\r
+        <translation>Создать URL в Novell Bugzilla</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="730"/>\r
+        <source>Create URL to Novell FATE</source>\r
+        <comment>Edit menu</comment>\r
+        <translation>Создать URL в Novell FATE</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="731"/>\r
+        <source>Create URL to Novell FATE</source>\r
+        <translation>Создать URL в Novell FATE</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="874"/>\r
+        <source>Property window</source>\r
+        <comment>Dialog to edit properties of selection</comment>\r
+        <translation>Свойства</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="875"/>\r
+        <source>Set properties for selection</source>\r
+        <translation>Установить свойства выделения</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="939"/>\r
+        <source>Linkstyle Curve</source>\r
+        <translation>Linkstyle Curve</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="951"/>\r
+        <source>Linkstyle Thick Curve</source>\r
+        <translation>Linkstyle Thick Curve</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="974"/>\r
+        <source>Set &amp;Link Color</source>\r
+        <translation>Установить цвет &amp;сслыки</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="980"/>\r
+        <source>Set &amp;Selection Color</source>\r
+        <translation>Установить &amp;цвет выделения</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="981"/>\r
+        <source>Set Selection Color</source>\r
+        <translation>Установить цвет выделения</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="992"/>\r
+        <source>Set &amp;Background image</source>\r
+        <translation>Установить фоновое &amp;изображение</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="993"/>\r
+        <source>Set Background image</source>\r
+        <translation>Установить фоновое изображение</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1029"/>\r
+        <source>Show selection</source>\r
+        <comment>View action</comment>\r
+        <translation>Показать выделенный узел</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1030"/>\r
+        <source>Show selection</source>\r
+        <translation>Показать выделенный узел</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1047"/>\r
+        <source>History Window</source>\r
+        <comment>View action</comment>\r
+        <translation>История изменений</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1048"/>\r
+        <source>Show History Window</source>\r
+        <translation>Показать Историю Изменений</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1060"/>\r
+        <source>Antialiasing</source>\r
+        <comment>View action</comment>\r
+        <translation>Сглаживание</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1061"/>\r
+        <source>Antialiasing</source>\r
+        <translation>Сглаживание</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1068"/>\r
+        <source>Smooth pixmap transformations</source>\r
+        <comment>View action</comment>\r
+        <translation>Smooth pixmap transformations</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1076"/>\r
+        <source>Next Map</source>\r
+        <comment>View action</comment>\r
+        <translation>Следующая Карта</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1082"/>\r
+        <source>Previous Map</source>\r
+        <comment>View action</comment>\r
+        <translation>Предыдущая Карта</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1136"/>\r
+        <source>Note</source>\r
+        <comment>SystemFlag</comment>\r
+        <translation>Заметки</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1139"/>\r
+        <source>URL to Document </source>\r
+        <comment>SystemFlag</comment>\r
+        <translation>URL документа </translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1142"/>\r
+        <source>Link to another vym map</source>\r
+        <comment>SystemFlag</comment>\r
+        <translation>Ссылка на другую vym-Карту</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1145"/>\r
+        <source>subtree is scrolled</source>\r
+        <comment>SystemFlag</comment>\r
+        <translation>subtree is scrolled</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1148"/>\r
+        <source>subtree is temporary scrolled</source>\r
+        <comment>SystemFlag</comment>\r
+        <translation>subtree is temporary scrolled</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1151"/>\r
+        <source>Hide object in exported maps</source>\r
+        <comment>SystemFlag</comment>\r
+        <translation>Скрыть объект при экспорте</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1235"/>\r
+        <source>I just love...</source>\r
+        <comment>Standardflag</comment>\r
+        <translation>Просто люблю...</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1256"/>\r
+        <source>Important</source>\r
+        <comment>Freemind-Flag</comment>\r
+        <translation>Важно</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1261"/>\r
+        <source>Priority</source>\r
+        <comment>Freemind-Flag</comment>\r
+        <translation>Приоритет</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1265"/>\r
+        <source>Back</source>\r
+        <comment>Freemind-Flag</comment>\r
+        <translation>Назад</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1268"/>\r
+        <source>Forward</source>\r
+        <comment>Freemind-Flag</comment>\r
+        <translation>Фперёд</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1271"/>\r
+        <source>Look here</source>\r
+        <comment>Freemind-Flag</comment>\r
+        <translation>Посмотреть тут</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1274"/>\r
+        <source>Dangerous</source>\r
+        <comment>Freemind-Flag</comment>\r
+        <translation>Опасность</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1277"/>\r
+        <source>Don&apos;t forget</source>\r
+        <comment>Freemind-Flag</comment>\r
+        <translation>Не забыть</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1280"/>\r
+        <source>Flag</source>\r
+        <comment>Freemind-Flag</comment>\r
+        <translation>Флаг</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1284"/>\r
+        <source>Home</source>\r
+        <comment>Freemind-Flag</comment>\r
+        <translation>Дом</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1288"/>\r
+        <source>Telephone</source>\r
+        <comment>Freemind-Flag</comment>\r
+        <translation>Телефон</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1291"/>\r
+        <source>Music</source>\r
+        <comment>Freemind-Flag</comment>\r
+        <translation>Музыка</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1294"/>\r
+        <source>Mailbox</source>\r
+        <comment>Freemind-Flag</comment>\r
+        <translation>Почта</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1297"/>\r
+        <source>Maix</source>\r
+        <comment>Freemind-Flag</comment>\r
+        <translation>Maix</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1300"/>\r
+        <source>Password</source>\r
+        <comment>Freemind-Flag</comment>\r
+        <translation>Пароль</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1303"/>\r
+        <source>To be improved</source>\r
+        <comment>Freemind-Flag</comment>\r
+        <translation>На улучшение</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1306"/>\r
+        <source>Stop</source>\r
+        <comment>Freemind-Flag</comment>\r
+        <translation>Стоп</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1309"/>\r
+        <source>Magic</source>\r
+        <comment>Freemind-Flag</comment>\r
+        <translation>Magic</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1312"/>\r
+        <source>To be discussed</source>\r
+        <comment>Freemind-Flag</comment>\r
+        <translation>На обсуждение</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1315"/>\r
+        <source>Reminder</source>\r
+        <comment>Freemind-Flag</comment>\r
+        <translation>Напоминание</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1318"/>\r
+        <source>Excellent</source>\r
+        <comment>Freemind-Flag</comment>\r
+        <translation>Великолепно</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1321"/>\r
+        <source>Linux</source>\r
+        <comment>Freemind-Flag</comment>\r
+        <translation>Linux</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1324"/>\r
+        <source>Sweet</source>\r
+        <comment>Freemind-Flag</comment>\r
+        <translation>Мило</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1390"/>\r
+        <source>Set path for macros</source>\r
+        <comment>Settings action</comment>\r
+        <translation>Установить папку для макросов</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1391"/>\r
+        <source>Set path for macros</source>\r
+        <translation>Установить папку для макросов</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1395"/>\r
+        <source>Set number of undo levels</source>\r
+        <comment>Settings action</comment>\r
+        <translation>Установить количество уровней отмены</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1396"/>\r
+        <source>Set number of undo levels</source>\r
+        <translation>Установить количество уровней отмены</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1402"/>\r
+        <source>Autosave</source>\r
+        <comment>Settings action</comment>\r
+        <translation>Автосохранение</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1403"/>\r
+        <source>Autosave</source>\r
+        <translation>Автосохранение</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1410"/>\r
+        <source>Autosave time</source>\r
+        <comment>Settings action</comment>\r
+        <translation>Интервал автосохранения</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1411"/>\r
+        <source>Autosave time</source>\r
+        <translation>Интервал автосохранения</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1416"/>\r
+        <source>Write backup file on save</source>\r
+        <comment>Settings action</comment>\r
+        <translation>Создать резрвную копию при сохранении</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1417"/>\r
+        <source>Write backup file on save</source>\r
+        <translation>Создать резрвную копию при сохранении</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1469"/>\r
+        <source>Animation</source>\r
+        <comment>Settings action</comment>\r
+        <translation>Анимация</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1470"/>\r
+        <source>Animation</source>\r
+        <translation>Анимация</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1514"/>\r
+        <source>Open VYM example maps </source>\r
+        <comment>Help action</comment>\r
+        <translation>Открыть примеры карт</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1515"/>\r
+        <source>Open VYM example maps </source>\r
+        <translation>Открыть примеры карт</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1569"/>\r
+        <source>References (URLs, vymLinks, ...)</source>\r
+        <comment>Context menu name</comment>\r
+        <translation>Ссылки ( URLs, vym-Cсылки, ...)</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="1645"/>\r
+        <source>&amp;%1 %2</source>\r
+        <translation>&amp;%1 %2</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="2108"/>\r
+        <source>Load Freemind map</source>\r
+        <translation>Загрузить Карту в формате FreeMind</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="2202"/>\r
+        <source>Export as CSV</source>\r
+        <translation>Экспортировать в CVS</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="3268"/>\r
+        <source>Directory with vym macros:</source>\r
+        <translation>Папка с vym-макросами:</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="3300"/>\r
+        <source>QInputDialog::getInteger()</source>\r
+        <translation>QInputDialog::getInteger()</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="3281"/>\r
+        <source>Number of undo/redo levels:</source>\r
+        <translation>Количество уровней отмены/повтора:</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="3286"/>\r
+        <source>Settings have been changed. The next map opened will have &quot;%1&quot; undo/redo levels</source>\r
+        <translation>Настройки были измененеы. Следующая открытая карта будет использовать &quot;%1&quot; уровней повтора/отмены</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="3301"/>\r
+        <source>Number of seconds before autosave:</source>\r
+        <translation>Интервал автосохранения (сек.):</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="3411"/>\r
+        <source>History for %1</source>\r
+        <comment>Window Caption</comment>\r
+        <translation>История для %1</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="3735"/>\r
+        <source>Couldn&apos;t find the documentation %1 in:\r
+%2</source>\r
+        <translation>Не найдена документация %1 в: %2</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="3771"/>\r
+        <source>Load vym example map</source>\r
+        <translation>Загрузить примеры карт</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="3820"/>\r
+        <source>Couldn&apos;t find a macro at  %1.\r
+</source>\r
+        <translation>Couldn&apos;t find a macro at  %1.\r
+</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mainwindow.cpp" line="3821"/>\r
+        <source>Set directory for vym macros</source>\r
+        <translation>Установить папку для vym-макросов</translation>\r
+    </message>\r
+</context>\r
+<context>\r
+    <name>MapEditor</name>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="1703"/>\r
+        <source>Critical Parse Error</source>\r
+        <translation>Критическая ошибка Разбора</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="4136"/>\r
+        <source>Overwrite</source>\r
+        <translation>Перезаписать</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="4137"/>\r
+        <source>Cancel</source>\r
+        <translation>Отмена</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="2129"/>\r
+        <source>Critical Export Error</source>\r
+        <translation>Критическая ошибка Экспорта</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="2432"/>\r
+        <source>Critical Error</source>\r
+        <translation>Критическая ошибка</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="3474"/>\r
+        <source>Enter URL:</source>\r
+        <translation>Введите URL:</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="4067"/>\r
+        <source>Images</source>\r
+        <translation>Изображения</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="4314"/>\r
+        <source>Critical Import Error</source>\r
+        <translation>Критическая ошибка Импорта</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="4130"/>\r
+        <source>The file %1 exists already.\r
+Do you want to overwrite it?</source>\r
+        <translation type="unfinished">Файл %1уже существует.Перезаписать?</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="2129"/>\r
+        <source>MapEditor::exportXML couldn&apos;t open %1</source>\r
+        <translation>MapEditor::exportXML couldn&apos;t open %1</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="4314"/>\r
+        <source>Cannot find the directory %1</source>\r
+        <translation>Папка %1 не найдена</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="3579"/>\r
+        <source>Link to another map</source>\r
+        <translation>Ссылка на другую Карту</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="4072"/>\r
+        <source>Load image</source>\r
+        <translation>Загрузить изображение</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="4362"/>\r
+        <source>Choose directory structure to import</source>\r
+        <translation>Выберите структуруа папок для экспорта</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="110"/>\r
+        <source>unnamed</source>\r
+        <translation>vym-map</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="4116"/>\r
+        <source>Save image</source>\r
+        <translation>Сохранить изображение</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="2426"/>\r
+        <source>Critical Parse Error while reading %1</source>\r
+        <translation>Критическая ошибка Разбора при чтении %1</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="2432"/>\r
+        <source>Could not read %1</source>\r
+        <translation>Ошибка при чтении %1</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="3324"/>\r
+        <source>Warning</source>\r
+        <translation>Предупреждение</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="3324"/>\r
+        <source>Can&apos;t get color of heading,\r
+there&apos;s no branch selected</source>\r
+        <translation>Невозможно получить цвет заголовка\r
+ни одна ветвь не выбрана</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="1795"/>\r
+        <source>Critical Load Error</source>\r
+        <translation>Критическая ошибка Загрузки</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="1602"/>\r
+        <source>Couldn&apos;t create temporary directory before load\r
+</source>\r
+        <translation>Ошибка при создании временной папки перед загрузкой</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="1645"/>\r
+        <source>Couldn&apos;t find a map (*.xml) in .vym archive.\r
+</source>\r
+        <translation>Не найдена Карта (*.xml) в .vym архиве.\r
+</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="1741"/>\r
+        <source>The map %1\r
+did not use the compressed vym file format.\r
+Writing it uncompressed will also write images \r
+and flags and thus may overwrite files in the given directory\r
+\r
+Do you want to write the map</source>\r
+        <translation>The map %1\r
+did not use the compressed vym file format.\r
+Writing it uncompressed will also write images \r
+and flags and thus may overwrite files in the given directory\r
+\r
+Do you want to write the map</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="1746"/>\r
+        <source>compressed (vym default)</source>\r
+        <translation>compressed (vym default)</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="1747"/>\r
+        <source>uncompressed</source>\r
+        <translation>uncompressed</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="1782"/>\r
+        <source>Save Error</source>\r
+        <translation>Ошибка сохранения</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="1778"/>\r
+        <source>%1\r
+could not be removed before saving</source>\r
+        <translation>%1 не может быть удалено перед сохранением</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="1783"/>\r
+        <source>%1\r
+could not be renamed before saving</source>\r
+        <translation>%1 не может быть удалено перед сохранением</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="1796"/>\r
+        <source>Couldn&apos;t create temporary directory before save\r
+</source>\r
+        <translation>Ошибка при создании временной папки перед сохранением\r
+</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="2033"/>\r
+        <source>Export map as image</source>\r
+        <translation>Экспортировать Карту как изображение</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="2110"/>\r
+        <source>Export XML to directory</source>\r
+        <translation>Экспортировать XML в папку</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="2260"/>\r
+        <source>Autosave disabled during undo.</source>\r
+        <translation>Автосохранение отключено во время &quot;отмены&quot;.</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="3268"/>\r
+        <source>Load background image</source>\r
+        <translation>Загрузить фоновый рисунок</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="3489"/>\r
+        <source>Text</source>\r
+        <comment>Filedialog</comment>\r
+        <translation>Текст</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="3490"/>\r
+        <source>Spreadsheet</source>\r
+        <comment>Filedialog</comment>\r
+        <translation>Таблица</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="3491"/>\r
+        <source>Textdocument</source>\r
+        <comment>Filedialog</comment>\r
+        <translation>Текстовый документ</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="3492"/>\r
+        <source>Images</source>\r
+        <comment>Filedialog</comment>\r
+        <translation>Изображение</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="3495"/>\r
+        <source>Set URL to a local file</source>\r
+        <translation>Задать URL на локальный файл</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="3727"/>\r
+        <source>%1 items on map\r
+</source>\r
+        <comment>Info about map</comment>\r
+        <translation>%1 объектов на карте\r
+</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="5291"/>\r
+        <source>The file of the map  on disk has changed:\r
+\r
+   %1\r
+\r
+Do you want to reload that map with the new file?</source>\r
+        <translation>Файл Карты на диске был изменен:\r
+\r
+%1\r
+\r
+Вы хотите загрузить изменненую карту с диска?</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="5297"/>\r
+        <source>Reload</source>\r
+        <translation>Перезагрузить</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../mapeditor.cpp" line="5298"/>\r
+        <source>Ignore</source>\r
+        <translation>Пропустить</translation>\r
+    </message>\r
+</context>\r
+<context>\r
+    <name>QObject</name>\r
+    <message>\r
+        <location filename="../file.cpp" line="439"/>\r
+        <source>This is not an image.</source>\r
+        <translation>Это не файл изображения.</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exports.cpp" line="557"/>\r
+        <source>Critical Export Error</source>\r
+        <translation>Критическая ошибка Экспорта</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exports.cpp" line="352"/>\r
+        <source>Could not write %1</source>\r
+        <translation>Ошибка при записи %1</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exports.cpp" line="353"/>\r
+        <source>Export failed.</source>\r
+        <translation>Ошибка Экспорта.</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exports.cpp" line="524"/>\r
+        <source>Check &quot;%1&quot; in\r
+%2</source>\r
+        <translation>Проверьте &quot;%1&quot; в %2</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exports.cpp" line="557"/>\r
+        <source>Could not read %1</source>\r
+        <translation>Ошибка при чтении %1</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../xsltproc.cpp" line="82"/>\r
+        <source>Critical Error</source>\r
+        <translation>Критическая ошибка</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../file.cpp" line="272"/>\r
+        <source>Couldn&apos;t start zip to compress data.</source>\r
+        <translation>Ошибка при запуске zip для сжатия данных.</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../file.cpp" line="282"/>\r
+        <source>zip didn&apos;t exit normally</source>\r
+        <translation>&quot;zip&quot; завершился с ошибкой</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../file.cpp" line="316"/>\r
+        <source>Couldn&apos;t start unzip to decompress data.</source>\r
+        <translation>Ошибка при запуске unzip для распаковки данных.</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../file.cpp" line="326"/>\r
+        <source>unzip didn&apos;t exit normally</source>\r
+        <translation>unzip завершился с ошибкой</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../xsltproc.cpp" line="77"/>\r
+        <source>Could not start %1</source>\r
+        <translation>Ошибка при запуске %1</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../xsltproc.cpp" line="83"/>\r
+        <source>%1 didn&apos;t exit normally</source>\r
+        <translation>%1 завершился с ошибкой</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exports.cpp" line="77"/>\r
+        <source>The file %1 exists already.\r
+Do you want to overwrite it?</source>\r
+        <translation type="unfinished">Файл %1 уже существует.\r
+Перезаписать ?</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../file.cpp" line="105"/>\r
+        <source>Overwrite</source>\r
+        <translation>Перезаписать</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../file.cpp" line="106"/>\r
+        <source>Cancel</source>\r
+        <translation>Отмена</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../file.cpp" line="441"/>\r
+        <source>Sorry, no preview for\r
+multiple selected files.</source>\r
+        <translation>Предпросмотр для нескольких выбранных файлов невозможен.</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exports.cpp" line="294"/>\r
+        <source>Exporting the %1 bookmarks will overwrite\r
+your existing bookmarks file.</source>\r
+        <translation>Экспорт закладок %1 перезапишет \r
+ваш существующий файл закладок.</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exports.cpp" line="295"/>\r
+        <source>Warning: Overwriting %1 bookmarks</source>\r
+        <translation>Предупреждение: Перезапись закладок %1</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exports.cpp" line="278"/>\r
+        <source>Warning</source>\r
+        <translation>Предупреждение</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exports.cpp" line="279"/>\r
+        <source>Couldn&apos;t find script %1\r
+to notifiy Browsers of changed bookmarks.</source>\r
+        <translation>Сценарий %1\r
+для уведомления браузера о изменении\r
+закладок не найден.</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../main.cpp" line="192"/>\r
+        <source>Error</source>\r
+        <translation>Ошибка</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../imports.cpp" line="17"/>\r
+        <source>Couldn&apos;t access temporary directory\r
+</source>\r
+        <translation>Невозможно получить доступ к временной папке</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exports.cpp" line="131"/>\r
+        <source>Export as ASCII</source>\r
+        <translation>Экспортировать в ASCII</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../exports.cpp" line="131"/>\r
+        <source>(still experimental)</source>\r
+        <translation>(still experimental)</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../file.cpp" line="99"/>\r
+        <source>The directory %1 is not empty.\r
+Do you risk to overwrite its contents?</source>\r
+        <comment>write directory</comment>\r
+        <translation>Папка %1 уже содержит информацию.\r
+Возможно приведет к утере важной информации.Перезаписать? </translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../main.cpp" line="193"/>\r
+        <source>Couldn&apos;t open %1.\r
+</source>\r
+        <translation>Ошибка при открытии %1.</translation>\r
+    </message>\r
+</context>\r
+<context>\r
+    <name>ShowTextDialog</name>\r
+    <message>\r
+        <location filename="../showtextdialog.ui" line="16"/>\r
+        <source>Dialog</source>\r
+        <translation>Форма ввода</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../showtextdialog.ui" line="52"/>\r
+        <source>Close</source>\r
+        <translation>Закрыть</translation>\r
+    </message>\r
+</context>\r
+<context>\r
+    <name>SimpleScriptEditor</name>\r
+    <message>\r
+        <location filename="../simplescripteditor.cpp" line="61"/>\r
+        <source>Save script</source>\r
+        <translation>Сохранить сценарий</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../simplescripteditor.cpp" line="73"/>\r
+        <source>The file %1\r
+exists already.\r
+Do you want to overwrite it?</source>\r
+        <comment>dialog &apos;save as&apos;</comment>\r
+        <translation>Файл %1\r
+уже существует.\r
+Перезаписать?</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../simplescripteditor.cpp" line="78"/>\r
+        <source>Overwrite</source>\r
+        <translation>Перезаписать</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../simplescripteditor.cpp" line="79"/>\r
+        <source>Cancel</source>\r
+        <translation>Отмена</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../simplescripteditor.cpp" line="105"/>\r
+        <source>Load script</source>\r
+        <translation>Загрузить сценарий</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../simplescripteditor.cpp" line="116"/>\r
+        <source>Error</source>\r
+        <translation>Ошибка</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../simplescripteditor.cpp" line="117"/>\r
+        <source>Couldn&apos;t open %1.\r
+</source>\r
+        <translation>Ошибка при открытии %1.\r
+</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../simplescripteditor.ui" line="13"/>\r
+        <source>Simple Script Editor</source>\r
+        <translation>Простой редактор сценариев</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../simplescripteditor.ui" line="38"/>\r
+        <source>Save as</source>\r
+        <translation>Сохранить как</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../simplescripteditor.ui" line="48"/>\r
+        <source>Save</source>\r
+        <translation>Сохранить</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../simplescripteditor.ui" line="51"/>\r
+        <source>Qt::CTRL + Qt::Key_S</source>\r
+        <translation>Qt::CTRL + Qt::Key_S</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../simplescripteditor.ui" line="58"/>\r
+        <source>Open</source>\r
+        <translation>Открыть</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../simplescripteditor.ui" line="61"/>\r
+        <source>Qt::CTRL +Qt::Key_O</source>\r
+        <translation>Qt::CTRL +Qt::Key_O</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../simplescripteditor.ui" line="68"/>\r
+        <source>Run</source>\r
+        <translation>Выполнить</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../simplescripteditor.ui" line="71"/>\r
+        <source>Qt::CTRL + Qt::Key_R</source>\r
+        <translation>Qt::CTRL + Qt::Key_R</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../simplescripteditor.ui" line="78"/>\r
+        <source>Close</source>\r
+        <translation>Закрыть</translation>\r
+    </message>\r
+</context>\r
+<context>\r
+    <name>TextEditor</name>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="202"/>\r
+        <source>&amp;Import...</source>\r
+        <translation>&amp;Импортировать...</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="211"/>\r
+        <source>&amp;Export...</source>\r
+        <translation>&amp;Экспортировать...</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="219"/>\r
+        <source>Export &amp;As... (HTML)</source>\r
+        <translation>Экспортировать &amp;как... (HTML)</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="225"/>\r
+        <source>Export &amp;As...(ASCII)</source>\r
+        <translation>Экспортировать &amp;как... (ASСII)</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="675"/>\r
+        <source>Print Note</source>\r
+        <translation>Печать Заметки</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="233"/>\r
+        <source>&amp;Print...</source>\r
+        <translation>&amp;PПечать...</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="246"/>\r
+        <source>&amp;Edit</source>\r
+        <translation>&amp;Правка</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="249"/>\r
+        <source>&amp;Undo</source>\r
+        <translation>&amp;Отменить</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="257"/>\r
+        <source>&amp;Redo</source>\r
+        <translation>&amp;Вернуть</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="266"/>\r
+        <source>Select and copy &amp;all</source>\r
+        <translation>Выбрать и копировать &amp;всё</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="273"/>\r
+        <source>&amp;Copy</source>\r
+        <translation>&amp;Копировать</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="281"/>\r
+        <source>Cu&amp;t</source>\r
+        <translation>Выреза&amp;ть</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="289"/>\r
+        <source>&amp;Paste</source>\r
+        <translation>&amp;Вставить</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="297"/>\r
+        <source>&amp;Delete All</source>\r
+        <translation>&amp;Удалить всё</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="314"/>\r
+        <source>&amp;Font hint</source>\r
+        <translation>&amp;Font hint</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="347"/>\r
+        <source>&amp;Color...</source>\r
+        <translation>&amp;Цвет...</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="353"/>\r
+        <source>&amp;Bold</source>\r
+        <translation>&amp;Полужирный</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="361"/>\r
+        <source>&amp;Italic</source>\r
+        <translation>&amp;Курсив</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="369"/>\r
+        <source>&amp;Underline</source>\r
+        <translation>&amp;Подчеркивание</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="400"/>\r
+        <source>&amp;Left</source>\r
+        <translation>&amp;Слева</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="406"/>\r
+        <source>C&amp;enter</source>\r
+        <translation>&amp;Центр</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="412"/>\r
+        <source>&amp;Right</source>\r
+        <translation>&amp;Справа</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="418"/>\r
+        <source>&amp;Justify</source>\r
+        <translation>&amp;Растянуть</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="428"/>\r
+        <source>&amp;Settings</source>\r
+        <translation>&amp;Настройки</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="431"/>\r
+        <source>Set &amp;fixed font</source>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="437"/>\r
+        <source>Set &amp;variable font</source>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="443"/>\r
+        <source>&amp;fixed font is default</source>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="557"/>\r
+        <source>Export Note to single file</source>\r
+        <translation>Экспортировать заметки в один файл</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="645"/>\r
+        <source>Overwrite</source>\r
+        <translation>Перезаписать</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="646"/>\r
+        <source>Cancel</source>\r
+        <translation>Отмена</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="631"/>\r
+        <source>Export Note to single file (ASCII)</source>\r
+        <translation>Экспортировать Заметку в один файл (ASCII)</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="380"/>\r
+        <source>Subs&amp;cript</source>\r
+        <translation>Под&amp;строчный</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="388"/>\r
+        <source>Su&amp;perscript</source>\r
+        <translation>На&amp;дстрочный</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="457"/>\r
+        <source>Note Editor</source>\r
+        <translation>Редактор Заметок</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="310"/>\r
+        <source>F&amp;ormat</source>\r
+        <translation>Ф&amp;ормат</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="244"/>\r
+        <source>Edit Actions</source>\r
+        <translation>Edit Actions</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="308"/>\r
+        <source>Format Actions</source>\r
+        <translation>Format Actions</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="197"/>\r
+        <source>Note Actions</source>\r
+        <translation>Note Actions</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="38"/>\r
+        <source>Ready</source>\r
+        <comment>Statusbar message</comment>\r
+        <translation>Готово</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="163"/>\r
+        <source>No filename available for this note.</source>\r
+        <comment>Statusbar message</comment>\r
+        <translation>Не задано имя файла для текущей заметки.</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="39"/>\r
+        <source>Note Editor</source>\r
+        <comment>Window caption</comment>\r
+        <translation>Редактор Заметок</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="199"/>\r
+        <source>&amp;Note</source>\r
+        <comment>Menubar</comment>\r
+        <translation>Заме&amp;тка</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="203"/>\r
+        <source>Import</source>\r
+        <comment>Status tip for Note menu</comment>\r
+        <translation>Импортировать</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="212"/>\r
+        <source>Export Note (HTML)</source>\r
+        <comment>Status tip for Note menu</comment>\r
+        <translation>Экспортировать заметки (HTML)</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="220"/>\r
+        <source>Export Note As (HTML) </source>\r
+        <comment>Status tip for Note Menu</comment>\r
+        <translation>Экспортировать заметки как (HTML)</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="226"/>\r
+        <source>Export Note As (ASCII) </source>\r
+        <comment>Status tip for note menu</comment>\r
+        <translation>Экспортировать заметки как (ASCII)</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="234"/>\r
+        <source>Print Note</source>\r
+        <comment>Status tip for note menu</comment>\r
+        <translation>Печать Заметок</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="250"/>\r
+        <source>Undo</source>\r
+        <comment>Status tip for note menu</comment>\r
+        <translation>Отменить</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="258"/>\r
+        <source>Redo</source>\r
+        <comment>Status tip for note menu</comment>\r
+        <translation>Вернуть</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="267"/>\r
+        <source>Select and copy all</source>\r
+        <comment>Status tip for note menu</comment>\r
+        <translation>Выбрать и копировать всё</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="274"/>\r
+        <source>Copy</source>\r
+        <comment>Status tip for note menu</comment>\r
+        <translation>Копировать</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="282"/>\r
+        <source>Cut</source>\r
+        <comment>Status tip for note menu</comment>\r
+        <translation>Вырезать</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="290"/>\r
+        <source>Paste</source>\r
+        <comment>Status tip for note menu</comment>\r
+        <translation>Вставить</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="298"/>\r
+        <source>Delete all</source>\r
+        <comment>Status tip for note menu</comment>\r
+        <translation>Удалить всё</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="315"/>\r
+        <source>Toggle font hint for the whole text</source>\r
+        <comment>Status tip for note menu</comment>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="432"/>\r
+        <source>Set fixed font</source>\r
+        <comment>Status tip for note menu</comment>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="438"/>\r
+        <source>Set variable font</source>\r
+        <comment>Status tip for note menu</comment>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="444"/>\r
+        <source>Used fixed font by default</source>\r
+        <comment>Status tip for note menu</comment>\r
+        <translation type="unfinished"></translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="640"/>\r
+        <source>The file %1\r
+exists already.\r
+Do you want to overwrite it?</source>\r
+        <comment>dialog &apos;save note as&apos;</comment>\r
+        <translation type="unfinished">Файл %1 уже существует. Перезаписать?</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../texteditor.cpp" line="589"/>\r
+        <source>Couldn&apos;t export note </source>\r
+        <comment>dialog &apos;save note as&apos;</comment>\r
+        <translation>Ошибка при экспорте Заметок</translation>\r
+    </message>\r
+</context>\r
+<context>\r
+    <name>WarningDialog</name>\r
+    <message>\r
+        <location filename="../warningdialog.ui" line="13"/>\r
+        <source>VYM - Warning : Foo...</source>\r
+        <translation>VYM - Предупреждение: Фyy...</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../warningdialog.ui" line="106"/>\r
+        <source>showAgainBox</source>\r
+        <translation>showAgainBox</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../warningdialog.ui" line="132"/>\r
+        <source>Cancel</source>\r
+        <translation>Отмена</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../warningdialog.ui" line="139"/>\r
+        <source>Ok</source>\r
+        <translation>OK</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../warningdialog.cpp" line="11"/>\r
+        <source>Proceed</source>\r
+        <translation>Продолжить</translation>\r
+    </message>\r
+    <message>\r
+        <location filename="../warningdialog.cpp" line="15"/>\r
+        <source>Show this message again</source>\r
+        <translation>Показывать это сообщение</translation>\r
+    </message>\r
+</context>\r
+</TS>\r
diff --git a/lang/vym_zh_CN.qm b/lang/vym_zh_CN.qm
new file mode 100644 (file)
index 0000000..f0ee1e2
Binary files /dev/null and b/lang/vym_zh_CN.qm differ
diff --git a/lang/vym_zh_CN.ts b/lang/vym_zh_CN.ts
new file mode 100644 (file)
index 0000000..ee31dd4
--- /dev/null
@@ -0,0 +1,3467 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS><TS version="1.1" language="zh_CN">
+<defaultcodec></defaultcodec>
+<context>
+    <name>AboutDialog</name>
+    <message>
+        <location filename="../aboutdialog.cpp" line="208"/>
+        <source>Ok</source>
+        <comment>Ok Button</comment>
+        <translation>确定</translation>
+    </message>
+</context>
+<context>
+    <name>AboutTextBrowser</name>
+    <message>
+        <location filename="../aboutdialog.cpp" line="231"/>
+        <source>Please use Settings-&gt;</source>
+        <translation>请使用 &quot;设置&quot;-&gt;</translation>
+    </message>
+    <message>
+        <location filename="../aboutdialog.cpp" line="231"/>
+        <source>Set application to open an URL</source>
+        <translation>设置用于打开 URL 的应用程序</translation>
+    </message>
+    <message>
+        <location filename="../aboutdialog.cpp" line="229"/>
+        <source>Warning</source>
+        <comment>About window</comment>
+        <translation>警告</translation>
+    </message>
+    <message>
+        <location filename="../aboutdialog.cpp" line="230"/>
+        <source>Couldn&apos;t find a viewer to open %1.
+</source>
+        <comment>About window</comment>
+        <translation>无法找到阅读器以打开 %1。
+</translation>
+    </message>
+</context>
+<context>
+    <name>Attribute Dialog</name>
+    <message>
+        <location filename="../attributedialog.cpp" line="74"/>
+        <source>AttributeDialog - Edit definitions</source>
+        <translation>属性对话框 - 编辑定义</translation>
+    </message>
+    <message>
+        <location filename="../attributedialog.cpp" line="76"/>
+        <source>AttributeDialog - Edit %1</source>
+        <translation>属性对话框 - 编辑 %1</translation>
+    </message>
+</context>
+<context>
+    <name>AttributeDialog</name>
+    <message>
+        <location filename="../attributedialog.cpp" line="48"/>
+        <source>Attributes</source>
+        <translation>属性</translation>
+    </message>
+    <message>
+        <location filename="../attributedialog.cpp" line="49"/>
+        <source>Add key</source>
+        <translation>添加键</translation>
+    </message>
+    <message>
+        <location filename="../attributedialog.cpp" line="50"/>
+        <source>Close</source>
+        <translation>关闭</translation>
+    </message>
+</context>
+<context>
+    <name>AttributeWidget</name>
+    <message>
+        <location filename="../attributewidget.ui" line="13"/>
+        <source>Form</source>
+        <translation>表单</translation>
+    </message>
+</context>
+<context>
+    <name>BranchPropertyWindow</name>
+    <message>
+        <location filename="../branchpropwindow.cpp" line="16"/>
+        <source>Property Editor</source>
+        <comment>Window caption</comment>
+        <translation>属性编辑器</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.cpp" line="32"/>
+        <source>Name</source>
+        <comment>Branchprop window: Attribute name</comment>
+        <translation>名</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.cpp" line="33"/>
+        <source>Value</source>
+        <comment>Branchprop window: Attribute value</comment>
+        <translation>值</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.cpp" line="34"/>
+        <source>Type</source>
+        <comment>Branchprop window: Attribute type</comment>
+        <translation>类型</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="19"/>
+        <source>Branch Property Editor</source>
+        <translation>分支属性编辑器</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="29"/>
+        <source>Frame</source>
+        <translation>边框</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="50"/>
+        <source>Geometry</source>
+        <translation>几何</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="63"/>
+        <source>No Frame</source>
+        <translation>无边框</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="68"/>
+        <source>Rectangle</source>
+        <translation>矩形</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="73"/>
+        <source>Ellipse</source>
+        <translation>椭圆</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="94"/>
+        <source>Padding</source>
+        <translation>填充</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="101"/>
+        <source>Borderline width</source>
+        <translation>边缘宽度</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="151"/>
+        <source>Colors</source>
+        <translation>颜色</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="194"/>
+        <source>Borderline color</source>
+        <translation>边缘颜色</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="217"/>
+        <source>Background color</source>
+        <translation>背景颜色</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="246"/>
+        <source>Layout</source>
+        <translation>布局</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="254"/>
+        <source>Include images horizontally</source>
+        <translation>在水平方向包含图象</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="261"/>
+        <source>Include images vertically</source>
+        <translation>在垂直方向包含图象</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="284"/>
+        <source>Link</source>
+        <translation>链接</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="290"/>
+        <source>Hide link if unselected</source>
+        <translation>未选中时隐藏链接</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="311"/>
+        <source>Attributes</source>
+        <translation>属性</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="337"/>
+        <source>+</source>
+        <translation>+</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="344"/>
+        <source>-</source>
+        <translation>-</translation>
+    </message>
+    <message>
+        <location filename="../branchpropwindow.ui" line="413"/>
+        <source>Close</source>
+        <translation>关闭</translation>
+    </message>
+</context>
+<context>
+    <name>EditXLinkDialog</name>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="24"/>
+        <source>Edit XLink</source>
+        <translation>编辑 XLink</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="62"/>
+        <source>XLink width:</source>
+        <translation>XLink 宽度:</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="78"/>
+        <source>Set color of heading</source>
+        <translation>设为与标题颜色相同</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="108"/>
+        <source>XLink color:</source>
+        <translation>XLink 颜色:</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="150"/>
+        <source>Use as default:</source>
+        <translation>设为默认:</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="202"/>
+        <source>Quit and delete XLink</source>
+        <translation>退出并删除 XLink</translation>
+    </message>
+    <message>
+        <location filename="../editxlinkdialog.ui" line="225"/>
+        <source>Ok</source>
+        <translation>确定</translation>
+    </message>
+</context>
+<context>
+    <name>ExportXHTMLDialog</name>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="19"/>
+        <source>Export XHTML</source>
+        <translation>导出为 XHTML</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="48"/>
+        <source>Export to directory:</source>
+        <translation>导出至目录:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="455"/>
+        <source>Browse</source>
+        <translation>浏览</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="92"/>
+        <source>Options</source>
+        <translation>选项</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="113"/>
+        <source>show output of external scripts</source>
+        <translation>显示外部脚本输出</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="144"/>
+        <source>Include image</source>
+        <translation>包含图象</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="151"/>
+        <source>Colored headings in text</source>
+        <translation>标题含有颜色</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="158"/>
+        <source>Save settings in map</source>
+        <translation>在该导图中保存设置</translation>
+    </message>
+    <message>
+        <source>showWarnings e.g. if directory is not empty</source>
+        <translation type="obsolete">显示警告,例如当目录非空时</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="176"/>
+        <source>Stylesheets</source>
+        <translation>样式表</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="232"/>
+        <source>XSL:</source>
+        <translation>XSL:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="289"/>
+        <source>CSS:</source>
+        <translation>CSS:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="320"/>
+        <source>Scripts</source>
+        <translation>脚本</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="376"/>
+        <source>Before export:</source>
+        <translation>导出前:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="436"/>
+        <source>After Export:</source>
+        <translation>导出后:</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="508"/>
+        <source>Export</source>
+        <translation>导出</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="501"/>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="335"/>
+        <source>Warning</source>
+        <translation>警告</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="119"/>
+        <source>The settings saved in the map would like to run scripts:
+
+%1
+
+Please check, if you really
+want to allow this in your system!</source>
+        <translation>该导图保存的设置中需要执行脚本:
+
+%1
+
+请检查您是否真的想要允许此事
+发生在您的系统上!</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="140"/>
+        <source>VYM - Export HTML to directory</source>
+        <translation>VYM - 导出 HTML 至目录</translation>
+    </message>
+    <message>
+        <source>VYM - Path to CSS file</source>
+        <translation type="obsolete">VYM - CSS 文件路径</translation>
+    </message>
+    <message>
+        <source>VYM - Path to XSL file</source>
+        <translation type="obsolete">VYM - XSL 文件路径</translation>
+    </message>
+    <message>
+        <source>VYM - Path to pre export script</source>
+        <translation type="obsolete">VYM - 预导出脚本路径</translation>
+    </message>
+    <message>
+        <source>VYM - Path to post export script</source>
+        <translation type="obsolete">VYM - 导出后脚本路径</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="335"/>
+        <source>Could not open %1</source>
+        <translation>无法打开 %1</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="320"/>
+        <source>Could not write %1</source>
+        <translation>无法写入 %1</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="405"/>
+        <source>Critical Error</source>
+        <translation>严重错误</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="401"/>
+        <source>Could not start %1</source>
+        <translation>无法启动 %1</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.cpp" line="406"/>
+        <source>%1 didn&apos;t exit normally</source>
+        <translation>%1 未正常退出</translation>
+    </message>
+    <message>
+        <location filename="../exportxhtmldialog.ui" line="165"/>
+        <source>show warnings of xslt processor</source>
+        <translation>显示 XSLT 处理器的警告</translation>
+    </message>
+</context>
+<context>
+    <name>ExtraInfoDialog</name>
+    <message>
+        <location filename="../extrainfodialog.ui" line="16"/>
+        <source>VYM - Info</source>
+        <translation>VYM - 信息</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="28"/>
+        <source>Map:</source>
+        <translation>导图名称:</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="42"/>
+        <source>Author:</source>
+        <translation>作者:</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="52"/>
+        <source>Comment:</source>
+        <translation>注释:</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="77"/>
+        <source>Statistics:</source>
+        <translation>统计:</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="129"/>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+    <message>
+        <location filename="../extrainfodialog.ui" line="136"/>
+        <source>Close</source>
+        <translation>关闭</translation>
+    </message>
+</context>
+<context>
+    <name>FindWindow</name>
+    <message>
+        <location filename="../findwindow.cpp" line="40"/>
+        <source>Clear</source>
+        <translation>清除</translation>
+    </message>
+    <message>
+        <location filename="../findwindow.cpp" line="45"/>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+    <message>
+        <location filename="../findwindow.cpp" line="51"/>
+        <source>Find</source>
+        <translation>查找</translation>
+    </message>
+    <message>
+        <location filename="../findwindow.cpp" line="14"/>
+        <source>Find Text</source>
+        <translation>查找文本</translation>
+    </message>
+    <message>
+        <location filename="../findwindow.cpp" line="21"/>
+        <source>Text to find:</source>
+        <translation>请输入要查找的文本:</translation>
+    </message>
+</context>
+<context>
+    <name>Heading of mapcenter in new map</name>
+    <message>
+        <location filename="../vymmodel.cpp" line="105"/>
+        <source>New map</source>
+        <translation>新建导图</translation>
+    </message>
+</context>
+<context>
+    <name>HistoryWindow</name>
+    <message>
+        <location filename="../historywindow.ui" line="13"/>
+        <source>Dialog</source>
+        <translation>对话框</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="50"/>
+        <source>Redo</source>
+        <translation>重做</translation>
+    </message>
+    <message>
+        <source>New Row</source>
+        <translation type="obsolete">新行</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="72"/>
+        <source>Time</source>
+        <translation>时间</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="77"/>
+        <source>Comment</source>
+        <translation>注释</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="85"/>
+        <source>Undo</source>
+        <translation>撤销</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.ui" line="122"/>
+        <source>Close</source>
+        <translation>关闭</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.cpp" line="18"/>
+        <source>Action</source>
+        <comment>Table with actions</comment>
+        <translation>动作</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.cpp" line="21"/>
+        <source>Comment</source>
+        <comment>Table with actions</comment>
+        <translation>注释</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.cpp" line="24"/>
+        <source>Undo action</source>
+        <comment>Table with actions</comment>
+        <translation>撤销动作</translation>
+    </message>
+    <message>
+        <location filename="../historywindow.cpp" line="126"/>
+        <source>Current state</source>
+        <comment>Current bar in history hwindow</comment>
+        <translation>当前状态</translation>
+    </message>
+</context>
+<context>
+    <name>Main</name>
+    <message>
+        <location filename="../mainwindow.cpp" line="429"/>
+        <source>Close Map</source>
+        <translation>关闭导图</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="454"/>
+        <source>Undo</source>
+        <translation>撤销</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="471"/>
+        <source>Copy</source>
+        <translation>复制</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="480"/>
+        <source>Cut</source>
+        <translation>剪切</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="490"/>
+        <source>Paste</source>
+        <translation>粘贴</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="614"/>
+        <source>Move branch up</source>
+        <translation>上移分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="624"/>
+        <source>Move branch down</source>
+        <translation>下移分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="645"/>
+        <source>Scroll branch</source>
+        <translation>卷起分支</translation>
+    </message>
+    <message>
+        <source>Unscroll all</source>
+        <translation type="obsolete">展开全部</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="669"/>
+        <source>Find</source>
+        <translation>查找</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="678"/>
+        <source>Open URL</source>
+        <translation>打开 URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="699"/>
+        <source>Edit URL</source>
+        <translation>编辑 URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="717"/>
+        <source>Use heading of selected branch as URL</source>
+        <translation>使用当前选定分支的标题作为 URL</translation>
+    </message>
+    <message>
+        <source>Create URL to Bugzilla</source>
+        <translation type="obsolete">创建至 Bugzilla 的 URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="738"/>
+        <source>Jump to another vym map, if needed load it first</source>
+        <translation>跳至另一 vym 导图,如有需要则预先载入</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="754"/>
+        <source>Edit link to another vym map</source>
+        <translation>编辑至另一 vym 导图的链接</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="760"/>
+        <source>Delete link to another vym map</source>
+        <translation>删除至另一 vym 导图的链接</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="775"/>
+        <source>Edit Map Info</source>
+        <translation>编辑导图信息</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="515"/>
+        <source>edit Heading</source>
+        <translation>编辑标题</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="524"/>
+        <source>Delete Selection</source>
+        <translation>删除选中项</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="545"/>
+        <source>Add a branch as child of selection</source>
+        <translation>为选中项添加子分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="588"/>
+        <source>Add a branch above selection</source>
+        <translation>在选中项上方添加分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="606"/>
+        <source>Add a branch below selection</source>
+        <translation>在选中项下方添加分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="782"/>
+        <source>Add map at selection</source>
+        <translation>在选中处添加导图</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="790"/>
+        <source>Replace selection with map</source>
+        <translation>用导图替换选中项</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="798"/>
+        <source>Save selection</source>
+        <translation>保存选中项</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="825"/>
+        <source>Select upper branch</source>
+        <translation>选择上方分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="831"/>
+        <source>Select lower branch</source>
+        <translation>选择下方分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="837"/>
+        <source>Select left branch</source>
+        <translation>选择左方分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="843"/>
+        <source>Select right branch</source>
+        <translation>选择右方分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="849"/>
+        <source>Select first branch</source>
+        <translation>选择第一个分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="859"/>
+        <source>Select last branch</source>
+        <translation>选择最后一个分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="870"/>
+        <source>Add Image</source>
+        <translation>添加图象</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="895"/>
+        <source>Set Color</source>
+        <translation>设置颜色</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="894"/>
+        <source>Set &amp;Color</source>
+        <translation>设置颜色(&amp;C)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="901"/>
+        <source>Pick color
+Hint: You can pick a color from another branch and color using CTRL+Left Button</source>
+        <translation>选取颜色
+提示:您可以使用 CTRL+鼠标左键 从其他分支和颜色里选取颜色</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="911"/>
+        <source>Color branch</source>
+        <translation>着色该分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="921"/>
+        <source>Color Subtree</source>
+        <translation>着色子树</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="940"/>
+        <source>Line</source>
+        <translation>直线</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="933"/>
+        <source>Linkstyle Line</source>
+        <translation>直线链接样式</translation>
+    </message>
+    <message>
+        <source>Linkstyle Parabel</source>
+        <translation type="obsolete">抛物线链接样式</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="946"/>
+        <source>PolyLine</source>
+        <translation>多股直线</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="945"/>
+        <source>Linkstyle Thick Line</source>
+        <translation>粗直线链接样式</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="952"/>
+        <source>PolyParabel</source>
+        <translation>多股抛物线</translation>
+    </message>
+    <message>
+        <source>Linkstyle Thick Parabel</source>
+        <translation type="obsolete">粗抛物线链接样式</translation>
+    </message>
+    <message>
+        <source>No Frame</source>
+        <translation type="obsolete">无边框</translation>
+    </message>
+    <message>
+        <source>Rectangle</source>
+        <translation type="obsolete">矩形</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="967"/>
+        <source>Use same color for links and headings</source>
+        <translation>对链接和标题使用相同颜色</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="975"/>
+        <source>Set Link Color</source>
+        <translation>设置链接颜色</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="987"/>
+        <source>Set Background Color</source>
+        <translation>设置背景颜色</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="986"/>
+        <source>Set &amp;Background Color</source>
+        <translation>设置背景颜色(&amp;B)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1005"/>
+        <source>&amp;View</source>
+        <translation>查看(&amp;V)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1009"/>
+        <source>Zoom reset</source>
+        <translation>正常大小</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1016"/>
+        <source>Zoom in</source>
+        <translation>放大</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1023"/>
+        <source>Zoom out</source>
+        <translation>缩小</translation>
+    </message>
+    <message>
+        <source>&amp;Next Window</source>
+        <translation type="obsolete">下一窗口(&amp;N)</translation>
+    </message>
+    <message>
+        <source>&amp;Previous Window</source>
+        <translation type="obsolete">上一窗口(&amp;P)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1102"/>
+        <source>Use modifier to color branches</source>
+        <translation>使用修饰键着色分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1376"/>
+        <source>&amp;Settings</source>
+        <translation>设置(&amp;S)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1381"/>
+        <source>Set application to open pdf files</source>
+        <translation>设置用于打开 pdf 文件的应用程序</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1427"/>
+        <source>Edit branch after adding it</source>
+        <translation>添加分支后编辑该分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1434"/>
+        <source>Select branch after adding it</source>
+        <translation>添加分支后选中该分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1441"/>
+        <source>Select heading before editing</source>
+        <translation>在编辑前选中标题文本</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1484"/>
+        <source>&amp;Test</source>
+        <translation>测试(&amp;T)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1510"/>
+        <source>Open VYM Documentation (pdf)</source>
+        <translation>打开 VYM 文档(pdf)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1525"/>
+        <source>Information about QT toolkit</source>
+        <translation>关于 QT 工具包的信息</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2017"/>
+        <source>Overwrite</source>
+        <translation>覆盖</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2018"/>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1783"/>
+        <source>Open anyway</source>
+        <translation>继续打开</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1831"/>
+        <source>Create</source>
+        <translation>新建</translation>
+    </message>
+    <message>
+        <source>Critical Load Error</source>
+        <translation type="obsolete">严重载入错误</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find a map (*.xml) in .vym archive.
+</source>
+        <translation type="obsolete">无法在 .vym 存档中找到导图(*.xml)。
+</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1907"/>
+        <source>Load vym map</source>
+        <translation>载入 vym 导图</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1910"/>
+        <source>Import: Add vym map to selection</source>
+        <translation>导入:将 vym 导图添加至选中项</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1913"/>
+        <source>Import: Replace selection with vym map</source>
+        <translation>导入:将选中项替换为 vym 导图</translation>
+    </message>
+    <message>
+        <source>Save Error</source>
+        <translation type="obsolete">保存错误</translation>
+    </message>
+    <message>
+        <source>
+could not be removed before saving</source>
+        <translation type="obsolete">
+无法在保存前删除</translation>
+    </message>
+    <message>
+        <source>compressed (vym default)</source>
+        <translation type="obsolete">压缩(vym 默认)</translation>
+    </message>
+    <message>
+        <source>uncompressed</source>
+        <translation type="obsolete">未压缩</translation>
+    </message>
+    <message>
+        <source>Export XML to directory</source>
+        <translation type="obsolete">导出 XML 至目录</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2306"/>
+        <source>Save modified map before closing it</source>
+        <translation>关闭前保存已修改的导图</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2357"/>
+        <source>Discard changes</source>
+        <translation>丢弃修改</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2351"/>
+        <source>This map is not saved yet. Do you want to</source>
+        <translation>该导图尚未保存。您希望</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2356"/>
+        <source>Save map</source>
+        <translation>保存导图</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3285"/>
+        <source>VYM -Information:</source>
+        <translation>VYM - 信息:</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2790"/>
+        <source>Critical Error</source>
+        <translation>严重错误</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3734"/>
+        <source>Critcal error</source>
+        <translation>严重错误</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find the documentation
+vym.pdf in various places.</source>
+        <translation type="obsolete">无法在任何位置找到文档 vym.pdf。</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="570"/>
+        <source>Add a branch by inserting and making selection its child</source>
+        <translation>添加分支并使选中项成为其子分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="806"/>
+        <source>Remove only branch and keep its childs</source>
+        <translation>仅删除该分支但保留其子分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="816"/>
+        <source>Remove childs of branch</source>
+        <translation>删除该分支的子分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1110"/>
+        <source>Use modifier to copy</source>
+        <translation>使用修饰键复制</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1541"/>
+        <source>Add</source>
+        <translation>添加</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1117"/>
+        <source>Use modifier to draw xLinks</source>
+        <translation>使用修饰键绘制 xLinks</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1456"/>
+        <source>Use exclusive flags in flag toolbars</source>
+        <translation>使标记工具栏中的标记互斥</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1386"/>
+        <source>Set application to open external links</source>
+        <translation>设置用于打开外部链接的应用程序</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1448"/>
+        <source>Delete key for deleting branches</source>
+        <translation>使用删除键删除分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1778"/>
+        <source>The map %1
+is already opened.Opening the same map in multiple editors may lead 
+to confusion when finishing working with vym.Do you want to</source>
+        <translation>导图 %1
+已打开。当使用 vym 完成工作时,在多个编辑器中打开同一导图
+可能会导致混乱。您希望</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1825"/>
+        <source>This map does not exist:
+  %1
+Do you want to create a new one?</source>
+        <translation>该导图不存在:
+<byte value="x9"/>%1
+您希望新建一个吗?</translation>
+    </message>
+    <message>
+        <source>The map %1
+did not use the compressed vym file format.
+Writing it uncompressed will also write images 
+and flags and thus may overwrite files in the given directory
+
+Do you want to write the map</source>
+        <translation type="obsolete">导图 %1
+未使用 vym 压缩文件格式。
+如果写入的话,图象与标记都会写入,这可能导致
+指定目录中的文件被覆盖。
+
+您希望写入导图吗</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1977"/>
+        <source>Saved  %1</source>
+        <translation>已保存<byte value="x9"/>%1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1982"/>
+        <source>Couldn&apos;t save </source>
+        <translation>无法保存<byte value="x9"/></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2012"/>
+        <source>The file %1
+exists already. Do you want to</source>
+        <translation>文件 %1
+已存在。您希望</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2301"/>
+        <source>The map %1 has been modified but not saved yet. Do you want to</source>
+        <translation>导图 %1 已更改但尚未保存。您希望</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2791"/>
+        <source>Couldn&apos;t open map %1</source>
+        <translation>无法打开导图 %1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="435"/>
+        <source>Exit</source>
+        <translation>退出</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="462"/>
+        <source>Redo</source>
+        <translation>重做</translation>
+    </message>
+    <message>
+        <source>Create URL to FATE</source>
+        <translation type="obsolete">创建至 FATE 的 URL</translation>
+    </message>
+    <message>
+        <source>Include top and bottom position of images into branch</source>
+        <translation type="obsolete">将图象上下位置包括进分支</translation>
+    </message>
+    <message>
+        <source>Include left and right position of images into branch</source>
+        <translation type="obsolete">将图象左右位置包括进分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="960"/>
+        <source>Hide link</source>
+        <translation>隐藏链接</translation>
+    </message>
+    <message>
+        <source>Note</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">注解</translation>
+    </message>
+    <message>
+        <source>WWW Document (external)</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">WWW 文档(外部)</translation>
+    </message>
+    <message>
+        <source>Link to another vym map</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">至另一 vym 导图的链接</translation>
+    </message>
+    <message>
+        <source>subtree is scrolled</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">子树已卷起</translation>
+    </message>
+    <message>
+        <source>subtree is temporary scrolled</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">子树暂时卷起</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1164"/>
+        <source>Take care!</source>
+        <comment>Standardflag</comment>
+        <translation>当心!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1168"/>
+        <source>Really?</source>
+        <comment>Standardflag</comment>
+        <translation>真的?</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1172"/>
+        <source>ok!</source>
+        <comment>Standardflag</comment>
+        <translation>ok!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1176"/>
+        <source>Not ok!</source>
+        <comment>Standardflag</comment>
+        <translation>不 ok!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1180"/>
+        <source>This won&apos;t work!</source>
+        <comment>Standardflag</comment>
+        <translation>这样不行的!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1184"/>
+        <source>Good</source>
+        <comment>Standardflag</comment>
+        <translation>好的</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1188"/>
+        <source>Bad</source>
+        <comment>Standardflag</comment>
+        <translation>坏的</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1197"/>
+        <source>Time critical</source>
+        <comment>Standardflag</comment>
+        <translation>时间紧迫</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1203"/>
+        <source>Idea!</source>
+        <comment>Standardflag</comment>
+        <translation>想法!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1207"/>
+        <source>Important</source>
+        <comment>Standardflag</comment>
+        <translation>重要</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1211"/>
+        <source>Unimportant</source>
+        <comment>Standardflag</comment>
+        <translation>不重要</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1224"/>
+        <source>I like this</source>
+        <comment>Standardflag</comment>
+        <translation>我喜欢</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1228"/>
+        <source>I do not like this</source>
+        <comment>Standardflag</comment>
+        <translation>我不喜欢</translation>
+    </message>
+    <message>
+        <source>I just love... </source>
+        <comment>Standardflag</comment>
+        <translation type="obsolete">我就是爱……<byte value="x9"/></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1241"/>
+        <source>Dangerous</source>
+        <comment>Standardflag</comment>
+        <translation>危险</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1249"/>
+        <source>This will help</source>
+        <comment>Standardflag</comment>
+        <translation>这会起到帮助的</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1520"/>
+        <source>About VYM</source>
+        <translation>关于 VYM</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2139"/>
+        <source>Import</source>
+        <translation>导入</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="399"/>
+        <source>KDE Bookmarks</source>
+        <translation>KDE 书签</translation>
+    </message>
+    <message>
+        <source>Export as ASCII</source>
+        <translation type="obsolete">导出为 ASCII</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2249"/>
+        <source>(still experimental)</source>
+        <translation>(仍处于试验阶段)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2221"/>
+        <source>Export as LaTeX</source>
+        <translation>导出为 LaTeX</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="420"/>
+        <source>&amp;Print</source>
+        <translation>打印(&amp;P)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2269"/>
+        <source>Export to</source>
+        <translation>导出至</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="766"/>
+        <source>Hide object in exports</source>
+        <translation>导出时隐藏对象</translation>
+    </message>
+    <message>
+        <source>Hide object in exported maps</source>
+        <comment>Systemflag</comment>
+        <translation type="obsolete">导出时将被隐藏的对象</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1463"/>
+        <source>Use hide flag during exports </source>
+        <translation>不导出标有隐藏标记的对象<byte value="x9"/></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="685"/>
+        <source>Open URL in new tab</source>
+        <translation>在新标签页打开 URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3819"/>
+        <source>Warning</source>
+        <translation>警告</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3749"/>
+        <source>Couldn&apos;t find a viewer to open %1.
+</source>
+        <translation>无法找到阅读器以打开 %1。
+</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3821"/>
+        <source>Please use Settings-&gt;</source>
+        <translation>请使用 &quot;设置&quot;-&gt;</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3253"/>
+        <source>Set application to open an URL</source>
+        <translation>设置用于打开 URL 的应用程序</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2498"/>
+        <source>Couldn&apos;t start %1 to open a new tab in %2.</source>
+        <translation>无法在 %2 中启动 %1 以打开一个新标签。</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3750"/>
+        <source>Set application to open PDF files</source>
+        <translation>设置用于打开 pdf 文件的应用程序</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1192"/>
+        <source>Oh no!</source>
+        <comment>Standardflag</comment>
+        <translation>哦不!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1200"/>
+        <source>Call...</source>
+        <comment>Standardflag</comment>
+        <translation>打电话……</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1215"/>
+        <source>Very important!</source>
+        <comment>Standardflag</comment>
+        <translation>非常重要!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1219"/>
+        <source>Very unimportant!</source>
+        <comment>Standardflag</comment>
+        <translation>非常不重要!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1232"/>
+        <source>Rose</source>
+        <comment>Standardflag</comment>
+        <translation>玫瑰</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1238"/>
+        <source>Surprise!</source>
+        <comment>Standardflag</comment>
+        <translation>惊喜!</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1245"/>
+        <source>Info</source>
+        <comment>Standardflag</comment>
+        <translation>信息</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="350"/>
+        <source>Firefox Bookmarks</source>
+        <translation>Firefox 书签</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1039"/>
+        <source>Show Note Editor</source>
+        <translation>显示注解编辑器</translation>
+    </message>
+    <message>
+        <source>Show history window</source>
+        <translation type="obsolete">显示历史窗口</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2079"/>
+        <source>Bookmarks</source>
+        <translation>书签</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2513"/>
+        <source>Couldn&apos;t start %1 to open a new tab</source>
+        <translation>无法启动 %1 以打开一个新标签。</translation>
+    </message>
+    <message>
+        <source>Export map as image</source>
+        <translation type="obsolete">将导图导出为图象</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1154"/>
+        <source>Standard Flags</source>
+        <comment>Standard Flag Toolbar</comment>
+        <translation>标记工具栏</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2289"/>
+        <source>Couldn&apos;t find configuration for export to Open Office
+</source>
+        <translation>无法找到配置以导出成 OpenOffice.org
+</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2431"/>
+        <source>No matches found for &quot;%1&quot;</source>
+        <translation>无法为 &quot;%1&quot; 找到匹配</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="297"/>
+        <source>&amp;Map</source>
+        <translation>导图(&amp;M)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="692"/>
+        <source>Open all URLs in subtree</source>
+        <translation>打开子树中的所有 URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="745"/>
+        <source>Open all vym links in subtree</source>
+        <translation>打开子树中的所有链接</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t create temporary directory before load
+</source>
+        <translation type="obsolete">无法在载入前创建临时目录
+</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t create temporary directory before save
+</source>
+        <translation type="obsolete">无法在保存前创建临时目录</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2518"/>
+        <source>Sorry, currently only Konqueror and Mozilla support tabbed browsing.</source>
+        <translation>对不起,当前只有 Konqueror 和 Mozilla 支持标签浏览。</translation>
+    </message>
+    <message>
+        <source>&amp;New...</source>
+        <comment>File menu</comment>
+        <translation type="obsolete">新建(&amp;N)...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="302"/>
+        <source>New map</source>
+        <comment>Status tip File menu</comment>
+        <translation>新建导图</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="315"/>
+        <source>&amp;Open...</source>
+        <comment>File menu</comment>
+        <translation>打开(&amp;O)...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="316"/>
+        <source>Open</source>
+        <comment>Status tip File menu</comment>
+        <translation>打开</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="322"/>
+        <source>Open Recent</source>
+        <comment>File menu</comment>
+        <translation>最近打开的文件</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="325"/>
+        <source>&amp;Save...</source>
+        <comment>File menu</comment>
+        <translation>保存(&amp;S)...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="326"/>
+        <source>Save</source>
+        <comment>Status tip file menu</comment>
+        <translation>保存</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="333"/>
+        <source>Save &amp;As...</source>
+        <comment>File menu</comment>
+        <translation>另存为(&amp;A)...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="334"/>
+        <source>Save &amp;As</source>
+        <comment>Status tip file menu</comment>
+        <translation>另存为(&amp;A)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="340"/>
+        <source>Import</source>
+        <comment>File menu</comment>
+        <translation>导入</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="350"/>
+        <source>Import %1</source>
+        <comment>Status tip file menu</comment>
+        <translation>导入 %1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="343"/>
+        <source>KDE bookmarks</source>
+        <translation>KDE 书签</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="349"/>
+        <source>Firefox Bookmarks</source>
+        <comment>File menu</comment>
+        <translation>Firefox 书签</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="361"/>
+        <source>Import %1</source>
+        <comment>status tip file menu</comment>
+        <translation>导入 %1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="365"/>
+        <source>Import Dir%1</source>
+        <comment>File menu</comment>
+        <translation>导入目录%1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="366"/>
+        <source>Import directory structure (experimental)</source>
+        <comment>status tip file menu</comment>
+        <translation>导入目录结构(仍处于试验阶段)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="370"/>
+        <source>Export</source>
+        <comment>File menu</comment>
+        <translation>导出</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="372"/>
+        <source>Image%1</source>
+        <comment>File export menu</comment>
+        <translation>图象%1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="373"/>
+        <source>Export map as image</source>
+        <comment>status tip file menu</comment>
+        <translation>将导图导出为图象</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="378"/>
+        <source>Export in Open Document Format used e.g. in Open Office </source>
+        <comment>status tip file menu</comment>
+        <translation>导出为用于 OpenOffice.org 等的 ODF(Open Document Format) 格式<byte value="x9"/></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="384"/>
+        <source>Export as %1</source>
+        <comment>status tip file menu</comment>
+        <translation>导出为 %1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="384"/>
+        <source> webpage (XHTML)</source>
+        <comment>status tip file menu</comment>
+        <translation><byte value="x9"/>网页(XHTML)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="414"/>
+        <source>Export as %1</source>
+        <translation>导出为 %1</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="398"/>
+        <source>KDE Bookmarks</source>
+        <comment>File menu</comment>
+        <translation>KDE 书签</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="421"/>
+        <source>Print</source>
+        <comment>File menu</comment>
+        <translation>打印</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="428"/>
+        <source>&amp;Close Map</source>
+        <comment>File menu</comment>
+        <translation>关闭导图(&amp;C)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="434"/>
+        <source>E&amp;xit</source>
+        <comment>File menu</comment>
+        <translation>退出(&amp;X)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="445"/>
+        <source>&amp;Actions toolbar</source>
+        <comment>Toolbar name</comment>
+        <translation>动作工具栏(&amp;A)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="448"/>
+        <source>&amp;Edit</source>
+        <comment>Edit menu</comment>
+        <translation>编辑(&amp;E)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="452"/>
+        <source>&amp;Undo</source>
+        <comment>Edit menu</comment>
+        <translation>撤销(&amp;U)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="461"/>
+        <source>&amp;Redo</source>
+        <comment>Edit menu</comment>
+        <translation>重做(&amp;R)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="470"/>
+        <source>&amp;Copy</source>
+        <comment>Edit menu</comment>
+        <translation>复制(&amp;C)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="479"/>
+        <source>Cu&amp;t</source>
+        <comment>Edit menu</comment>
+        <translation>剪切(&amp;T)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="488"/>
+        <source>&amp;Paste</source>
+        <comment>Edit menu</comment>
+        <translation>粘贴(&amp;P)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="514"/>
+        <source>Edit heading</source>
+        <comment>Edit menu</comment>
+        <translation>编辑标题</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="523"/>
+        <source>Delete Selection</source>
+        <comment>Edit menu</comment>
+        <translation>删除选中项</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="544"/>
+        <source>Add branch as child</source>
+        <comment>Edit menu</comment>
+        <translation>添加子分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="569"/>
+        <source>Add branch (insert)</source>
+        <comment>Edit menu</comment>
+        <translation>添加父分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="587"/>
+        <source>Add branch above</source>
+        <comment>Edit menu</comment>
+        <translation>在上方添加分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="605"/>
+        <source>Add branch below</source>
+        <comment>Edit menu</comment>
+        <translation>在下方添加分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="613"/>
+        <source>Move up</source>
+        <comment>Edit menu</comment>
+        <translation>上移</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="622"/>
+        <source>Move down</source>
+        <comment>Edit menu</comment>
+        <translation>下移</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="643"/>
+        <source>Scroll branch</source>
+        <comment>Edit menu</comment>
+        <translation>卷起分支</translation>
+    </message>
+    <message>
+        <source>Unscroll all scrolled branches</source>
+        <comment>Edit menu</comment>
+        <translation type="obsolete">展开所有卷起的分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="668"/>
+        <source>Find...</source>
+        <comment>Edit menu</comment>
+        <translation>查找...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="676"/>
+        <source>Open URL</source>
+        <comment>Edit menu</comment>
+        <translation>打开 URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="684"/>
+        <source>Open URL in new tab</source>
+        <comment>Edit menu</comment>
+        <translation>在新标签页打开 URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="691"/>
+        <source>Open all URLs in subtree</source>
+        <comment>Edit menu</comment>
+        <translation>打开子树中的所有 URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="698"/>
+        <source>Edit URL...</source>
+        <comment>Edit menu</comment>
+        <translation>编辑 URL...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="716"/>
+        <source>Use heading for URL</source>
+        <comment>Edit menu</comment>
+        <translation>将标题作为 URL</translation>
+    </message>
+    <message>
+        <source>Create URL to Bugzilla</source>
+        <comment>Edit menu</comment>
+        <translation type="obsolete">创建至 Bugzilla 的 URL</translation>
+    </message>
+    <message>
+        <source>Create URL to FATE</source>
+        <comment>Edit menu</comment>
+        <translation type="obsolete">创建至 FATE 的 URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="737"/>
+        <source>Open linked map</source>
+        <comment>Edit menu</comment>
+        <translation>打开链接的导图</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="744"/>
+        <source>Open all vym links in subtree</source>
+        <comment>Edit menu</comment>
+        <translation>打开子树中的所有链接</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="752"/>
+        <source>Edit vym link...</source>
+        <comment>Edit menu</comment>
+        <translation>编辑 vym 链接...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="759"/>
+        <source>Delete vym link</source>
+        <comment>Edit menu</comment>
+        <translation>删除 vym 链接...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="765"/>
+        <source>Hide in exports</source>
+        <comment>Edit menu</comment>
+        <translation>导出时隐藏</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="774"/>
+        <source>Edit Map Info...</source>
+        <comment>Edit menu</comment>
+        <translation>编辑导图信息...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="781"/>
+        <source>Add map (insert)</source>
+        <comment>Edit menu</comment>
+        <translation>添加导图(插入)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="789"/>
+        <source>Add map (replace)</source>
+        <comment>Edit menu</comment>
+        <translation>添加导图(替换)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="797"/>
+        <source>Save selection</source>
+        <comment>Edit menu</comment>
+        <translation>保存选中项</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="805"/>
+        <source>Remove only branch </source>
+        <comment>Edit menu</comment>
+        <translation>仅删除该分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="815"/>
+        <source>Remove childs</source>
+        <comment>Edit menu</comment>
+        <translation>删除子分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="824"/>
+        <source>Select upper branch</source>
+        <comment>Edit menu</comment>
+        <translation>选择上方分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="830"/>
+        <source>Select lower branch</source>
+        <comment>Edit menu</comment>
+        <translation>选择下方分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="836"/>
+        <source>Select left branch</source>
+        <comment>Edit menu</comment>
+        <translation>选择左方分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="842"/>
+        <source>Select child branch</source>
+        <comment>Edit menu</comment>
+        <translation>选择子分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="848"/>
+        <source>Select first branch</source>
+        <comment>Edit menu</comment>
+        <translation>选择第一个分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="858"/>
+        <source>Select last branch</source>
+        <comment>Edit menu</comment>
+        <translation>选择最后一个分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="869"/>
+        <source>Add Image...</source>
+        <comment>Edit menu</comment>
+        <translation>添加图象...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="887"/>
+        <source>F&amp;ormat</source>
+        <comment>Format menu</comment>
+        <translation>格式(&amp;O)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="889"/>
+        <source>Format Actions</source>
+        <comment>Format Toolbar name</comment>
+        <translation>格式工具栏</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="900"/>
+        <source>Pic&amp;k color</source>
+        <comment>Edit menu</comment>
+        <translation>选取颜色(&amp;K)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="910"/>
+        <source>Color &amp;branch</source>
+        <comment>Edit menu</comment>
+        <translation>着色该分支(&amp;B)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="920"/>
+        <source>Color sub&amp;tree</source>
+        <comment>Edit menu</comment>
+        <translation>着色子树(&amp;T)</translation>
+    </message>
+    <message>
+        <source>No Frame</source>
+        <comment>Branch attribute</comment>
+        <translation type="obsolete">无边框</translation>
+    </message>
+    <message>
+        <source>RectangleBranch attribute</source>
+        <translation type="obsolete">举行分支属性</translation>
+    </message>
+    <message>
+        <source>Include images vertically</source>
+        <comment>Branch attribute</comment>
+        <translation type="obsolete">在垂直方向包含图象</translation>
+    </message>
+    <message>
+        <source>Include images horizontally</source>
+        <comment>Branch attribute</comment>
+        <translation type="obsolete">在水平方向包含图象</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="959"/>
+        <source>Hide link if object is not selected</source>
+        <comment>Branch attribute</comment>
+        <translation>当对象未选中时隐藏链接</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="966"/>
+        <source>&amp;Use color of heading for link</source>
+        <comment>Branch attribute</comment>
+        <translation>让链接使用标题的颜色(&amp;U)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1002"/>
+        <source>View Actions</source>
+        <comment>View Toolbar name</comment>
+        <translation>查看工具栏</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1008"/>
+        <source>reset Zoom</source>
+        <comment>View action</comment>
+        <translation>正常大小</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1015"/>
+        <source>Zoom in</source>
+        <comment>View action</comment>
+        <translation>放大</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1022"/>
+        <source>Zoom out</source>
+        <comment>View action</comment>
+        <translation>缩小</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1038"/>
+        <source>Show Note Editor</source>
+        <comment>View action</comment>
+        <translation>显示注解编辑器</translation>
+    </message>
+    <message>
+        <source>Show history window</source>
+        <comment>View action</comment>
+        <translation type="obsolete">显示历史窗口</translation>
+    </message>
+    <message>
+        <source>Next Window</source>
+        <comment>View action</comment>
+        <translation type="obsolete">下一窗口</translation>
+    </message>
+    <message>
+        <source>Previous Window</source>
+        <comment>View action</comment>
+        <translation type="obsolete">上一窗口</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1095"/>
+        <source>Modes when using modifiers</source>
+        <comment>Modifier Toolbar name</comment>
+        <translation>修饰键模式工具栏</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1100"/>
+        <source>Use modifier to color branches</source>
+        <comment>Mode modifier</comment>
+        <translation>使用修饰键着色分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1108"/>
+        <source>Use modifier to copy</source>
+        <comment>Mode modifier</comment>
+        <translation>使用修饰键复制</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1115"/>
+        <source>Use modifier to draw xLinks</source>
+        <comment>Mode modifier</comment>
+        <translation>使用修饰键绘制 xLinks</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1380"/>
+        <source>Set application to open pdf files</source>
+        <comment>Settings action</comment>
+        <translation>设置用于打开 pdf 文件的应用程序</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1385"/>
+        <source>Set application to open external links</source>
+        <comment>Settings action</comment>
+        <translation>设置用于打开外部链接的应用程序</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1426"/>
+        <source>Edit branch after adding it</source>
+        <comment>Settings action</comment>
+        <translation>添加分支后编辑该分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1433"/>
+        <source>Select branch after adding it</source>
+        <comment>Settings action</comment>
+        <translation>添加分支后选中该分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1440"/>
+        <source>Select existing heading</source>
+        <comment>Settings action</comment>
+        <translation>选中已存在的标题文本</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1447"/>
+        <source>Delete key</source>
+        <comment>Settings action</comment>
+        <translation>删除键</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1455"/>
+        <source>Exclusive flags</source>
+        <comment>Settings action</comment>
+        <translation>互斥标记</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1462"/>
+        <source>Use hide flags</source>
+        <comment>Settings action</comment>
+        <translation>使用隐藏标记</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1506"/>
+        <source>&amp;Help</source>
+        <comment>Help menubar entry</comment>
+        <translation>帮助(&amp;H)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1509"/>
+        <source>Open VYM Documentation (pdf) </source>
+        <comment>Help action</comment>
+        <translation>打开 VYM 文档(pdf)<byte value="x9"/></translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1519"/>
+        <source>About VYM</source>
+        <comment>Help action</comment>
+        <translation>关于 VYM</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1524"/>
+        <source>About QT</source>
+        <comment>Help action</comment>
+        <translation>关于 QT</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1552"/>
+        <source>Remove</source>
+        <comment>Context menu name</comment>
+        <translation>删除</translation>
+    </message>
+    <message>
+        <source>URLs and vymLinks</source>
+        <comment>Context menu name</comment>
+        <translation type="obsolete">URL 以及 vym链接</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1591"/>
+        <source>Edit XLink</source>
+        <comment>Context menu name</comment>
+        <translation>编辑 XLink</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1592"/>
+        <source>Follow XLink</source>
+        <comment>Context menu name</comment>
+        <translation>跟随 XLink</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1599"/>
+        <source>Save image</source>
+        <comment>Context action</comment>
+        <translation>保存图象</translation>
+    </message>
+    <message>
+        <source>The directory %1 is not empty.
+Do you risk to overwrite its contents?</source>
+        <comment>write directory</comment>
+        <translation type="obsolete">目录 %1 非空。
+您希望冒险覆盖其内容吗?</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="301"/>
+        <source>&amp;New map</source>
+        <comment>File menu</comment>
+        <translation>新建导图(&amp;N)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="308"/>
+        <source>&amp;Copy to new map</source>
+        <comment>File menu</comment>
+        <translation>复制到新导图(&amp;C)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="309"/>
+        <source>Copy selection to mapcenter of a new map</source>
+        <comment>Status tip File menu</comment>
+        <translation>复制选区到新导图的图心</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="532"/>
+        <source>Add mapcenter</source>
+        <comment>Canvas context menu</comment>
+        <translation>添加图心</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="631"/>
+        <source>Sort children</source>
+        <comment>Edit menu</comment>
+        <translation>子分支排序</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="661"/>
+        <source>Unscroll childs</source>
+        <comment>Edit menu</comment>
+        <translation>展开子分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="662"/>
+        <source>Unscroll all scrolled branches in selected subtree</source>
+        <translation>在选择子树里展开所有卷起的分支</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="707"/>
+        <source>Edit local URL...</source>
+        <comment>Edit menu</comment>
+        <translation>编辑本地 URL...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="708"/>
+        <source>Edit local URL</source>
+        <translation>编辑本地 URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="723"/>
+        <source>Create URL to Novell Bugzilla</source>
+        <comment>Edit menu</comment>
+        <translation>创建至 Novell Bugzilla 的 URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="724"/>
+        <source>Create URL to Novell Bugzilla</source>
+        <translation>创建至 Novell Bugzilla 的 URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="730"/>
+        <source>Create URL to Novell FATE</source>
+        <comment>Edit menu</comment>
+        <translation>创建至 Novell FATE 的 URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="731"/>
+        <source>Create URL to Novell FATE</source>
+        <translation>创建至 Novell FATE 的 URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="874"/>
+        <source>Property window</source>
+        <comment>Dialog to edit properties of selection</comment>
+        <translation>属性窗口</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="875"/>
+        <source>Set properties for selection</source>
+        <translation>设置选区属性</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="939"/>
+        <source>Linkstyle Curve</source>
+        <translation>曲线链接样式</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="951"/>
+        <source>Linkstyle Thick Curve</source>
+        <translation>粗曲线链接样式</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="974"/>
+        <source>Set &amp;Link Color</source>
+        <translation>设置链接颜色(&amp;L)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="980"/>
+        <source>Set &amp;Selection Color</source>
+        <translation>设置选区颜色(&amp;S)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="981"/>
+        <source>Set Selection Color</source>
+        <translation>设置选区颜色</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="992"/>
+        <source>Set &amp;Background image</source>
+        <translation>设置背景图像(&amp;B)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="993"/>
+        <source>Set Background image</source>
+        <translation>设置背景图像</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1029"/>
+        <source>Show selection</source>
+        <comment>View action</comment>
+        <translation>显示选区</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1030"/>
+        <source>Show selection</source>
+        <translation>显示选区</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1047"/>
+        <source>History Window</source>
+        <comment>View action</comment>
+        <translation>历史窗口</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1048"/>
+        <source>Show History Window</source>
+        <translation>显示历史窗口</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1060"/>
+        <source>Antialiasing</source>
+        <comment>View action</comment>
+        <translation>反锯齿</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1061"/>
+        <source>Antialiasing</source>
+        <translation>反锯齿</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1068"/>
+        <source>Smooth pixmap transformations</source>
+        <comment>View action</comment>
+        <translation>平滑位图变形</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1076"/>
+        <source>Next Map</source>
+        <comment>View action</comment>
+        <translation>下一导图</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1082"/>
+        <source>Previous Map</source>
+        <comment>View action</comment>
+        <translation>上一导图</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1136"/>
+        <source>Note</source>
+        <comment>SystemFlag</comment>
+        <translation>注解</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1139"/>
+        <source>URL to Document </source>
+        <comment>SystemFlag</comment>
+        <translation>到文档的 URL</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1142"/>
+        <source>Link to another vym map</source>
+        <comment>SystemFlag</comment>
+        <translation>至另一 vym 导图的链接</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1145"/>
+        <source>subtree is scrolled</source>
+        <comment>SystemFlag</comment>
+        <translation>子树已卷起</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1148"/>
+        <source>subtree is temporary scrolled</source>
+        <comment>SystemFlag</comment>
+        <translation>子树暂时卷起</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1151"/>
+        <source>Hide object in exported maps</source>
+        <comment>SystemFlag</comment>
+        <translation>导出时将被隐藏的对象</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1235"/>
+        <source>I just love...</source>
+        <comment>Standardflag</comment>
+        <translation>我只是喜欢 ...</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1256"/>
+        <source>Important</source>
+        <comment>Freemind-Flag</comment>
+        <translation>重要</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1261"/>
+        <source>Priority</source>
+        <comment>Freemind-Flag</comment>
+        <translation>优先级</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1265"/>
+        <source>Back</source>
+        <comment>Freemind-Flag</comment>
+        <translation>返回</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1268"/>
+        <source>Forward</source>
+        <comment>Freemind-Flag</comment>
+        <translation>前进</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1271"/>
+        <source>Look here</source>
+        <comment>Freemind-Flag</comment>
+        <translation>看这里</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1274"/>
+        <source>Dangerous</source>
+        <comment>Freemind-Flag</comment>
+        <translation>危险</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1277"/>
+        <source>Don&apos;t forget</source>
+        <comment>Freemind-Flag</comment>
+        <translation>不要忘记</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1280"/>
+        <source>Flag</source>
+        <comment>Freemind-Flag</comment>
+        <translation>标记</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1284"/>
+        <source>Home</source>
+        <comment>Freemind-Flag</comment>
+        <translation>家</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1288"/>
+        <source>Telephone</source>
+        <comment>Freemind-Flag</comment>
+        <translation>电话</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1291"/>
+        <source>Music</source>
+        <comment>Freemind-Flag</comment>
+        <translation>音乐</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1294"/>
+        <source>Mailbox</source>
+        <comment>Freemind-Flag</comment>
+        <translation>邮箱</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1297"/>
+        <source>Maix</source>
+        <comment>Freemind-Flag</comment>
+        <translation>Maix</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1300"/>
+        <source>Password</source>
+        <comment>Freemind-Flag</comment>
+        <translation>密码</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1303"/>
+        <source>To be improved</source>
+        <comment>Freemind-Flag</comment>
+        <translation>将要改进</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1306"/>
+        <source>Stop</source>
+        <comment>Freemind-Flag</comment>
+        <translation>停止</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1309"/>
+        <source>Magic</source>
+        <comment>Freemind-Flag</comment>
+        <translation>神奇</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1312"/>
+        <source>To be discussed</source>
+        <comment>Freemind-Flag</comment>
+        <translation>将要讨论</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1315"/>
+        <source>Reminder</source>
+        <comment>Freemind-Flag</comment>
+        <translation>提醒</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1318"/>
+        <source>Excellent</source>
+        <comment>Freemind-Flag</comment>
+        <translation>优异</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1321"/>
+        <source>Linux</source>
+        <comment>Freemind-Flag</comment>
+        <translation>Linux</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1324"/>
+        <source>Sweet</source>
+        <comment>Freemind-Flag</comment>
+        <translation>甜蜜</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1390"/>
+        <source>Set path for macros</source>
+        <comment>Settings action</comment>
+        <translation>设置宏路径</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1391"/>
+        <source>Set path for macros</source>
+        <translation>设置宏路径</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1395"/>
+        <source>Set number of undo levels</source>
+        <comment>Settings action</comment>
+        <translation>设置 undo 级</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1396"/>
+        <source>Set number of undo levels</source>
+        <translation>设置 undo 级</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1402"/>
+        <source>Autosave</source>
+        <comment>Settings action</comment>
+        <translation>自动保存</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1403"/>
+        <source>Autosave</source>
+        <translation>自动保存</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1410"/>
+        <source>Autosave time</source>
+        <comment>Settings action</comment>
+        <translation>自动保存时间</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1411"/>
+        <source>Autosave time</source>
+        <translation>自动保存时间</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1416"/>
+        <source>Write backup file on save</source>
+        <comment>Settings action</comment>
+        <translation>保存时备份</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1417"/>
+        <source>Write backup file on save</source>
+        <translation>保存时备份</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1469"/>
+        <source>Animation</source>
+        <comment>Settings action</comment>
+        <translation>动画</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1470"/>
+        <source>Animation</source>
+        <translation>动画</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1514"/>
+        <source>Open VYM example maps </source>
+        <comment>Help action</comment>
+        <translation>打开  VYM 的例子导图</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1515"/>
+        <source>Open VYM example maps </source>
+        <translation>打开  VYM 的例子导图</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1569"/>
+        <source>References (URLs, vymLinks, ...)</source>
+        <comment>Context menu name</comment>
+        <translation>引用 (URL, vym链接...)</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="1645"/>
+        <source>&amp;%1 %2</source>
+        <translation>&amp;%1 %2</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2108"/>
+        <source>Load Freemind map</source>
+        <translation>导入 Freemid 导图</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="2202"/>
+        <source>Export as CSV</source>
+        <translation>导出为 CSV</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3268"/>
+        <source>Directory with vym macros:</source>
+        <translation>vym宏的目录:</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3300"/>
+        <source>QInputDialog::getInteger()</source>
+        <translation>QInputDialog::getInteger()</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3281"/>
+        <source>Number of undo/redo levels:</source>
+        <translation>撤消级别 :</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3286"/>
+        <source>Settings have been changed. The next map opened will have &quot;%1&quot; undo/redo levels</source>
+        <translation>设置已更改。下一个导图将有 %1 个撤消级别</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3301"/>
+        <source>Number of seconds before autosave:</source>
+        <translation>自动保存的秒数:</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3411"/>
+        <source>History for %1</source>
+        <comment>Window Caption</comment>
+        <translation>%1 的历史</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3735"/>
+        <source>Couldn&apos;t find the documentation %1 in:
+%2</source>
+        <translation>在:
+%2 中找不到%1 的文档 </translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3771"/>
+        <source>Load vym example map</source>
+        <translation>载入 vym 例子导图</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3820"/>
+        <source>Couldn&apos;t find a macro at  %1.
+</source>
+        <translation>在 %1 不能找到宏
+</translation>
+    </message>
+    <message>
+        <location filename="../mainwindow.cpp" line="3821"/>
+        <source>Set directory for vym macros</source>
+        <translation>设置宏目录</translation>
+    </message>
+</context>
+<context>
+    <name>MapEditor</name>
+    <message>
+        <location filename="../mapeditor.cpp" line="1703"/>
+        <source>Critical Parse Error</source>
+        <translation>严重解析错误</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4136"/>
+        <source>Overwrite</source>
+        <translation>覆盖</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4137"/>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2129"/>
+        <source>Critical Export Error</source>
+        <translation>严重导出错误</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2432"/>
+        <source>Critical Error</source>
+        <translation>严重错误</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3474"/>
+        <source>Enter URL:</source>
+        <translation>请输入 URL:</translation>
+    </message>
+    <message>
+        <source>vym map</source>
+        <translation type="obsolete">vym 导图</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4067"/>
+        <source>Images</source>
+        <translation>图象</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4314"/>
+        <source>Critical Import Error</source>
+        <translation>严重导入错误</translation>
+    </message>
+    <message>
+        <source>New Map</source>
+        <comment>Heading of mapcenter in new map</comment>
+        <translation type="obsolete">新建导图</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4130"/>
+        <source>The file %1 exists already.
+Do you want to overwrite it?</source>
+        <translation>文件 %1 已存在。
+您希望覆盖它吗?</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2129"/>
+        <source>MapEditor::exportXML couldn&apos;t open %1</source>
+        <translation>导图编辑器:导出 XML 无法打开 %1</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4314"/>
+        <source>Cannot find the directory %1</source>
+        <translation>无法找到目录 %1</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3579"/>
+        <source>Link to another map</source>
+        <translation>至另一导图的链接</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4072"/>
+        <source>Load image</source>
+        <translation>载入图象</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4362"/>
+        <source>Choose directory structure to import</source>
+        <translation>请选择要导入的目录结构</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="110"/>
+        <source>unnamed</source>
+        <translation>未命名</translation>
+    </message>
+    <message>
+        <source>History for </source>
+        <translation type="obsolete">历史<byte value="x9"/></translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="4116"/>
+        <source>Save image</source>
+        <translation>保存图象</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2426"/>
+        <source>Critical Parse Error while reading %1</source>
+        <translation>试图读取 %1 时发生严重解析错误</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2432"/>
+        <source>Could not read %1</source>
+        <translation>无法读取 %1</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3324"/>
+        <source>Warning</source>
+        <translation>警告</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3324"/>
+        <source>Can&apos;t get color of heading,
+there&apos;s no branch selected</source>
+        <translation>无法取得标题颜色,
+未选中任何分支</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1795"/>
+        <source>Critical Load Error</source>
+        <translation>严重载入错误</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1602"/>
+        <source>Couldn&apos;t create temporary directory before load
+</source>
+        <translation>无法在载入前创建临时目录
+</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1645"/>
+        <source>Couldn&apos;t find a map (*.xml) in .vym archive.
+</source>
+        <translation>无法在 .vym 存档中找到导图(*.xml)。
+</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1741"/>
+        <source>The map %1
+did not use the compressed vym file format.
+Writing it uncompressed will also write images 
+and flags and thus may overwrite files in the given directory
+
+Do you want to write the map</source>
+        <translation>导图 %1
+未使用 vym 压缩文件格式。
+如果写入的话,图象与标记都会写入,这可能导致
+指定目录中的文件被覆盖。
+
+您希望写入导图吗</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1746"/>
+        <source>compressed (vym default)</source>
+        <translation>压缩(vym 默认)</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1747"/>
+        <source>uncompressed</source>
+        <translation>未压缩</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1782"/>
+        <source>Save Error</source>
+        <translation>保存错误</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1778"/>
+        <source>%1
+could not be removed before saving</source>
+        <translation>%1
+在保存时不能移除</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1783"/>
+        <source>%1
+could not be renamed before saving</source>
+        <translation>%1
+在保存时不能重命名</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="1796"/>
+        <source>Couldn&apos;t create temporary directory before save
+</source>
+        <translation>无法在保存前创建临时目录</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2033"/>
+        <source>Export map as image</source>
+        <translation>将导图导出为图象</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2110"/>
+        <source>Export XML to directory</source>
+        <translation>导出 XML 至目录</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="2260"/>
+        <source>Autosave disabled during undo.</source>
+        <translation>在撤消时禁用自动保存。</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3268"/>
+        <source>Load background image</source>
+        <translation>载入背景图像</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3489"/>
+        <source>Text</source>
+        <comment>Filedialog</comment>
+        <translation>文本</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3490"/>
+        <source>Spreadsheet</source>
+        <comment>Filedialog</comment>
+        <translation>电子表格</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3491"/>
+        <source>Textdocument</source>
+        <comment>Filedialog</comment>
+        <translation>文本文档</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3492"/>
+        <source>Images</source>
+        <comment>Filedialog</comment>
+        <translation>图象</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3495"/>
+        <source>Set URL to a local file</source>
+        <translation>设置到本地文档的 URL</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="3727"/>
+        <source>%1 items on map
+</source>
+        <comment>Info about map</comment>
+        <translation>在导图上的 %1 条目</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="5291"/>
+        <source>The file of the map  on disk has changed:
+
+   %1
+
+Do you want to reload that map with the new file?</source>
+        <translation>在磁盘上的导图文件发生了更改:
+
+%1
+
+您想要从新文件中重新载入吗?</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="5297"/>
+        <source>Reload</source>
+        <translation>重新载入</translation>
+    </message>
+    <message>
+        <location filename="../mapeditor.cpp" line="5298"/>
+        <source>Ignore</source>
+        <translation>忽略</translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="../file.cpp" line="447"/>
+        <source>This is not an image.</source>
+        <translation>这不是图象。</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="557"/>
+        <source>Critical Export Error</source>
+        <translation>严重导出错误</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="352"/>
+        <source>Could not write %1</source>
+        <translation>无法写入 %1</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="353"/>
+        <source>Export failed.</source>
+        <translation>导出失败。</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="524"/>
+        <source>Check &quot;%1&quot; in
+%2</source>
+        <translation>在 %2 中检查
+&quot;%1&quot;</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="557"/>
+        <source>Could not read %1</source>
+        <translation>无法读取 %1</translation>
+    </message>
+    <message>
+        <location filename="../xsltproc.cpp" line="82"/>
+        <source>Critical Error</source>
+        <translation>严重错误</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="272"/>
+        <source>Couldn&apos;t start zip to compress data.</source>
+        <translation>无法启动 zip 以压缩数据。</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="282"/>
+        <source>zip didn&apos;t exit normally</source>
+        <translation>zip 未正常退出</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="379"/>
+        <source>Couldn&apos;t start unzip to decompress data.</source>
+        <translation>无法启动 unzip 以解压数据。</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="326"/>
+        <source>unzip didn&apos;t exit normally</source>
+        <translation>unzip 未正常退出</translation>
+    </message>
+    <message>
+        <location filename="../xsltproc.cpp" line="77"/>
+        <source>Could not start %1</source>
+        <translation>无法启动 %1</translation>
+    </message>
+    <message>
+        <location filename="../xsltproc.cpp" line="83"/>
+        <source>%1 didn&apos;t exit normally</source>
+        <translation>%1 未正常退出</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="77"/>
+        <source>The file %1 exists already.
+Do you want to overwrite it?</source>
+        <translation>文件 %1 已存在。您希望覆盖它吗?</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="105"/>
+        <source>Overwrite</source>
+        <translation>覆盖</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="106"/>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="449"/>
+        <source>Sorry, no preview for
+multiple selected files.</source>
+        <translation>对不起,无法预览
+多个选中文件。</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="294"/>
+        <source>Exporting the %1 bookmarks will overwrite
+your existing bookmarks file.</source>
+        <translation>导出 %1 书签将覆盖您现有的书签。</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="295"/>
+        <source>Warning: Overwriting %1 bookmarks</source>
+        <translation>警告:正在覆盖 %1 书签</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="278"/>
+        <source>Warning</source>
+        <translation>警告</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="279"/>
+        <source>Couldn&apos;t find script %1
+to notifiy Browsers of changed bookmarks.</source>
+        <translation>无法找到脚本 %1
+以提醒浏览器书签已更改。</translation>
+    </message>
+    <message>
+        <location filename="../main.cpp" line="192"/>
+        <source>Error</source>
+        <translation>错误</translation>
+    </message>
+    <message>
+        <location filename="../imports.cpp" line="17"/>
+        <source>Couldn&apos;t access temporary directory
+</source>
+        <translation>无法访问临时目录
+</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="131"/>
+        <source>Export as ASCII</source>
+        <translation>导出为 ASCII</translation>
+    </message>
+    <message>
+        <location filename="../exports.cpp" line="131"/>
+        <source>(still experimental)</source>
+        <translation>(仍处于试验阶段)</translation>
+    </message>
+    <message>
+        <location filename="../file.cpp" line="99"/>
+        <source>The directory %1 is not empty.
+Do you risk to overwrite its contents?</source>
+        <comment>write directory</comment>
+        <translation>目录 %1 非空。
+您希望冒险覆盖其内容吗?</translation>
+    </message>
+    <message>
+        <location filename="../main.cpp" line="193"/>
+        <source>Couldn&apos;t open %1.
+</source>
+        <translation>不能打开 %1.
+</translation>
+    </message>
+</context>
+<context>
+    <name>ShowTextDialog</name>
+    <message>
+        <location filename="../showtextdialog.ui" line="16"/>
+        <source>Dialog</source>
+        <translation>对话框</translation>
+    </message>
+    <message>
+        <location filename="../showtextdialog.ui" line="52"/>
+        <source>Close</source>
+        <translation>关闭</translation>
+    </message>
+</context>
+<context>
+    <name>SimpleScriptEditor</name>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="61"/>
+        <source>Save script</source>
+        <translation>保存脚本</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="73"/>
+        <source>The file %1
+exists already.
+Do you want to overwrite it?</source>
+        <comment>dialog &apos;save as&apos;</comment>
+        <translation>文件 %1 
+已存在。
+您希望覆盖它吗?</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="78"/>
+        <source>Overwrite</source>
+        <translation>覆盖</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="79"/>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="105"/>
+        <source>Load script</source>
+        <translation>加载脚本</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="116"/>
+        <source>Error</source>
+        <translation>错误</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.cpp" line="117"/>
+        <source>Couldn&apos;t open %1.
+</source>
+        <translation>不能打开 %1.
+</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="13"/>
+        <source>Simple Script Editor</source>
+        <translation>简单脚本编辑器</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="38"/>
+        <source>Save as</source>
+        <translation>另存为</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="48"/>
+        <source>Save</source>
+        <translation>保存</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="51"/>
+        <source>Qt::CTRL + Qt::Key_S</source>
+        <translation>Qt::CTRL + Qt::Key_S</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="58"/>
+        <source>Open</source>
+        <translation>打开</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="61"/>
+        <source>Qt::CTRL +Qt::Key_O</source>
+        <translation>Qt::CTRL +Qt::Key_O</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="68"/>
+        <source>Run</source>
+        <translation>运行</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="71"/>
+        <source>Qt::CTRL + Qt::Key_R</source>
+        <translation>Qt::CTRL + Qt::Key_R</translation>
+    </message>
+    <message>
+        <location filename="../simplescripteditor.ui" line="78"/>
+        <source>Close</source>
+        <translation>关闭</translation>
+    </message>
+</context>
+<context>
+    <name>TextEditor</name>
+    <message>
+        <location filename="../texteditor.cpp" line="202"/>
+        <source>&amp;Import...</source>
+        <translation>导入(&amp;I)...</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="211"/>
+        <source>&amp;Export...</source>
+        <translation>导出(&amp;E)...</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="219"/>
+        <source>Export &amp;As... (HTML)</source>
+        <translation>导出为(&amp;A)... (HTML)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="225"/>
+        <source>Export &amp;As...(ASCII)</source>
+        <translation>导出为(&amp;A)... (ASCII)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="675"/>
+        <source>Print Note</source>
+        <translation>打印注解</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="233"/>
+        <source>&amp;Print...</source>
+        <translation>打印(&amp;P)...</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="246"/>
+        <source>&amp;Edit</source>
+        <translation>编辑(&amp;E)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="249"/>
+        <source>&amp;Undo</source>
+        <translation>撤销(&amp;U)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="257"/>
+        <source>&amp;Redo</source>
+        <translation>重做(&amp;R)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="266"/>
+        <source>Select and copy &amp;all</source>
+        <translation>选择并复制全部(&amp;A)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="273"/>
+        <source>&amp;Copy</source>
+        <translation>复制(&amp;C)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="281"/>
+        <source>Cu&amp;t</source>
+        <translation>剪切(&amp;T)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="289"/>
+        <source>&amp;Paste</source>
+        <translation>粘贴(&amp;P)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="297"/>
+        <source>&amp;Delete All</source>
+        <translation>删除全部(&amp;D)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="314"/>
+        <source>&amp;Font hint</source>
+        <translation>字体微调(&amp;F)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="347"/>
+        <source>&amp;Color...</source>
+        <translation>颜色(&amp;C)...</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="353"/>
+        <source>&amp;Bold</source>
+        <translation>粗体(&amp;B)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="361"/>
+        <source>&amp;Italic</source>
+        <translation>斜体(&amp;I)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="369"/>
+        <source>&amp;Underline</source>
+        <translation>下划线(&amp;U)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="400"/>
+        <source>&amp;Left</source>
+        <translation>左对齐(&amp;L)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="406"/>
+        <source>C&amp;enter</source>
+        <translation>居中(&amp;E)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="412"/>
+        <source>&amp;Right</source>
+        <translation>右对齐(&amp;R)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="418"/>
+        <source>&amp;Justify</source>
+        <translation>两端对齐(&amp;J)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="428"/>
+        <source>&amp;Settings</source>
+        <translation>设置(&amp;S)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="431"/>
+        <source>Set &amp;fixed font</source>
+        <translation>设置等宽字体(&amp;F)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="437"/>
+        <source>Set &amp;variable font</source>
+        <translation>设置非等宽字体(&amp;V)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="443"/>
+        <source>&amp;fixed font is default</source>
+        <translation>默认使用等宽字体(&amp;F)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="557"/>
+        <source>Export Note to single file</source>
+        <translation>导出注解至文件</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="645"/>
+        <source>Overwrite</source>
+        <translation>覆盖</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="646"/>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="631"/>
+        <source>Export Note to single file (ASCII)</source>
+        <translation>导出注解至文件(ASCII)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="380"/>
+        <source>Subs&amp;cript</source>
+        <translation>下标(&amp;C)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="388"/>
+        <source>Su&amp;perscript</source>
+        <translation>上标(&amp;P)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="457"/>
+        <source>Note Editor</source>
+        <translation>注解编辑器</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="310"/>
+        <source>F&amp;ormat</source>
+        <translation>格式(&amp;O)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="244"/>
+        <source>Edit Actions</source>
+        <translation>编辑工具栏</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="308"/>
+        <source>Format Actions</source>
+        <translation>格式工具栏</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="197"/>
+        <source>Note Actions</source>
+        <translation>注解</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="38"/>
+        <source>Ready</source>
+        <comment>Statusbar message</comment>
+        <translation>就绪</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="163"/>
+        <source>No filename available for this note.</source>
+        <comment>Statusbar message</comment>
+        <translation>该注解无可用文件名</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="39"/>
+        <source>Note Editor</source>
+        <comment>Window caption</comment>
+        <translation>注解编辑器</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="199"/>
+        <source>&amp;Note</source>
+        <comment>Menubar</comment>
+        <translation>注解(&amp;N)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="203"/>
+        <source>Import</source>
+        <comment>Status tip for Note menu</comment>
+        <translation>导入</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="212"/>
+        <source>Export Note (HTML)</source>
+        <comment>Status tip for Note menu</comment>
+        <translation>导出注解(HTML)</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="220"/>
+        <source>Export Note As (HTML) </source>
+        <comment>Status tip for Note Menu</comment>
+        <translation>导出注解为 (HTML)<byte value="x9"/></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="226"/>
+        <source>Export Note As (ASCII) </source>
+        <comment>Status tip for note menu</comment>
+        <translation>导出注解为 (ASCII)<byte value="x9"/></translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="234"/>
+        <source>Print Note</source>
+        <comment>Status tip for note menu</comment>
+        <translation>打印注解</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="250"/>
+        <source>Undo</source>
+        <comment>Status tip for note menu</comment>
+        <translation>撤销</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="258"/>
+        <source>Redo</source>
+        <comment>Status tip for note menu</comment>
+        <translation>重做</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="267"/>
+        <source>Select and copy all</source>
+        <comment>Status tip for note menu</comment>
+        <translation>选择并复制全部</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="274"/>
+        <source>Copy</source>
+        <comment>Status tip for note menu</comment>
+        <translation>复制</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="282"/>
+        <source>Cut</source>
+        <comment>Status tip for note menu</comment>
+        <translation>剪切</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="290"/>
+        <source>Paste</source>
+        <comment>Status tip for note menu</comment>
+        <translation>粘贴</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="298"/>
+        <source>Delete all</source>
+        <comment>Status tip for note menu</comment>
+        <translation>删除全部</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="315"/>
+        <source>Toggle font hint for the whole text</source>
+        <comment>Status tip for note menu</comment>
+        <translation>切换全文字体微调状态</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="432"/>
+        <source>Set fixed font</source>
+        <comment>Status tip for note menu</comment>
+        <translation>设置等宽字体</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="438"/>
+        <source>Set variable font</source>
+        <comment>Status tip for note menu</comment>
+        <translation>设置非等宽字体</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="444"/>
+        <source>Used fixed font by default</source>
+        <comment>Status tip for note menu</comment>
+        <translation>默认使用等宽字体</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="640"/>
+        <source>The file %1
+exists already.
+Do you want to overwrite it?</source>
+        <comment>dialog &apos;save note as&apos;</comment>
+        <translation>文件 %1 已存在。
+您希望覆盖它吗?</translation>
+    </message>
+    <message>
+        <location filename="../texteditor.cpp" line="589"/>
+        <source>Couldn&apos;t export note </source>
+        <comment>dialog &apos;save note as&apos;</comment>
+        <translation>无法导出注解<byte value="x9"/></translation>
+    </message>
+</context>
+<context>
+    <name>WarningDialog</name>
+    <message>
+        <location filename="../warningdialog.ui" line="13"/>
+        <source>VYM - Warning : Foo...</source>
+        <translation>VYM - 警告:Foo...</translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.ui" line="106"/>
+        <source>showAgainBox</source>
+        <translation>再次提醒</translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.ui" line="132"/>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.ui" line="139"/>
+        <source>Ok</source>
+        <translation>确定</translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.cpp" line="11"/>
+        <source>Proceed</source>
+        <translation>进行</translation>
+    </message>
+    <message>
+        <location filename="../warningdialog.cpp" line="15"/>
+        <source>Show this message again</source>
+        <translation>再次显示这条消息</translation>
+    </message>
+</context>
+</TS>
diff --git a/linkablemapobj.cpp b/linkablemapobj.cpp
new file mode 100644 (file)
index 0000000..6751a88
--- /dev/null
@@ -0,0 +1,718 @@
+#include <math.h>
+
+#include "linkablemapobj.h"
+#include "branchobj.h"
+#include "mapeditor.h"
+
+/////////////////////////////////////////////////////////////////
+// LinkableMapObj
+/////////////////////////////////////////////////////////////////
+
+LinkableMapObj::LinkableMapObj():MapObj()
+{
+  //  cout << "Const LinkableMapObj ()\n";
+    init ();
+}
+
+LinkableMapObj::LinkableMapObj(QGraphicsScene* s) :MapObj(s)
+{
+//    cout << "Const LinkableMapObj (s)\n";
+    init ();
+}
+
+LinkableMapObj::LinkableMapObj (LinkableMapObj* lmo) : MapObj (lmo->scene)
+{
+    copy (lmo);
+}
+
+LinkableMapObj::~LinkableMapObj()
+{
+    delete (bottomline);
+       delLink();
+}
+
+void LinkableMapObj::delLink()
+{
+       switch (style)
+       {
+               case Line:
+                       delete (l);
+                       break;
+               case Parabel:
+                       while (!segment.isEmpty()) delete segment.takeFirst();
+                       break;
+               case PolyLine:
+                       delete (p);
+                       break;
+               case PolyParabel:
+                       delete (p);
+                       break;
+               default:
+                       break;
+       }               
+}
+
+void LinkableMapObj::init ()
+{
+    depth=-1;  
+       mapEditor=NULL;
+    childObj=NULL;
+    parObj=NULL;
+    parObjTmpBuf=NULL;
+    parPos=QPointF(0,0);
+    childPos=QPointF(0,0);
+       link2ParPos=false;
+    l=NULL;
+    orientation=UndefinedOrientation;
+    linkwidth=20;              
+       thickness_start=8;
+    style=UndefinedStyle;
+       linkpos=Bottom;
+    arcsegs=13;
+    
+// TODO instead of linkcolor pen.color() could be used all around
+       pen.setWidth (1);
+       pen.setColor (linkcolor);
+       pen.setCapStyle ( Qt::RoundCap );
+       bottomline=scene->addLine(QLineF(1,1,1,1),pen);
+    bottomline->setZValue(Z_LINK);
+    bottomline->show();
+
+    // Prepare showing the selection of a MapObj
+    selected=false;
+
+       hideLinkUnselected=false;
+
+       topPad=botPad=leftPad=rightPad=0;
+
+       repositionRequest=false;
+
+       // Rel Positions
+       relPos=QPointF(0,0);
+       useRelPos=false;
+       useOrientation=true;
+
+       // Reset ID
+       objID="";
+}
+
+void LinkableMapObj::copy (LinkableMapObj* other)
+{
+    MapObj::copy(other);
+       bboxTotal=other->bboxTotal;
+    setLinkStyle(other->style);
+    setLinkColor (other->linkcolor);
+       relPos=other->relPos;
+       useOrientation=other->useOrientation;
+       objID=other->objID;
+}
+
+void LinkableMapObj::setChildObj(LinkableMapObj* o)
+{
+    childObj=o;
+}
+
+void LinkableMapObj::setParObj(LinkableMapObj* o)
+{
+    parObj=o;
+       mapEditor=parObj->getMapEditor();
+}
+
+void LinkableMapObj::setParObjTmp(LinkableMapObj*,QPointF,int)
+{
+}
+
+void LinkableMapObj::unsetParObjTmp()
+{
+}
+
+bool LinkableMapObj::hasParObjTmp()
+{
+       if (parObjTmpBuf) return true;
+       return false;
+}
+
+void LinkableMapObj::setUseRelPos (const bool &b)
+{
+       useRelPos=b;
+}
+
+void LinkableMapObj::setRelPos()
+{
+       if (parObj)
+       {       
+               relPos.setX (absPos.x() - parObj->getChildPos().x() );
+               relPos.setY (absPos.y() - parObj->getChildPos().y() );
+               parObj->calcBBoxSize();
+       }       
+}
+
+void LinkableMapObj::setRelPos(const QPointF &p)
+{
+       relPos=p;
+       if (parObj)
+       {               
+               parObj->calcBBoxSize();
+               requestReposition();
+       }
+}
+
+QPointF LinkableMapObj::getRelPos()
+{
+       if (!parObj) return QPointF();
+       return relPos;
+}
+
+qreal LinkableMapObj::getTopPad()
+{
+       return topPad;
+}
+
+qreal LinkableMapObj::getLeftPad()
+{
+       return leftPad;
+}
+
+qreal LinkableMapObj::getRightPad()
+{
+       return rightPad;
+}
+
+LinkableMapObj::Style LinkableMapObj::getDefLinkStyle ()
+{
+       if (!mapEditor) return UndefinedStyle;
+       Style ls=mapEditor->getMapLinkStyle();
+       switch (ls)
+       {
+               case Line: 
+                       return ls;
+                       break;
+               case Parabel:
+                       return ls;
+                       break;
+               case PolyLine:  
+                       if (depth>1)
+                               return Line;
+                       else    
+                               return ls;
+                       break;
+               case PolyParabel:       
+                       if (depth>1)
+                               return Parabel;
+                       else    
+                               return ls;
+                       break;
+               default: 
+                       break;  
+       }       
+       return UndefinedStyle;
+}
+
+void LinkableMapObj::setLinkStyle(Style newstyle)
+{
+       //if (newstyle=style) return;
+       delLink();
+               
+       style=newstyle;
+
+    if (childObj!=NULL && parObj != NULL)
+    {
+               QGraphicsLineItem *cl;
+               switch (style)
+               {
+                       case UndefinedStyle:
+                               bottomline->hide();
+                               break;
+                       case Line: 
+                               l = scene->addLine(QLineF(1,1,1,1),pen);
+                               l->setZValue(Z_LINK);
+                               if (visible)
+                                       l->show();
+                               else
+                                       l->hide();
+                               break;
+                       case Parabel:
+                               for (int i=0;i<arcsegs;i++)
+                               {
+                                       cl = scene->addLine(QLineF(i*5,0,i*10,100),pen);
+                                       cl->setZValue(Z_LINK);
+                                       if (visible)
+                                               cl->show();
+                                       else
+                                               cl->hide();
+                                       segment.append(cl);
+                               }
+                               pa0.resize (arcsegs+1);
+                               break;
+                       case PolyLine:  
+                               p =scene->addPolygon(QPolygonF(),pen,linkcolor);
+                               p->setZValue(Z_LINK);
+                               if (visible)
+                                       p->show();
+                               else
+                                       p->hide();
+                               pa0.resize (3);
+                               break;
+                       case PolyParabel:       
+                               p = scene->addPolygon(QPolygonF(),pen,linkcolor);
+                               p->setZValue(Z_LINK);
+                               if (visible)
+                                       p->show();
+                               else
+                                       p->hide();
+                               pa0.resize (arcsegs*2+2);
+                               pa1.resize (arcsegs+1);
+                               pa2.resize (arcsegs+1);
+                               break;
+                       default: 
+                               break;  
+               }       
+       } 
+}
+
+LinkableMapObj::Style LinkableMapObj::getLinkStyle()
+{
+       return style;
+}
+
+void LinkableMapObj::setHideLinkUnselected(bool b)
+{
+       hideLinkUnselected=b;
+       setVisibility (visible);
+       updateLink();
+}
+
+bool LinkableMapObj::getHideLinkUnselected()
+{
+       return hideLinkUnselected;
+}
+
+void LinkableMapObj::setLinkPos(Position lp)
+{
+       linkpos=lp;
+}
+
+LinkableMapObj::Position LinkableMapObj::getLinkPos()
+{
+       return linkpos;
+}
+
+void LinkableMapObj::setID (const QString &s)
+{
+       objID=s;
+}
+
+QString LinkableMapObj::getID()
+{
+       return objID;
+}
+
+void LinkableMapObj::setLinkColor()
+{
+       // Overloaded in BranchObj and childs
+       // here only set default color
+       if (mapEditor)
+               setLinkColor (mapEditor->getMapDefLinkColor());
+}
+
+void LinkableMapObj::setLinkColor(QColor col)
+{
+       linkcolor=col;
+       pen.setColor(col);
+    bottomline->setPen( pen );
+       switch (style)
+       {
+               case Line:
+                       l->setPen( pen);
+                       break;  
+               case Parabel:   
+                       for (int i=0; i<segment.size(); ++i)
+                               segment.at(i)->setPen( pen);
+                       break;
+               case PolyLine:
+                       p->setBrush( QBrush(col));
+                       p->setPen( pen);
+                       break;
+               case PolyParabel:       
+                       p->setBrush( QBrush(col));
+                       p->setPen( pen);
+                       break;
+               default:
+                       break;
+       } // switch (style)     
+}
+
+QColor LinkableMapObj::getLinkColor()
+{
+       return linkcolor;
+}
+
+void LinkableMapObj::setVisibility (bool v)
+{
+       MapObj::setVisibility (v);
+       bool visnow=visible;
+
+       // We can hide the link, while object is not selected
+       if (hideLinkUnselected && !selected)
+               visnow=false;
+
+       if (visnow) 
+       {
+               bottomline->show();
+               switch (style)
+               {
+                       case Line:
+                               if (l) l->show();
+                               break;
+                       case Parabel:   
+                               for (int i=0; i<segment.size(); ++i)
+                                       segment.at(i)->show();
+                               break;  
+                       case PolyLine:
+                               if (p) p->show();
+                               break;
+                       case PolyParabel:       
+                               if (p) p->show();
+                               break;
+                       default:
+                               break;
+               }
+       } else 
+       {
+               bottomline->hide();
+               switch (style)
+               {
+                       case Line:
+                               if (l) l->hide();
+                               break;
+                       case Parabel:   
+                               for (int i=0; i<segment.size(); ++i)
+                                       segment.at(i)->hide();
+                               break;  
+                       case PolyLine:
+                               if (p) p->hide();
+                               break;
+                       case PolyParabel:       
+                               if (p) p->hide();
+                               break;
+                       default:
+                               break;
+               }
+       }       
+}
+
+void LinkableMapObj::setOrientation()
+{
+       Orientation orientOld=orientation;
+
+       if (!parObj) 
+       {
+               orientation=UndefinedOrientation;
+               return;
+       }
+               
+    // Set orientation, first look for orientation of parent
+    if (parObj->getOrientation() != UndefinedOrientation ) 
+               // use the orientation of the parent:
+               orientation=parObj->getOrientation();
+    else
+    {
+               // calc orientation depending on position rel to parent
+               if (absPos.x() < QPointF(parObj->getChildPos() ).x() )
+                       orientation=LeftOfCenter; 
+               else
+                       orientation=RightOfCenter;
+    }
+       if (orientOld!=orientation) requestReposition();
+}
+
+void LinkableMapObj::updateLink()
+{
+    // needs:
+    // childPos of parent
+    // orient   of parent
+    // style
+    // 
+    // sets:
+    // orientation
+    // childPos        (by calling setDockPos())
+    // parPos          (by calling setDockPos())
+       //  bottomlineY
+    // drawing of the link itself
+
+       // updateLink is called from move, but called from constructor we don't
+       // have parents yet...
+       if (style==UndefinedStyle) return;      
+
+       switch (linkpos)
+       {
+               case Middle:
+                       bottomlineY=bbox.top() + bbox.height()/2;       // draw link to middle (of frame)
+                       break;
+               case Bottom:
+                       bottomlineY=bbox.bottom()-1;    // draw link to bottom of box
+                       break;
+       }
+       
+    double p2x,p2y;                                                            // Set P2 Before setting
+       if (!link2ParPos)
+       {
+               p2x=QPointF( parObj->getChildPos() ).x();       // P1, we have to look at
+               p2y=QPointF( parObj->getChildPos() ).y();       // orientation
+       } else  
+       {
+               p2x=QPointF( parObj->getParPos() ).x(); 
+               p2y=QPointF( parObj->getParPos() ).y();
+       } 
+
+       setDockPos(); // Call overloaded method
+       setOrientation();
+
+       double p1x=parPos.x();  // Link is drawn from P1 to P2
+       double p1y=parPos.y();
+
+       double vx=p2x - p1x;    // V=P2-P1
+       double vy=p2y - p1y;
+
+       // Draw the horizontal line below heading (from ChildPos to ParPos)
+       //bottomline->prepareGeometryChange();
+       bottomline->setLine (QLine (qRound(childPos.x()),
+               qRound(childPos.y()),
+               qRound(p1x),
+               qRound(p1y) ));
+
+       double a;       // angle
+       if (vx > -0.000001 && vx < 0.000001)
+               a=M_PI_2;
+       else
+               a=atan( vy / vx );
+       // "turning point" for drawing polygonal links
+       QPointF tp (-qRound(sin (a)*thickness_start), qRound(cos (a)*thickness_start)); 
+       
+    // Draw the link
+       switch (style)
+       {
+               case Line:
+                       //l->prepareGeometryChange();
+                       l->setLine( QLine(qRound (parPos.x()),
+                               qRound(parPos.y()),
+                               qRound(p2x),
+                               qRound(p2y) ));
+                       break;  
+               case Parabel:   
+                       parabel (pa0, p1x,p1y,p2x,p2y);
+                       for (int i=0; i<segment.size(); ++i)
+                       {
+                               //segment.at(i)->prepareGeometryChange();
+                               segment.at(i)->setLine(QLineF( pa0.at(i).x(), pa0.at(i).y(),pa0.at(i+1).x(),pa0.at(i+1).y()));
+                       }       
+                       break;
+               case PolyLine:
+                       pa0.clear();
+                       pa0<<QPointF (qRound(p2x+tp.x()), qRound(p2y+tp.y()));
+                       pa0<<QPointF (qRound(p2x-tp.x()), qRound(p2y-tp.y()));
+                       pa0<<QPointF (qRound (parPos.x()), qRound(parPos.y()) );
+                       //p->prepareGeometryChange();
+                       p->setPolygon(QPolygonF (pa0));
+                       break;
+               case PolyParabel:       
+                       parabel (pa1, p1x,p1y,p2x+tp.x(),p2y+tp.y());
+                       parabel (pa2, p1x,p1y,p2x-tp.x(),p2y-tp.y());
+                       pa0.clear();
+                       for (int i=0;i<=arcsegs;i++)
+                               pa0 << QPointF (pa1.at(i));
+                       for (int i=0;i<=arcsegs;i++)
+                               pa0 << QPointF (pa2.at(arcsegs-i));
+                       //p->prepareGeometryChange();
+                       p->setPolygon(QPolygonF (pa0));
+                       break;
+               default:
+                       break;
+       } // switch (style)     
+}
+       
+LinkableMapObj* LinkableMapObj::getChildObj()
+{
+    return childObj;
+}
+
+LinkableMapObj* LinkableMapObj::getParObj()
+{
+    return parObj;
+}
+
+LinkableMapObj* LinkableMapObj::findObjBySelect (QString s)
+{
+       LinkableMapObj *lmo=this;
+       QString part;
+       QString typ;
+       QString num;
+       while (!s.isEmpty() )
+       {
+               part=s.section(",",0,0);
+               typ=part.left (3);
+               num=part.right(part.length() - 3);
+               if (typ=="mc:")
+               {
+                       if (depth>0)
+                               return false;   // in a subtree there is no center
+                       else
+                               break;
+               } else
+                       if (typ=="bo:")
+                               lmo=((BranchObj*)lmo)->getBranchNum (num.toInt());
+                       else
+                               if (typ=="fi:")
+                                       lmo=((BranchObj*)lmo)->getFloatImageNum (num.toUInt());
+               if (!lmo) break;
+               
+               if (s.contains(","))
+                       s=s.right(s.length() - part.length() -1 );
+               else    
+                       break;
+       }
+       return lmo;
+}
+
+QPointF LinkableMapObj::getChildPos()
+{
+    return childPos;
+}
+
+QPointF LinkableMapObj::getParPos()
+{
+    return parPos;
+}
+
+void LinkableMapObj::setUseOrientation (const bool &b)
+{      
+       if (useOrientation!=b)
+       {
+               useOrientation=b;
+               requestReposition();
+       }       
+}
+
+LinkableMapObj::Orientation LinkableMapObj::getOrientation()
+{
+    return orientation;
+}
+
+int LinkableMapObj::getDepth()
+{
+    return depth;
+}
+
+void LinkableMapObj::setMapEditor (MapEditor *me)
+{
+       mapEditor=me;
+}
+
+MapEditor* LinkableMapObj::getMapEditor ()
+{
+       return mapEditor;
+}
+
+QPointF LinkableMapObj::getRandPos()
+{
+       // Choose a random position with given distance to parent:
+       double a=rand()%360 * 2 * M_PI / 360;
+    return QPointF ( (int)( + 150*cos (a)),
+                    (int)( + 150*sin (a)));
+}
+
+void LinkableMapObj::reposition()
+{
+}
+
+void LinkableMapObj::requestReposition()
+{
+       if (!repositionRequest)
+       {
+               // Pass on the request to parental objects, if this hasn't
+               // been done yet
+               repositionRequest=true;
+               if (parObj) parObj->requestReposition();
+       }
+}
+
+void LinkableMapObj::forceReposition()
+{
+       // Sometimes a reposition has to be done immediatly: For example
+       // if the note editor flag changes, there is no user event in mapeditor
+       // which could collect requests for a reposition.
+       // Then we have to call forceReposition()
+       // But no rule without exception: While loading a map or undoing it,
+       // we want to block expensive repositioning, but just do it once at
+       // the end, thus check first:
+
+       if (mapEditor->isRepositionBlocked()) return;
+       
+       // Pass on the request to parental objects, if this hasn't been done yet
+       
+       if (parObj) 
+               parObj->forceReposition(); 
+       else 
+               reposition(); 
+}
+
+bool LinkableMapObj::repositionRequested()
+{
+       return repositionRequest;
+}
+
+
+void LinkableMapObj::select()
+{
+       // select and unselect are still needed to
+       // handle hiding of links
+    selected=true;
+       setVisibility (visible);
+}
+
+
+void LinkableMapObj::unselect()
+{
+    selected=false;
+       // Maybe we have to hide the link:
+       setVisibility (visible);
+}
+
+void LinkableMapObj::parabel (QPolygonF &ya, double p1x, double p1y, double p2x, double p2y)
+
+{
+       double vx=p2x - p1x;    // V=P2-P1
+       double vy=p2y - p1y;
+
+       double dx;                              // delta x during calculation of parabel
+       
+       double pnx;                             // next point
+       double pny;
+       double m;
+
+       if (vx > -0.0001 && vx < 0.0001)
+               m=0;
+       else    
+               m=(vy / (vx*vx));
+       dx=vx/(arcsegs);
+       ya.clear();
+       ya<<QPointF (p1x,p1y);
+       for (int i=1;i<=arcsegs;i++)
+       {       
+               pnx=p1x+dx;
+               pny=m*(pnx-parPos.x())*(pnx-parPos.x())+parPos.y();
+               ya<<QPointF (pnx,pny);
+               p1x=pnx;
+               p1y=pny;
+       }       
+}
+
+QString LinkableMapObj::getLinkAttr ()
+{
+       if (hideLinkUnselected)
+               return attribut ("hideLink","true");
+       else
+               return attribut ("hideLink","false");
+       
+}
+
diff --git a/linkablemapobj.h b/linkablemapobj.h
new file mode 100644 (file)
index 0000000..ded82c5
--- /dev/null
@@ -0,0 +1,163 @@
+#ifndef LINKABLEMAPOBJ_H
+#define LINKABLEMAPOBJ_H
+
+#include "animpoint.h"
+#include "noteobj.h"
+#include "headingobj.h"
+#include "flagrowobj.h"
+
+#define MAX_DEPTH 999
+
+class MapEditor;
+
+
+
+/*! \brief This class adds links to MapObj 
+
+The links are connecting the branches (BranchObj) and images (FloatImageObj) in the map.
+*/
+
+class LinkableMapObj:public QObject, public MapObj {
+       Q_OBJECT
+public:
+       /*! Orientation of an object depends on the position relative to the parent */
+       enum Orientation {
+               UndefinedOrientation, //!< Undefined
+               LeftOfCenter,                   //!< Object is left of center
+               RightOfCenter                   //!< Object is right of center
+       };
+
+       /*! Various drawing styles for links */
+       enum Style {
+               UndefinedStyle, //!< Undefined
+               Line,                   //!< Straight line
+               Parabel,                //!< Parabel
+               PolyLine,               //!< Polygon (thick line)
+               PolyParabel             //!< Thick parabel
+       };
+
+       /*! Vertical position of link in object */
+       enum Position {
+               Middle, //!< Link is drawn in the middle of object
+               Bottom  //!< Link is drawn at bottom of object
+       };
+
+       /*! Hint if link should use the default link color or the color of heading */
+       enum ColorHint {
+               DefaultColor,   //!< Link uses the default color
+               HeadingColor    //!< Link uses the color of heading
+       };
+
+    LinkableMapObj ();
+    LinkableMapObj (QGraphicsScene*);
+    LinkableMapObj (LinkableMapObj*);
+    ~LinkableMapObj ();
+       virtual void delLink();
+    virtual void init ();
+    virtual void copy (LinkableMapObj*);
+    void setChildObj (LinkableMapObj*);
+    virtual void setParObj (LinkableMapObj*);
+    virtual void setParObjTmp (LinkableMapObj*,QPointF,int);   // Only for moving Obj around
+       virtual void unsetParObjTmp();                                          // reuse original ParObj
+       virtual bool hasParObjTmp();
+
+       virtual void setUseRelPos (const bool&);
+       virtual void setRelPos();                               // set relPos to current parentPos
+       virtual void setRelPos(const QPointF&); 
+       virtual QPointF getRelPos();
+       virtual void setUseOrientation (const bool &);
+
+
+       virtual qreal getTopPad();
+       virtual qreal getLeftPad();
+       virtual qreal getRightPad();
+       Style getDefLinkStyle();
+    void setLinkStyle(Style);            
+       Style getLinkStyle();
+       void setHideLinkUnselected(bool);
+       bool getHideLinkUnselected();
+       void setLinkPos (Position);
+       Position getLinkPos ();
+
+       virtual void setID (const QString &s);
+       virtual QString getID ();
+
+       virtual void setLinkColor();                                    // sets color according to colorhint, overloaded
+       virtual void setLinkColor(QColor);
+       QColor getLinkColor();
+       virtual void setVisibility (bool);
+       virtual void setOrientation();
+    virtual void updateLink();                         // update parPos and childPos
+                                                                                       // depending on pos
+                                                                                       // redraw link with given style
+    LinkableMapObj* getChildObj();                     // returns pointer to fromObj
+    LinkableMapObj* getParObj();                       // returns pointer to toObj
+    virtual LinkableMapObj* findObjBySelect(QString s);        // find obj by selectstring
+       virtual void setDockPos()=0;                            // sets childPos and parPos
+    QPointF getChildPos();                                     // returns pos where childs dock
+    QPointF getParPos();                                               // returns pos where parents dock
+    Orientation getOrientation();                      // get orientation
+    virtual int getDepth();                                    // return depth
+       virtual void setMapEditor(MapEditor*);  // set MapEditor (needed in LMO::updateNoteFlag)
+       virtual MapEditor* getMapEditor();              // get MapEditor (usually from parent);
+       virtual QPointF getRandPos();                   // make randomised position
+
+       virtual void reposition();
+       virtual void requestReposition();               // do reposition after next user event
+       virtual void forceReposition();                 // to force a reposition now (outside
+                                                                                       // of mapeditor e.g. in noteeditor
+       virtual bool repositionRequested();
+
+       virtual void calcBBoxSizeWithChilds()=0;// calc size of  BBox including childs recursivly
+
+    virtual void select();
+    virtual void unselect();
+
+protected:
+       void parabel(QPolygonF &,double,double,double,double);  // Create Parabel connecting two points
+       QString getLinkAttr();
+
+    QPointF childPos;
+    QPointF parPos;
+       bool link2ParPos;                               // While moving around, sometimes link to parent
+       MapEditor* mapEditor;                   // for and toggleScroll(), get default styles
+                                                                       // and mapEditor->updateActions()
+                                                                       // and mapEditor->updateSelection()
+    Orientation orientation;     
+    qreal linkwidth;                           // width of a link
+    int depth;                                         // depth: undef=-1 mapCenter=0 branch=1..n
+       QRectF bboxTotal;                               // bounding box including childs
+
+    LinkableMapObj* childObj;
+    LinkableMapObj* parObj;
+    LinkableMapObj* parObjTmpBuf;      // temporary buffer the original parent
+    qreal bottomlineY;              // vertical offset of dockpos to pos
+
+       int thickness_start;                    // for StylePoly*       
+    Style style;                                       // Current style
+       Position linkpos;                               // Link at bottom of object or middle of height
+    QColor linkcolor;               // Link color
+       QPen pen;
+    QGraphicsLineItem* l;           // line style
+       QGraphicsPolygonItem* p;                // poly styles
+    int arcsegs;                    // arc: number of segments
+    QList <QGraphicsLineItem*> segment; // a part of e.g. the parabel
+       QPolygonF pa0;                                  // For drawing of PolyParabel and PolyLine
+       QPolygonF pa1;                                  // For drawing of PolyParabel 
+       QPolygonF pa2;                                  // For drawing of PolyParabel   
+    QGraphicsLineItem* bottomline;  // on bottom of BBox
+       bool repositionRequest;                 // 
+
+       bool selected;                                  // Used for marking the selection
+       bool hideLinkUnselected;                // to hide links if unselected
+       qreal topPad, botPad,
+               leftPad, rightPad;          // padding within bbox
+
+       QPointF  relPos;                                // position relative to childPos of parent
+       //AnimPoint relPos;                             // position relative to childPos of parent
+       bool useRelPos;
+       bool useOrientation;
+
+       QString objID;                                  // id set during load/save currently used for xLinks
+};
+#endif
diff --git a/macros/macro-1.vys b/macros/macro-1.vys
new file mode 100644 (file)
index 0000000..f2e242f
--- /dev/null
@@ -0,0 +1,2 @@
+# Macro F1
+colorSubtree ("#ff0000");
diff --git a/macros/macro-10.vys b/macros/macro-10.vys
new file mode 100644 (file)
index 0000000..f64c515
--- /dev/null
@@ -0,0 +1,2 @@
+# Macro 9
+setFrameType ("NoFrame");
diff --git a/macros/macro-11.vys b/macros/macro-11.vys
new file mode 100644 (file)
index 0000000..051d450
--- /dev/null
@@ -0,0 +1,2 @@
+# Macro F11
+setFrameType ("Rectangle");
diff --git a/macros/macro-12.vys b/macros/macro-12.vys
new file mode 100644 (file)
index 0000000..206a817
--- /dev/null
@@ -0,0 +1,2 @@
+# Macro F12
+setFrameType ("Ellipse");
diff --git a/macros/macro-2.vys b/macros/macro-2.vys
new file mode 100644 (file)
index 0000000..9a904e6
--- /dev/null
@@ -0,0 +1,2 @@
+# Macro F2
+colorSubtree ("#d95100");
diff --git a/macros/macro-3.vys b/macros/macro-3.vys
new file mode 100644 (file)
index 0000000..9964571
--- /dev/null
@@ -0,0 +1,2 @@
+# Macro F3 
+colorSubtree ("#005500");
diff --git a/macros/macro-4.vys b/macros/macro-4.vys
new file mode 100644 (file)
index 0000000..77e8628
--- /dev/null
@@ -0,0 +1,2 @@
+#Macro 3
+colorSubtree ("#00aa7f");
diff --git a/macros/macro-5.vys b/macros/macro-5.vys
new file mode 100644 (file)
index 0000000..959b6d6
--- /dev/null
@@ -0,0 +1,2 @@
+# Macro 4
+colorSubtree ("#aa00ff");
diff --git a/macros/macro-6.vys b/macros/macro-6.vys
new file mode 100644 (file)
index 0000000..f0e62a7
--- /dev/null
@@ -0,0 +1,2 @@
+# Macro 5
+colorSubtree ("#c466ff");
diff --git a/macros/macro-7.vys b/macros/macro-7.vys
new file mode 100644 (file)
index 0000000..86e335e
--- /dev/null
@@ -0,0 +1,3 @@
+# Macro F7
+colorSubtree ("#0000ff");
+toggleFlag ("info");
diff --git a/macros/macro-8.vys b/macros/macro-8.vys
new file mode 100644 (file)
index 0000000..62e88e8
--- /dev/null
@@ -0,0 +1,3 @@
+# Macro F8
+colorSubtree ("#616147");
+toggleFlag ("clock");
diff --git a/macros/macro-9.vys b/macros/macro-9.vys
new file mode 100644 (file)
index 0000000..17676dd
--- /dev/null
@@ -0,0 +1,2 @@
+# Macro F9
+clearFlags();
diff --git a/main.cpp b/main.cpp
new file mode 100644 (file)
index 0000000..d680ae4
--- /dev/null
+++ b/main.cpp
@@ -0,0 +1,219 @@
+#include <QApplication>
+#include <QtGlobal>
+
+#include "flagrowobj.h"
+#include "mainwindow.h"
+#include "options.h"
+#include "settings.h"
+#include "version.h"
+
+#if defined(Q_OS_WIN32)
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#endif
+
+// Global variables
+TextEditor *textEditor;                        // used in Constr. of LinkableMapObj
+                                                               // initialized in mainwindow
+QString vymName;
+QString vymVersion;
+QString vymBuildDate;
+QString vymCodeName;
+
+Main *mainWindow;                              // used in BranchObj::select()                                                          
+QString tmpVymDir;                             // All temp files go there, created in mainwindow
+QString clipboardDir;                  // Clipboard used in all mapEditors
+QString clipboardFile;                 // Clipboard used in all mapEditors
+QDir vymBaseDir;                               // Containing all styles, scripts, images, ...
+QDir lastImageDir;
+QDir lastFileDir;
+#if defined(Q_OS_WIN32)
+QDir vymInstallDir;
+#endif
+QString iconPath;                              // Pointing to icons used for toolbars
+QString flagsPath;                             // Pointing to flags
+bool clipboardEmpty;                   
+bool debug;                                            // global debugging flag
+FlagRowObj *systemFlagsDefault;        // used to copy from in LinkableMapObj
+FlagRowObj *standardFlagsDefault;
+
+
+Settings settings ("InSilmaril","vym"); // Organization, Application name
+
+Options options;
+ImageIO imageIO;
+
+int statusbarTime=3500;
+
+int main(int argc, char* argv[])
+{
+       //Q_INIT_RESOURCE (application);
+
+    QApplication app(argc,argv);
+
+       vymName=__VYM_NAME;
+       vymVersion=__VYM_VERSION;
+       vymBuildDate=__VYM_BUILD_DATE;
+       vymCodeName=__VYM_CODENAME;
+
+
+       // Reading and initializing options commandline options
+       options.add ("debug", Option::Switch, "d", "debug");
+       options.add ("version", Option::Switch, "v","version");
+       options.add ("local", Option::Switch, "l", "local");
+       options.add ("help", Option::Switch, "h", "help");
+       options.add ("quit", Option::Switch, "q", "quit");
+       options.add ("run", Option::String, "r", "run");
+       options.add ("test", Option::String, "t", "test");
+       options.setHelpText (
+               "VYM - View Your Mind\n"
+               "--------------------\n\n"
+               "Information about vym can be found in vym.pdf,\n"
+               "which should be part of the vym package.\n"
+               "It is also available at the project homepage:\n\n"
+               "http://www.InSilmaril.de/vym\n");
+       if (options.parse())
+       {
+               cout << endl << qPrintable( options.getHelpText())<<endl;
+               return 1;
+       }
+
+       debug=options.isOn ("debug");
+
+       if (options.isOn ("version"))
+       {
+               cout << "VYM - View Your Mind (c) 2004-2007 Uwe Drechsel "  << endl
+                       <<"   Version: "<<__VYM_VERSION <<endl
+                       <<"Build date: "<<__VYM_BUILD_DATE << endl
+                       <<"  "<<__VYM_CODENAME<<endl;
+                       
+               return 0;       
+       }               
+       
+       // Use /usr/share/vym or /usr/local/share/vym or . ?
+       // First try options
+       if (options.isOn ("local"))
+       {
+               vymBaseDir.setPath (vymBaseDir.currentDirPath());
+       } else
+       // then look for environment variable
+       if (getenv("VYMHOME")!=0)
+       {
+               vymBaseDir.setPath (getenv("VYMHOME"));
+       } else
+       // ok, let's find my way on my own
+       {
+               #if defined (Q_OS_MACX)
+                       vymBaseDir.setPath(vymBaseDir.currentDirPath() +"/vym.app/Contents/Resources");
+
+        #elif defined (Q_OS_WIN32)
+            QString basePath;
+
+            wchar_t wbuf[512];
+            if (GetModuleFileName(NULL, wbuf, 512))
+            {
+                QString mfn(QString::fromWCharArray(wbuf));
+                mfn.replace('\\', '/');
+                if (mfn.endsWith("/bin/vym.exe", Qt::CaseInsensitive))
+                {
+                    mfn.chop(12);
+                    basePath = mfn;
+                }
+            }
+
+            if (basePath.isEmpty())
+                basePath = vymBaseDir.currentDirPath();
+
+            vymInstallDir.setPath(basePath);
+            vymBaseDir.setPath(basePath + "/share/vym");
+
+               #else
+                       vymBaseDir.setPath ("/usr/share/vym");
+                       if (!vymBaseDir.exists())
+                       {
+                               vymBaseDir.setPath ("/usr/local/share/vym");
+                               if (!vymBaseDir.exists())
+                                       vymBaseDir.setPath(vymBaseDir.currentDirPath() );
+                       }               
+               #endif
+       }
+
+#ifdef Q_OS_WIN32
+        iconPath=vymBaseDir.path()+"\\icons\\";
+        flagsPath=vymBaseDir.path()+"\\flags\\";
+#else
+        iconPath=vymBaseDir.path()+"/icons/";
+        flagsPath=vymBaseDir.path()+"/flags/";
+#endif
+       // Some directories
+       lastImageDir=QDir().current();
+       lastFileDir=QDir().current();
+
+       if (options.isOn ("help"))
+       {
+               cout << qPrintable (options.getHelpText())<<endl;
+               return 0;       
+       }       
+
+       // Initialize translations
+       QTranslator translator (0);
+       translator.load( QString("vym_")+QTextCodec::locale(), vymBaseDir.path() + "/lang");
+    app.installTranslator( &translator );
+
+       // Initializing the row of system flags
+       // is done in first call to MapEditor(),
+       // because we need at least one canvas first
+       systemFlagsDefault=NULL;
+       standardFlagsDefault=NULL;
+
+       // Initialize window of TextEditor
+       textEditor = new TextEditor();
+       textEditor->setIcon (QPixmap (iconPath+"vym-editor.png"));
+
+       // Initialize mainwindow 
+#if defined(Q_OS_WIN32)
+    Main m(0, 0, (Qt::Window | Qt::MSWindowsOwnDC));
+#else
+    Main m;
+#endif
+
+       //m.resize(m.sizeHint());
+       m.setIcon (QPixmap (iconPath+"vym-48x48.png"));
+       m.show();
+       m.fileNew();
+       m.loadCmdLine();
+
+       // Run script
+       if (options.isOn ("run"))
+       {
+               QString script;
+               QString fn=options.getArg ("run");
+               if ( !fn.isEmpty() )
+               {
+                       QFile f( fn );
+                       if ( !f.open( QIODevice::ReadOnly ) )
+                       {
+                               QMessageBox::warning(0, 
+                                       QObject::tr("Error"),
+                                       QObject::tr("Couldn't open %1.\n").arg(fn));
+                               return 0;
+                       }       
+
+                       QTextStream ts( &f );
+                       script= ts.read();
+                       f.close();
+                       m.setScript (script);
+                       m.runScriptEverywhere (script);
+               }
+       }               
+       
+       // For benchmarking we may want to quit instead of entering event loop
+       if (options.isOn ("quit"))
+       {
+               return 0;
+       }       
+
+    QObject::connect( &app, SIGNAL(lastWindowClosed()), &app, SLOT(quit()) );
+
+    return app.exec();
+}
diff --git a/mainwindow.cpp b/mainwindow.cpp
new file mode 100644 (file)
index 0000000..4c9e58e
--- /dev/null
@@ -0,0 +1,3874 @@
+#include "mainwindow.h"
+
+#include <QtGui>
+
+#include <iostream>
+#include <typeinfo>
+
+#include "aboutdialog.h"
+#include "branchpropwindow.h"
+#include "exportoofiledialog.h"
+#include "exports.h"
+#include "file.h"
+#include "flagrowobj.h"
+#include "historywindow.h"
+#include "imports.h"
+#include "mapeditor.h"
+#include "misc.h"
+#include "options.h"
+#include "process.h"
+#include "settings.h"
+#include "texteditor.h"
+#include "warningdialog.h"
+
+#if defined(Q_OS_WIN32)
+// Define only this structure as opposed to
+// including full 'windows.h'. FindWindow
+// clashes with the one in Win32 API.
+typedef struct _PROCESS_INFORMATION
+{
+  long hProcess;
+  long hThread;
+  long dwProcessId;
+  long dwThreadId;
+} PROCESS_INFORMATION, *LPPROCESS_INFORMATION;
+#endif
+
+extern TextEditor *textEditor;
+extern Main *mainWindow;
+extern QString tmpVymDir;
+extern QString clipboardDir;
+extern QString clipboardFile;
+extern bool clipboardEmpty;
+extern int statusbarTime;
+extern FlagRowObj* standardFlagsDefault;
+extern FlagRowObj* systemFlagsDefault;
+extern QString vymName;
+extern QString vymVersion;
+extern QString vymBuildDate;
+extern bool debug;
+
+QMenu* branchContextMenu;
+QMenu* branchAddContextMenu;
+QMenu* branchRemoveContextMenu;
+QMenu* branchLinksContextMenu;
+QMenu* branchXLinksContextMenuEdit;
+QMenu* branchXLinksContextMenuFollow;
+QMenu* floatimageContextMenu;
+QMenu* canvasContextMenu;
+QMenu* fileLastMapsMenu;
+QMenu* fileImportMenu;
+QMenu* fileExportMenu;
+
+
+extern Settings settings;
+extern Options options;
+extern ImageIO imageIO;
+
+extern QDir vymBaseDir;
+extern QDir lastImageDir;
+extern QDir lastFileDir;
+#if defined(Q_OS_WIN32)
+extern QDir vymInstallDir;
+#endif
+extern QString iconPath;
+extern QString flagsPath;
+
+Main::Main(QWidget* parent, const char* name, Qt::WFlags f) :
+    QMainWindow(parent,name,f)
+{
+       mainWindow=this;
+
+       setObjectName ("MainWindow");
+
+       setCaption ("VYM - View Your Mind");
+
+       // Load window settings
+#if defined(Q_OS_WIN32)
+    if (settings.value("/mainwindow/geometry/maximized", false).toBool())
+    {
+        setWindowState(Qt::WindowMaximized);
+    }
+    else
+#endif
+    {
+        resize (settings.value("/mainwindow/geometry/size", QSize (800,600)).toSize());
+        move   (settings.value("/mainwindow/geometry/pos",  QPoint(300,100)).toPoint());
+    }
+
+       // Sometimes we may need to remember old selections
+       prevSelection="";
+
+       // Default color
+       currentColor=Qt::black;
+
+       // Create unique temporary directory
+       bool ok;
+       tmpVymDir=makeTmpDir (ok,"vym");
+       if (!ok)
+       {
+               qWarning ("Mainwindow: Could not create temporary directory, failed to start vym");
+               exit (1);
+       }
+       if (debug) qDebug (QString("vym tmpDir=%1").arg(tmpVymDir) );
+
+       // Create direcctory for clipboard
+       clipboardDir=tmpVymDir+"/clipboard";
+       clipboardFile="map.xml";
+       QDir d(clipboardDir);
+       d.mkdir (clipboardDir,true);
+       makeSubDirs (clipboardDir);
+       clipboardEmpty=true;
+
+       procBrowser=NULL;
+
+       // Satellite windows //////////////////////////////////////////
+
+       // history window
+       historyWindow=new HistoryWindow();
+       connect (historyWindow, SIGNAL (windowClosed() ), this, SLOT (updateActions()));
+
+       // properties window
+       branchPropertyWindow = new BranchPropertyWindow();
+       connect (branchPropertyWindow, SIGNAL (windowClosed() ), this, SLOT (updateActions()));
+
+       // Connect TextEditor, so that we can update flags if text changes
+       connect (textEditor, SIGNAL (textHasChanged() ), this, SLOT (updateNoteFlag()));
+       connect (textEditor, SIGNAL (windowClosed() ), this, SLOT (updateActions()));
+
+       // Connect HistoryWindow, so that we can update flags
+       connect (historyWindow, SIGNAL (windowClosed() ), this, SLOT (updateActions()));
+
+
+       // Initialize script editor
+       scriptEditor = new SimpleScriptEditor();
+       scriptEditor->move (50,50);
+
+       connect( scriptEditor, SIGNAL( runScript ( QString ) ), 
+               this, SLOT( runScript( QString ) ) );
+       
+
+       // Initialize Find window
+       findWindow=new FindWindow(NULL);
+       findWindow->move (x(),y()+70);
+       connect (findWindow, SIGNAL( findButton(QString) ), 
+               this, SLOT(editFind(QString) ) );       
+       connect (findWindow, SIGNAL( somethingChanged() ), 
+               this, SLOT(editFindChanged() ) );       
+
+       // Initialize some settings, which are platform dependant
+       QString p,s;
+
+               // application to open URLs
+               p="/mainwindow/readerURL";
+               #if defined(Q_OS_LINUX)
+                       s=settings.value (p,"xdg-open").toString();
+               #else
+                       #if defined(Q_OS_MACX)
+                               s=settings.value (p,"/usr/bin/open").toString();
+
+            #else
+                #if defined(Q_OS_WIN32)
+                    // Assume that system has been set up so that
+                    // Explorer automagically opens up the URL
+                    // in the user's preferred browser.
+                    s=settings.value (p,"explorer").toString();
+                #else
+                                       s=settings.value (p,"mozilla").toString();
+                               #endif
+                       #endif
+               #endif
+               settings.setValue( p,s);
+
+               // application to open PDFs
+               p="/mainwindow/readerPDF";
+               #if defined(Q_OS_LINUX)
+                       s=settings.value (p,"xdg-open").toString();
+               #else
+                       #if defined(Q_OS_MACX)
+                               s=settings.value (p,"/usr/bin/open").toString();
+            #elif defined(Q_OS_WIN32)
+                s=settings.value (p,"acrord32").toString();
+                       #else
+                               s=settings.value (p,"acroread").toString();
+                       #endif
+               #endif
+               settings.setValue( p,s);
+
+       // width of xLinksMenu
+       xLinkMenuWidth=60;
+       
+       // Create tab widget which holds the maps
+       tabWidget= new QTabWidget (this);
+       connect( tabWidget, SIGNAL( currentChanged( QWidget * ) ), 
+               this, SLOT( editorChanged( QWidget * ) ) );
+
+       lineedit=new QLineEdit (this);
+       lineedit->hide();
+
+       setCentralWidget(tabWidget);    
+
+    setupFileActions();
+    setupEditActions();
+    setupFormatActions();
+    setupViewActions();
+    setupModeActions();
+       setupFlagActions();
+    setupNetworkActions();
+    setupSettingsActions();
+       setupContextMenus();
+       setupMacros();
+    if (settings.value( "/mainwindow/showTestMenu",false).toBool()) setupTestActions();
+    setupHelpActions();
+    
+    statusBar();
+
+       restoreState (settings.value("/mainwindow/state",0).toByteArray());
+
+       updateGeometry();
+}
+
+Main::~Main()
+{
+       // Save Settings
+#if defined(Q_OS_WIN32)
+    settings.setValue ("/mainwindow/geometry/maximized", isMaximized());
+#endif
+       settings.setValue ("/mainwindow/geometry/size", size());
+       settings.setValue ("/mainwindow/geometry/pos", pos());
+       settings.setValue ("/mainwindow/state",saveState(0));
+
+       settings.setValue ("/mainwindow/view/AntiAlias",actionViewToggleAntiAlias->isOn());
+       settings.setValue ("/mainwindow/view/SmoothPixmapTransform",actionViewToggleSmoothPixmapTransform->isOn());
+       settings.setValue( "/version/version", vymVersion );
+       settings.setValue( "/version/builddate", vymBuildDate );
+
+       settings.setValue( "/mapeditor/autosave/use",actionSettingsAutosaveToggle->isOn() );
+       settings.setValue( "/mapeditor/editmode/autoSelectNewBranch",actionSettingsAutoSelectNewBranch->isOn() );
+       settings.setValue( "/mainwindow/writeBackupFile",actionSettingsWriteBackupFile->isOn() );
+       settings.setValue( "/mapeditor/editmode/autoSelectText",actionSettingsAutoSelectText->isOn() );
+       settings.setValue( "/mapeditor/editmode/autoEditNewBranch",actionSettingsAutoEditNewBranch->isOn() );
+       settings.setValue( "/mapeditor/editmode/useDelKey",actionSettingsUseDelKey->isOn() );
+       settings.setValue( "/mapeditor/editmode/useFlagGroups",actionSettingsUseFlagGroups->isOn() );
+       settings.setValue( "/export/useHideExport",actionSettingsUseHideExport->isOn() );
+
+       //TODO save scriptEditor settings
+
+       // call the destructors
+       delete textEditor;
+       delete historyWindow;
+       delete branchPropertyWindow;
+
+       // Remove temporary directory
+       removeDir (QDir(tmpVymDir));
+}
+
+void Main::loadCmdLine()
+{
+       /* TODO draw some kind of splashscreen while loading...
+       if (qApp->argc()>1)
+       {
+       }
+       */
+       
+       QStringList flist=options.getFileList();
+       QStringList::Iterator it=flist.begin();
+
+       while (it !=flist.end() )
+       {
+               fileLoad (*it, NewMap);
+               *it++;
+       }       
+}
+
+
+void Main::statusMessage(const QString &s)
+{
+       statusBar()->message( s);
+}
+
+void Main::closeEvent (QCloseEvent* )
+{
+       fileExitVYM();
+}
+
+// File Actions
+void Main::setupFileActions()
+{
+       QMenu *fileMenu = menuBar()->addMenu ( tr ("&Map") );
+    QToolBar *tb = addToolBar( tr ("&Map") );
+       tb->setObjectName ("mapTB");
+
+    QAction *a;
+    a = new QAction(QPixmap( iconPath+"filenew.png"), tr( "&New map","File menu" ),this);
+       a->setStatusTip ( tr( "New map","Status tip File menu" ) );
+       a->setShortcut ( Qt::CTRL + Qt::Key_N );                //New map
+    a->addTo( tb );
+       fileMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( fileNew() ) );
+       
+    a = new QAction(QPixmap( iconPath+"filenewcopy.png"), tr( "&Copy to new map","File menu" ),this);
+       a->setStatusTip ( tr( "Copy selection to mapcenter of a new map","Status tip File menu" ) );
+       a->setShortcut ( Qt::CTRL +Qt::SHIFT + Qt::Key_N );             //New map
+       fileMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( fileNewCopy() ) );
+       actionFileNewCopy=a;
+       
+    a = new QAction( QPixmap( iconPath+"fileopen.png"), tr( "&Open..." ,"File menu"),this);
+       a->setStatusTip (tr( "Open","Status tip File menu" ) );
+       a->setShortcut ( Qt::CTRL + Qt::Key_O );                //Open map
+    a->addTo( tb );
+       fileMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( fileLoad() ) );
+       
+       fileLastMapsMenu = fileMenu->addMenu (tr("Open Recent","File menu"));
+       fileMenu->addSeparator();
+       
+    a = new QAction( QPixmap( iconPath+"filesave.png"), tr( "&Save...","File menu" ), this);
+       a->setStatusTip ( tr( "Save","Status tip file menu" ));
+       a->setShortcut (Qt::CTRL + Qt::Key_S );                 //Save map
+    a->addTo( tb );
+       fileMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( fileSave() ) );
+       actionFileSave=a;
+       
+    a = new QAction( QPixmap(iconPath+"filesaveas.png"), tr( "Save &As...","File menu" ), this);
+       a->setStatusTip (tr( "Save &As","Status tip file menu" ) );
+       fileMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( fileSaveAs() ) );
+
+       fileMenu->addSeparator();
+
+       fileImportMenu = fileMenu->addMenu (tr("Import","File menu"));
+
+       a = new QAction(tr("KDE Bookmarks"), this);
+       a->setStatusTip ( tr( "Import %1","Status tip file menu" ).arg(tr("KDE bookmarks")));
+       a->addTo (fileImportMenu);
+       connect( a, SIGNAL( triggered() ), this, SLOT( fileImportKDEBookmarks() ) );
+
+    if (settings.value( "/mainwindow/showTestMenu",false).toBool()) 
+       {
+               a = new QAction( QPixmap(), tr("Firefox Bookmarks","File menu"),this);
+               a->setStatusTip (tr( "Import %1","Status tip file menu").arg(tr("Firefox Bookmarks" ) ));
+               a->addTo (fileImportMenu);
+               connect( a, SIGNAL( triggered() ), this, SLOT( fileImportFirefoxBookmarks() ) );
+       }       
+
+       a = new QAction("Freemind...",this);
+       a->setStatusTip ( tr( "Import %1","status tip file menu").arg(" Freemind")  );
+       fileImportMenu->addAction (a);
+       connect( a, SIGNAL( triggered() ), this, SLOT( fileImportFreemind() ) );
+
+       a = new QAction("Mind Manager...",this);
+       a->setStatusTip ( tr( "Import %1","status tip file menu").arg(" Mind Manager")  );
+       fileImportMenu->addAction (a);
+       connect( a, SIGNAL( triggered() ), this, SLOT( fileImportMM() ) );
+
+    a = new QAction( tr( "Import Dir%1","File menu").arg("..."), this);
+       a->setStatusTip (tr( "Import directory structure (experimental)","status tip file menu" ) );
+       fileImportMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( fileImportDir() ) );
+
+       fileExportMenu = fileMenu->addMenu (tr("Export","File menu"));
+
+       a = new QAction( tr("Image%1","File export menu").arg("..."), this);
+       a->setStatusTip( tr( "Export map as image","status tip file menu" ));
+       connect( a, SIGNAL( triggered() ), this, SLOT( fileExportImage() ) );
+       fileExportMenu->addAction (a);
+
+       a = new QAction( "Open Office...", this);
+       a->setStatusTip( tr( "Export in Open Document Format used e.g. in Open Office ","status tip file menu" ));
+       connect( a, SIGNAL( triggered() ), this, SLOT( fileExportOOPresentation() ) );
+       fileExportMenu->addAction (a);
+
+       a = new QAction(  "Webpage (XHTML)...",this );
+       a->setShortcut (Qt::ALT + Qt::Key_X);                   //Export XHTML
+       a->setStatusTip ( tr( "Export as %1","status tip file menu").arg(tr(" webpage (XHTML)","status tip file menu")));
+    connect( a, SIGNAL( triggered() ), this, SLOT( fileExportXHTML() ) );
+       fileExportMenu->addAction (a);
+
+    a = new QAction( "Text (ASCII)...", this);
+       a->setStatusTip ( tr( "Export as %1").arg("ASCII "+tr("(still experimental)" )));
+    connect( a, SIGNAL( triggered() ), this, SLOT( fileExportASCII() ) );
+       fileExportMenu->addAction (a);
+
+    a = new QAction( "Spreadsheet (CSV)...", this);
+       a->setStatusTip ( tr( "Export as %1").arg("CSV "+tr("(still experimental)" )));
+    connect( a, SIGNAL( triggered() ), this, SLOT( fileExportCSV() ) );
+       fileExportMenu->addAction (a);
+
+       a = new QAction( tr("KDE Bookmarks","File menu"), this);
+       a->setStatusTip( tr( "Export as %1").arg(tr("KDE Bookmarks" )));
+       connect( a, SIGNAL( triggered() ), this, SLOT( fileExportKDEBookmarks() ) );
+       fileExportMenu->addAction (a);
+
+    a = new QAction( "Taskjuggler...", this );
+    a->setStatusTip( tr( "Export as %1").arg("Taskjuggler "+tr("(still experimental)" )));
+    connect( a, SIGNAL( triggered() ), this, SLOT( fileExportTaskjuggler() ) );
+       fileExportMenu->addAction (a);
+
+    a = new QAction( "LaTeX...", this);
+    a->setStatusTip( tr( "Export as %1").arg("LaTeX "+tr("(still experimental)" )));
+    connect( a, SIGNAL( triggered() ), this, SLOT( fileExportLaTeX() ) );
+       fileExportMenu->addAction (a);
+
+       a = new QAction( "XML..." , this );
+       a->setStatusTip (tr( "Export as %1").arg("XML"));
+    connect( a, SIGNAL( triggered() ), this, SLOT( fileExportXML() ) );
+       fileExportMenu->addAction (a);
+
+       fileMenu->addSeparator();
+/*
+    a = new QAction(QPixmap( iconPath+"fileprint.png"), tr( "&Print")+QString("..."), this);
+       a->setStatusTip ( tr( "Print" ,"File menu") );
+       a->setShortcut (Qt::CTRL + Qt::Key_P );                 //Print map
+    a->addTo( tb );
+       fileMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( filePrint() ) );
+       actionFilePrint=a;
+*/
+    a = new QAction( QPixmap(iconPath+"fileclose.png"), tr( "&Close Map","File menu" ), this);
+       a->setStatusTip (tr( "Close Map" ) );
+       a->setShortcut (Qt::CTRL + Qt::Key_W );                 //Close map
+       fileMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( fileCloseMap() ) );
+
+    a = new QAction(QPixmap(iconPath+"exit.png"), tr( "E&xit","File menu")+" "+vymName, this);
+       a->setStatusTip ( tr( "Exit")+" "+vymName );
+       a->setShortcut (Qt::CTRL + Qt::Key_Q );                 //Quit vym
+       fileMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( fileExitVYM() ) );
+}
+
+
+//Edit Actions
+void Main::setupEditActions()
+{
+    QToolBar *tb = addToolBar( tr ("&Actions toolbar","Toolbar name") );
+    tb->setLabel( "Edit Actions" );
+       tb->setObjectName ("actionsTB");
+    QMenu *editMenu = menuBar()->addMenu( tr("&Edit","Edit menu") );
+
+    QAction *a;
+       QAction *alt;
+    a = new QAction( QPixmap( iconPath+"undo.png"), tr( "&Undo","Edit menu" ),this);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editUndo() ) );
+       a->setStatusTip (tr( "Undo" ) );
+       a->setShortcut ( Qt::CTRL + Qt::Key_Z );                //Undo last action
+       a->setEnabled (false);
+    tb->addAction (a);
+       editMenu->addAction (a);
+       actionEditUndo=a;
+    
+       a = new QAction( QPixmap( iconPath+"redo.png"), tr( "&Redo","Edit menu" ), this); 
+       a->setStatusTip (tr( "Redo" ));
+       a->setShortcut (Qt::CTRL + Qt::Key_Y );                 //Redo last action
+    tb->addAction (a);
+       editMenu->addAction (a);
+       connect( a, SIGNAL( triggered() ), this, SLOT( editRedo() ) );
+       actionEditRedo=a;
+   
+       editMenu->addSeparator();
+    a = new QAction(QPixmap( iconPath+"editcopy.png"), tr( "&Copy","Edit menu" ), this);
+       a->setStatusTip ( tr( "Copy" ) );
+       a->setShortcut (Qt::CTRL + Qt::Key_C );                 //Copy
+       a->setEnabled (false);
+    tb->addAction (a);
+       editMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editCopy() ) );
+       actionEditCopy=a;
+       
+    a = new QAction(QPixmap( iconPath+"editcut.png" ), tr( "Cu&t","Edit menu" ), this);
+       a->setStatusTip ( tr( "Cut" ) );
+       a->setShortcut (Qt::CTRL + Qt::Key_X );                 //Cut
+       a->setEnabled (false);
+    tb->addAction (a);
+       editMenu->addAction (a);
+       actionEditCut=a;
+    connect( a, SIGNAL( triggered() ), this, SLOT( editCut() ) );
+       
+    a = new QAction(QPixmap( iconPath+"editpaste.png"), tr( "&Paste","Edit menu" ),this);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editPaste() ) );
+       a->setStatusTip ( tr( "Paste" ) );
+       a->setShortcut ( Qt::CTRL + Qt::Key_V );                //Paste
+       a->setEnabled (false);
+    tb->addAction (a);
+       editMenu->addAction (a);
+       actionEditPaste=a;
+
+    // Shortcuts to modify heading:
+    a = new QAction(tr( "Edit heading","Edit menu" ),this);
+       a->setStatusTip ( tr( "edit Heading" ));
+       a->setShortcut ( Qt::Key_Enter);                                //Edit heading
+//     a->setShortcutContext (Qt::WindowShortcut);
+       addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editHeading() ) );
+       actionListBranches.append(a);
+    a = new QAction( tr( "Edit heading","Edit menu" ), this);
+       a->setStatusTip (tr( "edit Heading" ));
+       a->setShortcut (Qt::Key_Return );                               //Edit heading
+       //a->setShortcutContext (Qt::WindowShortcut);
+       addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editHeading() ) );
+       actionListBranches.append(a);
+       editMenu->addAction (a);
+       actionEditHeading=a;
+    a = new QAction( tr( "Edit heading","Edit menu" ), this);
+       a->setStatusTip (tr( "edit Heading" ));
+       //a->setShortcut ( Qt::Key_F2 );                                        //Edit heading
+       a->setShortcutContext (Qt::WindowShortcut);
+       addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editHeading() ) );
+       actionListBranches.append(a);
+    
+    // Shortcut to delete selection
+    a = new QAction( tr( "Delete Selection","Edit menu" ),this);
+       a->setStatusTip (tr( "Delete Selection" ));
+       a->setShortcut ( Qt::Key_Delete);                               //Delete selection
+       a->setShortcutContext (Qt::WindowShortcut);
+       addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editDeleteSelection() ) );
+       actionEditDelete=a;
+    
+    // Shortcut to add mapcenter
+       a= new QAction(tr( "Add mapcenter","Canvas context menu" ), this);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editAddMapCenter() ) );
+       actionEditAddMapCenter = a;
+
+
+    // Shortcut to add branch
+       alt = new QAction(QPixmap(iconPath+"newbranch.png"), tr( "Add branch as child","Edit menu" ), this);
+       alt->setStatusTip ( tr( "Add a branch as child of selection" ));
+       alt->setShortcut (Qt::Key_A);                                   //Add branch
+       alt->setShortcutContext (Qt::WindowShortcut);
+       addAction (alt);
+       connect( alt, SIGNAL( triggered() ), this, SLOT( editNewBranch() ) );
+       a = new QAction(QPixmap(iconPath+"newbranch.png"), tr( "Add branch as child","Edit menu" ), this);
+       a->setStatusTip ( tr( "Add a branch as child of selection" ));
+       a->setShortcut (Qt::Key_Insert);                                //Add branch
+       connect( a, SIGNAL( triggered() ), this, SLOT( editNewBranch() ) );
+       actionListBranches.append(a);
+       #if defined (Q_OS_MACX)
+               // In OSX show different shortcut in menues, the keys work indepently always                    
+               actionEditAddBranch=alt;
+       #else   
+               actionEditAddBranch=a;
+       #endif  
+       editMenu->addAction (actionEditAddBranch);
+       tb->addAction (actionEditAddBranch);
+
+
+    // Add branch by inserting it at selection
+       a = new QAction(tr( "Add branch (insert)","Edit menu" ), this);
+       a->setStatusTip ( tr( "Add a branch by inserting and making selection its child" ));
+       a->setShortcut (Qt::ALT + Qt::Key_Insert );             //Insert branch
+       a->setShortcutContext (Qt::WindowShortcut);
+       addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editNewBranchBefore() ) );
+       a->setEnabled (false);
+       actionListBranches.append(a);
+       actionEditAddBranchBefore=a;
+       a = new QAction(tr( "Add branch (insert)","Edit menu" ),this);
+       a->setStatusTip ( tr( "Add a branch by inserting and making selection its child" ));
+       a->setShortcut ( Qt::ALT + Qt::Key_A );                 //Insert branch
+       a->setShortcutContext (Qt::WindowShortcut);
+       addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editNewBranchBefore() ) );
+       actionListBranches.append(a);
+
+       // Add branch above
+    a = new QAction(tr( "Add branch above","Edit menu" ), this);
+       a->setStatusTip ( tr( "Add a branch above selection" ));
+       a->setShortcut (Qt::SHIFT+Qt::Key_Insert );             //Add branch above
+       a->setShortcutContext (Qt::WindowShortcut);
+       addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editNewBranchAbove() ) );
+       a->setEnabled (false);
+       actionListBranches.append(a);
+       actionEditAddBranchAbove=a;
+    a = new QAction(tr( "Add branch above","Edit menu" ), this);
+       a->setStatusTip ( tr( "Add a branch above selection" ));
+       a->setShortcut (Qt::SHIFT+Qt::Key_A );                  //Add branch above
+       a->setShortcutContext (Qt::WindowShortcut);
+       addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editNewBranchAbove() ) );
+       actionListBranches.append(a);
+
+       // Add branch below 
+    a = new QAction(tr( "Add branch below","Edit menu" ), this);
+       a->setStatusTip ( tr( "Add a branch below selection" ));
+       a->setShortcut (Qt::CTRL +Qt::Key_Insert );             //Add branch below
+       a->setShortcutContext (Qt::WindowShortcut);
+       addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editNewBranchBelow() ) );
+       a->setEnabled (false);
+       actionListBranches.append(a);
+       actionEditAddBranchBelow=a;
+    a = new QAction(tr( "Add branch below","Edit menu" ), this);
+       a->setStatusTip ( tr( "Add a branch below selection" ));
+       a->setShortcut (Qt::CTRL +Qt::Key_A );                  // Add branch below
+       a->setShortcutContext (Qt::WindowShortcut);
+       addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editNewBranchBelow() ) );
+       actionListBranches.append(a);
+
+    a = new QAction(QPixmap(iconPath+"up.png" ), tr( "Move up","Edit menu" ), this);
+       a->setStatusTip ( tr( "Move branch up" ) );
+       a->setShortcut (Qt::Key_PageUp );                               // Move branch up
+       a->setEnabled (false);
+    tb->addAction (a);
+       editMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editMoveUp() ) );
+       actionEditMoveUp=a;
+
+    a = new QAction( QPixmap( iconPath+"down.png"), tr( "Move down","Edit menu" ),this);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editMoveDown() ) );
+       a->setStatusTip (tr( "Move branch down" ) );
+       a->setShortcut ( Qt::Key_PageDown );                    // Move branch down
+       a->setEnabled (false);
+    tb->addAction (a);
+       editMenu->addAction (a);
+       actionEditMoveDown=a;
+       
+       a = new QAction( QPixmap(iconPath+"editsort.png" ), tr( "Sort children","Edit menu" ), this );
+       connect( a, SIGNAL( activated() ), this, SLOT( editSortChildren() ) );
+       a->setEnabled (true);
+       a->addTo( tb );
+       editMenu->addAction (a);
+       actionEditSortChildren=a;
+
+       a = new QAction( QPixmap(flagsPath+"flag-scrolled-right.png"), tr( "Scroll branch","Edit menu" ),this);
+       a->setShortcut ( Qt::Key_ScrollLock );
+       a->setStatusTip (tr( "Scroll branch" ) );
+    connect( a, SIGNAL( triggered() ), this, SLOT( editToggleScroll() ) );
+
+       alt = new QAction( QPixmap(flagsPath+"flag-scrolled-right.png"), tr( "Scroll branch","Edit menu" ), this);
+       alt->setShortcut ( Qt::Key_S );                                 // Scroll branch
+       alt->setStatusTip (tr( "Scroll branch" )); 
+    connect( alt, SIGNAL( triggered() ), this, SLOT( editToggleScroll() ) );
+       #if defined(Q_OS_MACX)
+               actionEditToggleScroll=alt;
+       #else   
+               actionEditToggleScroll=a;
+       #endif  
+       actionEditToggleScroll->setEnabled (false);
+       actionEditToggleScroll->setToggleAction(true);
+    tb->addAction (actionEditToggleScroll);
+    editMenu->addAction ( actionEditToggleScroll);
+       editMenu->addAction (actionEditToggleScroll);
+       addAction (a);
+       addAction (alt);
+       actionListBranches.append(actionEditToggleScroll);
+       
+    a = new QAction( tr( "Unscroll childs","Edit menu" ), this);
+       a->setStatusTip (tr( "Unscroll all scrolled branches in selected subtree" ));
+       editMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editUnscrollChilds() ) );
+       
+       editMenu->addSeparator();
+
+       a = new QAction( QPixmap(iconPath+"find.png"), tr( "Find...","Edit menu"), this);
+       a->setStatusTip (tr( "Find" ) );
+       a->setShortcut (Qt::CTRL + Qt::Key_F );                         //Find
+       editMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editOpenFindWindow() ) );
+    
+       editMenu->addSeparator();
+
+       a = new QAction( QPixmap(flagsPath+"flag-url.png"), tr( "Open URL","Edit menu" ), this);
+       a->setShortcut (Qt::CTRL + Qt::Key_U );
+       a->setShortcut (tr( "Open URL" ));
+    tb->addAction (a);
+       addAction(a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editOpenURL() ) );
+       actionEditOpenURL=a;
+
+       a = new QAction( tr( "Open URL in new tab","Edit menu" ), this);
+       a->setStatusTip (tr( "Open URL in new tab" ));
+       //a->setShortcut (Qt::CTRL+Qt::Key_U );
+       addAction(a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editOpenURLTab() ) );
+       actionEditOpenURLTab=a;
+
+       a = new QAction( tr( "Open all URLs in subtree","Edit menu" ), this);
+       a->setStatusTip (tr( "Open all URLs in subtree" ));
+       addAction(a);
+       actionListBranches.append(a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editOpenMultipleURLTabs() ) );
+       actionEditOpenMultipleURLTabs=a;
+
+       a = new QAction(QPixmap(), tr( "Edit URL...","Edit menu"), this);
+       a->setStatusTip ( tr( "Edit URL" ) );
+       a->setShortcut ( Qt::Key_U );
+       a->setShortcutContext (Qt::WindowShortcut);
+       actionListBranches.append(a);
+       addAction(a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editURL() ) );
+       actionEditURL=a;
+       
+       a = new QAction(QPixmap(), tr( "Edit local URL...","Edit menu"), this);
+       a->setStatusTip ( tr( "Edit local URL" ) );
+       a->setShortcut (Qt::SHIFT +  Qt::Key_U );
+       a->setShortcutContext (Qt::WindowShortcut);
+       actionListBranches.append(a);
+       addAction(a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editLocalURL() ) );
+       actionEditLocalURL=a;
+       
+       a = new QAction( tr( "Use heading for URL","Edit menu" ), this);
+       a->setStatusTip ( tr( "Use heading of selected branch as URL" ));
+       a->setEnabled (false);
+       actionListBranches.append(a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editHeading2URL() ) );
+       actionEditHeading2URL=a;
+    
+       a = new QAction(tr( "Create URL to Novell Bugzilla","Edit menu" ), this);
+       a->setStatusTip ( tr( "Create URL to Novell Bugzilla" ));
+       a->setEnabled (false);
+       actionListBranches.append(a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editBugzilla2URL() ) );
+       actionEditBugzilla2URL=a;
+    
+       a = new QAction(tr( "Create URL to Novell FATE","Edit menu" ), this);
+       a->setStatusTip ( tr( "Create URL to Novell FATE" ));
+       a->setEnabled (false);
+       actionListBranches.append(a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editFATE2URL() ) );
+       actionEditFATE2URL=a;
+       
+    a = new QAction(QPixmap(flagsPath+"flag-vymlink.png"), tr( "Open linked map","Edit menu" ), this);
+       a->setStatusTip ( tr( "Jump to another vym map, if needed load it first" ));
+    tb->addAction (a);
+       a->setEnabled (false);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editOpenVymLink() ) );
+       actionEditOpenVymLink=a;
+       
+    a = new QAction(QPixmap(), tr( "Open all vym links in subtree","Edit menu" ), this);
+       a->setStatusTip ( tr( "Open all vym links in subtree" ));
+       a->setEnabled (false);
+       actionListBranches.append(a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editOpenMultipleVymLinks() ) );
+       actionEditOpenMultipleVymLinks=a;
+       
+
+    a = new QAction(tr( "Edit vym link...","Edit menu" ), this);
+       a->setEnabled (false);
+       a->setStatusTip ( tr( "Edit link to another vym map" ));
+    connect( a, SIGNAL( triggered() ), this, SLOT( editVymLink() ) );
+       actionListBranches.append(a);
+       actionEditVymLink=a;
+
+    a = new QAction(tr( "Delete vym link","Edit menu" ),this);
+       a->setStatusTip ( tr( "Delete link to another vym map" ));
+       a->setEnabled (false);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editDeleteVymLink() ) );
+       actionEditDeleteVymLink=a;
+
+    a = new QAction(QPixmap(flagsPath+"flag-hideexport.png"), tr( "Hide in exports","Edit menu" ), this);
+       a->setStatusTip ( tr( "Hide object in exports" ) );
+       a->setShortcut (Qt::Key_H );
+       a->setToggleAction(true);
+    tb->addAction (a);
+       a->setEnabled (false);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editToggleHideExport() ) );
+       actionEditToggleHideExport=a;
+
+    a = new QAction(tr( "Edit Map Info...","Edit menu" ),this);
+       a->setStatusTip ( tr( "Edit Map Info" ));
+       a->setEnabled (true);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editMapInfo() ) );
+       actionEditMapInfo=a;
+
+       // Import at selection (adding to selection)
+    a = new QAction( tr( "Add map (insert)","Edit menu" ),this);
+       a->setStatusTip (tr( "Add map at selection" ));
+    connect( a, SIGNAL( triggered() ), this, SLOT( editImportAdd() ) );
+       a->setEnabled (false);
+       actionListBranches.append(a);
+       actionEditImportAdd=a;
+
+       // Import at selection (replacing selection)
+    a = new QAction( tr( "Add map (replace)","Edit menu" ), this);
+       a->setStatusTip (tr( "Replace selection with map" ));
+    connect( a, SIGNAL( triggered() ), this, SLOT( editImportReplace() ) );
+       a->setEnabled (false);
+       actionListBranches.append(a);
+       actionEditImportReplace=a;
+
+       // Save selection 
+    a = new QAction( tr( "Save selection","Edit menu" ), this);
+       a->setStatusTip (tr( "Save selection" ));
+    connect( a, SIGNAL( triggered() ), this, SLOT( editSaveBranch() ) );
+       a->setEnabled (false);
+       actionListBranches.append(a);
+       actionEditSaveBranch=a;
+
+       // Only remove branch, not its childs
+    a = new QAction(tr( "Remove only branch ","Edit menu" ), this);
+       a->setStatusTip ( tr( "Remove only branch and keep its childs" ));
+       a->setShortcut (Qt::ALT + Qt::Key_Delete );
+    connect( a, SIGNAL( triggered() ), this, SLOT( editDeleteKeepChilds() ) );
+       a->setEnabled (false);
+       addAction (a);
+       actionListBranches.append(a);
+       actionEditDeleteKeepChilds=a;
+
+       // Only remove childs of a branch
+    a = new QAction( tr( "Remove childs","Edit menu" ), this);
+       a->setStatusTip (tr( "Remove childs of branch" ));
+       a->setShortcut (Qt::SHIFT + Qt::Key_Delete );
+    connect( a, SIGNAL( triggered() ), this, SLOT( editDeleteChilds() ) );
+       a->setEnabled (false);
+       actionListBranches.append(a);
+       actionEditDeleteChilds=a;
+
+    // Shortcuts for navigating with cursor:
+    a = new QAction(tr( "Select upper branch","Edit menu" ), this);
+       a->setStatusTip ( tr( "Select upper branch" ));
+       a->setShortcut (Qt::Key_Up );
+       a->setShortcutContext (Qt::WindowShortcut);
+       addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editUpperBranch() ) );
+    a = new QAction( tr( "Select lower branch","Edit menu" ),this);
+       a->setStatusTip (tr( "Select lower branch" ));
+       a->setShortcut ( Qt::Key_Down );
+       a->setShortcutContext (Qt::WindowShortcut);
+       addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editLowerBranch() ) );
+    a = new QAction(tr( "Select left branch","Edit menu" ), this);
+       a->setStatusTip ( tr( "Select left branch" ));
+       a->setShortcut (Qt::Key_Left );
+       a->setShortcutContext (Qt::WindowShortcut);
+       addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editLeftBranch() ) );
+    a = new QAction( tr( "Select child branch","Edit menu" ), this);
+       a->setStatusTip (tr( "Select right branch" ));
+       a->setShortcut (Qt::Key_Right);
+       a->setShortcutContext (Qt::WindowShortcut);
+       addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editRightBranch() ) );
+    a = new QAction( tr( "Select first branch","Edit menu" ), this);
+       a->setStatusTip (tr( "Select first branch" ));
+       a->setShortcut (Qt::Key_Home );
+       a->setShortcutContext (Qt::WindowShortcut);
+       addAction (a);
+       a->setEnabled (false);
+       editMenu->addAction (a);
+       actionListBranches.append(a);
+       actionEditSelectFirst=a;
+    connect( a, SIGNAL( triggered() ), this, SLOT( editFirstBranch() ) );
+    a = new QAction( tr( "Select last branch","Edit menu" ),this);
+       a->setStatusTip (tr( "Select last branch" ));
+       a->setShortcut ( Qt::Key_End );
+       a->setShortcutContext (Qt::WindowShortcut);
+       addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( editLastBranch() ) );
+       a->setEnabled (false);
+       editMenu->addAction (a);
+       actionListBranches.append(a);
+       actionEditSelectLast=a;
+
+    a = new QAction( tr( "Add Image...","Edit menu" ), this);
+       a->setStatusTip (tr( "Add Image" ));
+    connect( a, SIGNAL( triggered() ), this, SLOT( editLoadImage() ) );
+       actionEditLoadImage=a;
+
+    a = new QAction( tr( "Property window","Dialog to edit properties of selection" )+QString ("..."), this);
+       a->setStatusTip (tr( "Set properties for selection" ));
+       a->setShortcut ( Qt::CTRL + Qt::Key_I );                //Property window
+       a->setShortcutContext (Qt::WindowShortcut);
+       a->setToggleAction (true);
+       addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( windowToggleProperty() ) );
+       actionViewTogglePropertyWindow=a;
+}
+
+// Format Actions
+void Main::setupFormatActions()
+{
+    QMenu *formatMenu = menuBar()->addMenu (tr ("F&ormat","Format menu"));
+
+    QToolBar *tb = addToolBar( tr("Format Actions","Format Toolbar name"));
+       tb->setObjectName ("formatTB");
+    QAction *a;
+    QPixmap pix( 16,16);
+    pix.fill (Qt::black);
+    a= new QAction(pix, tr( "Set &Color" )+QString("..."), this);
+       a->setStatusTip ( tr( "Set Color" ));
+    connect( a, SIGNAL( triggered() ), this, SLOT( formatSelectColor() ) );
+    a->addTo( tb );
+       formatMenu->addAction (a);
+       actionFormatColor=a;
+    a= new QAction( QPixmap(iconPath+"formatcolorpicker.png"), tr( "Pic&k color","Edit menu" ), this);
+       a->setStatusTip (tr( "Pick color\nHint: You can pick a color from another branch and color using CTRL+Left Button" ) );
+       a->setShortcut (Qt::CTRL + Qt::Key_K );
+    connect( a, SIGNAL( triggered() ), this, SLOT( formatPickColor() ) );
+       a->setEnabled (false);
+    a->addTo( tb );
+       formatMenu->addAction (a);
+       actionListBranches.append(a);
+       actionFormatPickColor=a;
+
+    a= new QAction(QPixmap(iconPath+"formatcolorbranch.png"), tr( "Color &branch","Edit menu" ), this);
+       a->setStatusTip ( tr( "Color branch" ) );
+       a->setShortcut (Qt::CTRL + Qt::Key_B);
+    connect( a, SIGNAL( triggered() ), this, SLOT( formatColorBranch() ) );
+       a->setEnabled (false);
+    a->addTo( tb );
+       formatMenu->addAction (a);
+       actionListBranches.append(a);
+       actionFormatColorSubtree=a;
+
+    a= new QAction(QPixmap(iconPath+"formatcolorsubtree.png"), tr( "Color sub&tree","Edit menu" ), this);
+       a->setStatusTip ( tr( "Color Subtree" ));
+       a->setShortcut (Qt::CTRL + Qt::Key_T);
+    connect( a, SIGNAL( triggered() ), this, SLOT( formatColorSubtree() ) );
+       a->setEnabled (false);
+       formatMenu->addAction (a);
+    a->addTo( tb );
+       actionListBranches.append(a);
+       actionFormatColorSubtree=a;
+
+       formatMenu->addSeparator();
+       actionGroupFormatLinkStyles=new QActionGroup ( this);
+       actionGroupFormatLinkStyles->setExclusive (true);
+    a= new QAction( tr( "Linkstyle Line" ), actionGroupFormatLinkStyles);
+       a->setStatusTip (tr( "Line" ));
+       a->setToggleAction(true);
+    connect( a, SIGNAL( triggered() ), this, SLOT( formatLinkStyleLine() ) );
+       formatMenu->addAction (a);
+       actionFormatLinkStyleLine=a;
+    a= new QAction( tr( "Linkstyle Curve" ), actionGroupFormatLinkStyles);
+       a->setStatusTip (tr( "Line" ));
+       a->setToggleAction(true);
+    connect( a, SIGNAL( triggered() ), this, SLOT( formatLinkStyleParabel() ) );
+       formatMenu->addAction (a);
+       actionFormatLinkStyleParabel=a;
+    a= new QAction( tr( "Linkstyle Thick Line" ), actionGroupFormatLinkStyles );
+       a->setStatusTip (tr( "PolyLine" ));
+       a->setToggleAction(true);
+    connect( a, SIGNAL( triggered() ), this, SLOT( formatLinkStylePolyLine() ) );
+       formatMenu->addAction (a);
+       actionFormatLinkStylePolyLine=a;
+    a= new QAction( tr( "Linkstyle Thick Curve" ), actionGroupFormatLinkStyles);
+       a->setStatusTip (tr( "PolyParabel" ) );
+       a->setToggleAction(true);
+       a->setChecked (true);
+    connect( a, SIGNAL( triggered() ), this, SLOT( formatLinkStylePolyParabel() ) );
+       formatMenu->addAction (a);
+       actionFormatLinkStylePolyParabel=a;
+       
+    a = new QAction( tr( "Hide link if object is not selected","Branch attribute" ), this);
+       a->setStatusTip (tr( "Hide link" ));
+       a->setToggleAction(true);
+    connect( a, SIGNAL( triggered() ), this, SLOT( formatHideLinkUnselected() ) );
+       actionFormatHideLinkUnselected=a;
+
+       formatMenu->addSeparator();
+    a= new QAction( tr( "&Use color of heading for link","Branch attribute" ),  this);
+       a->setStatusTip (tr( "Use same color for links and headings" ));
+       a->setToggleAction(true);
+    connect( a, SIGNAL( triggered() ), this, SLOT( formatToggleLinkColorHint() ) );
+       formatMenu->addAction (a);
+       actionFormatLinkColorHint=a;
+
+    pix.fill (Qt::white);
+    a= new QAction( pix, tr( "Set &Link Color"+QString("...") ), this  );
+       a->setStatusTip (tr( "Set Link Color" ));
+       formatMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( formatSelectLinkColor() ) );
+    actionFormatLinkColor=a;
+
+    a= new QAction( pix, tr( "Set &Selection Color"+QString("...") ), this  );
+       a->setStatusTip (tr( "Set Selection Color" ));
+       formatMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( formatSelectSelectionColor() ) );
+    actionFormatSelectionColor=a;
+
+    a= new QAction( pix, tr( "Set &Background Color" )+QString("..."), this );
+       a->setStatusTip (tr( "Set Background Color" ));
+       formatMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( formatSelectBackColor() ) );
+    actionFormatBackColor=a;
+
+    a= new QAction( pix, tr( "Set &Background image" )+QString("..."), this );
+       a->setStatusTip (tr( "Set Background image" ));
+       formatMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( formatSelectBackImage() ) );
+    actionFormatBackImage=a;
+}
+
+// View Actions
+void Main::setupViewActions()
+{
+    QToolBar *tb = addToolBar( tr("View Actions","View Toolbar name") );
+    tb->setLabel( "View Actions" );
+       tb->setObjectName ("viewTB");
+    QMenu *viewMenu = menuBar()->addMenu ( tr( "&View" ));
+
+    QAction *a;
+    a = new QAction(QPixmap(iconPath+"viewmag-reset.png"), tr( "reset Zoom","View action" ), this);
+       a->setStatusTip ( tr( "Zoom reset" ) );
+       a->setShortcut (Qt::CTRL + Qt::Key_0 );
+    a->addTo( tb );
+       viewMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT(viewZoomReset() ) );
+       
+    a = new QAction( QPixmap(iconPath+"viewmag+.png"), tr( "Zoom in","View action" ), this);
+       a->setStatusTip (tr( "Zoom in" ));
+       a->setShortcut (Qt::CTRL + Qt::Key_Plus);
+    a->addTo( tb );
+       viewMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT(viewZoomIn() ) );
+       
+    a = new QAction( QPixmap(iconPath+"viewmag-.png"), tr( "Zoom out","View action" ), this);
+       a->setStatusTip (tr( "Zoom out" ));
+       a->setShortcut (Qt::CTRL + Qt::Key_Minus );
+    a->addTo( tb );
+       viewMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( viewZoomOut() ) );
+
+    a = new QAction( QPixmap(iconPath+"viewshowsel.png"), tr( "Show selection","View action" ), this);
+       a->setStatusTip (tr( "Show selection" ));
+       a->setShortcut (Qt::Key_Period);
+    a->addTo( tb );
+       viewMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( viewCenter() ) );
+
+       viewMenu->addSeparator();       
+
+    a = new QAction(QPixmap(flagsPath+"flag-note.png"), tr( "Show Note Editor","View action" ),this);
+       a->setStatusTip ( tr( "Show Note Editor" ));
+       a->setShortcut ( Qt::CTRL + Qt::Key_E );
+       a->setToggleAction(true);
+    a->addTo( tb );
+       viewMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT(windowToggleNoteEditor() ) );
+       actionViewToggleNoteEditor=a;
+
+    a = new QAction(QPixmap(iconPath+"history.png"),  tr( "History Window","View action" ),this );
+       a->setStatusTip ( tr( "Show History Window" ));
+       a->setShortcut ( Qt::CTRL + Qt::Key_H  );
+       a->setToggleAction(true);
+    a->addTo( tb );
+       viewMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT(windowToggleHistory() ) );
+       actionViewToggleHistoryWindow=a;
+
+       viewMenu->addAction (actionViewTogglePropertyWindow);
+
+       viewMenu->addSeparator();       
+
+    a = new QAction(tr( "Antialiasing","View action" ),this );
+       a->setStatusTip ( tr( "Antialiasing" ));
+       a->setToggleAction(true);
+       a->setOn (settings.value("/mainwindow/view/AntiAlias",true).toBool());
+       viewMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT(windowToggleAntiAlias() ) );
+       actionViewToggleAntiAlias=a;
+
+    a = new QAction(tr( "Smooth pixmap transformations","View action" ),this );
+       a->setStatusTip (a->text());
+       a->setToggleAction(true);
+       a->setOn (settings.value("/mainwindow/view/SmoothPixmapTransformation",true).toBool());
+       viewMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT(windowToggleSmoothPixmap() ) );
+       actionViewToggleSmoothPixmapTransform=a;
+
+    a = new QAction(tr( "Next Map","View action" ), this);
+       a->setStatusTip (a->text());
+       a->setShortcut (Qt::ALT + Qt::Key_N );
+       viewMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT(windowNextEditor() ) );
+
+    a = new QAction (tr( "Previous Map","View action" ), this );
+       a->setStatusTip (a->text());
+       a->setShortcut (Qt::ALT + Qt::Key_P );
+       viewMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT(windowPreviousEditor() ) );
+}
+
+// Mode Actions
+void Main::setupModeActions()
+{
+    //QPopupMenu *menu = new QPopupMenu( this );
+    //menuBar()->insertItem( tr( "&Mode (using modifiers)" ), menu );
+
+    QToolBar *tb = addToolBar( tr ("Modes when using modifiers","Modifier Toolbar name") );
+       tb->setObjectName ("modesTB");
+    QAction *a;
+       actionGroupModModes=new QActionGroup ( this);
+       actionGroupModModes->setExclusive (true);
+    a= new QAction( QPixmap(iconPath+"modecolor.png"), tr( "Use modifier to color branches","Mode modifier" ), actionGroupModModes);
+       a->setShortcut (Qt::Key_J);
+    a->setStatusTip ( tr( "Use modifier to color branches" ));
+       a->setToggleAction(true);
+       a->addTo (tb);
+       a->setOn(true);
+       actionModModeColor=a;
+       
+    a= new QAction( QPixmap(iconPath+"modecopy.png"), tr( "Use modifier to copy","Mode modifier" ), actionGroupModModes );
+       a->setShortcut( Qt::Key_K); 
+    a->setStatusTip( tr( "Use modifier to copy" ));
+       a->setToggleAction(true);
+       a->addTo (tb);
+       actionModModeCopy=a;
+
+    a= new QAction(QPixmap(iconPath+"modelink.png"), tr( "Use modifier to draw xLinks","Mode modifier" ), actionGroupModModes );
+       a->setShortcut (Qt::Key_L);
+    a->setStatusTip( tr( "Use modifier to draw xLinks" ));
+       a->setToggleAction(true);
+       a->addTo (tb);
+       actionModModeXLink=a;
+}
+
+// Flag Actions
+void Main::setupFlagActions()
+{
+       // Create System Flags
+       QToolBar *tb=NULL;
+       bool avis=true;
+
+       systemFlagsDefault = new FlagRowObj ();
+       systemFlagsDefault->setVisibility (false);
+       systemFlagsDefault->setName ("systemFlagsDef");
+
+       FlagObj *fo = new FlagObj ();
+       fo->load(QPixmap(flagsPath+"flag-note.png"));
+       setupFlag (fo,tb,avis,"note",tr("Note","SystemFlag"));
+
+       fo->load(QPixmap(flagsPath+"flag-url.png"));
+       setupFlag (fo,tb,avis,"url",tr("URL to Document ","SystemFlag"));
+       
+       fo->load(QPixmap(flagsPath+"flag-vymlink.png"));
+       setupFlag (fo,tb,avis,"vymLink",tr("Link to another vym map","SystemFlag"));
+
+       fo->load(QPixmap(flagsPath+"flag-scrolled-right.png"));
+       setupFlag (fo,tb,avis,"scrolledright",tr("subtree is scrolled","SystemFlag"));
+       
+       fo->load(QPixmap(flagsPath+"flag-tmpUnscrolled-right.png"));
+       setupFlag (fo,tb,avis,"tmpUnscrolledright",tr("subtree is temporary scrolled","SystemFlag"));
+
+       fo->load(QPixmap(flagsPath+"flag-hideexport.png"));
+       setupFlag (fo,tb,avis,"hideInExport",tr("Hide object in exported maps","SystemFlag"));
+
+       // Create Standard Flags
+       tb=addToolBar (tr ("Standard Flags","Standard Flag Toolbar"));
+       tb->setObjectName ("standardFlagTB");
+
+       standardFlagsDefault = new FlagRowObj ();
+       standardFlagsDefault->setVisibility (false);
+       standardFlagsDefault->setName ("standardFlagsDef");
+       standardFlagsDefault->setToolBar (tb);
+
+       fo->load(flagsPath+"flag-exclamationmark.png");
+       fo->setGroup("standard-mark");
+       setupFlag (fo,tb,avis,"exclamationmark",tr("Take care!","Standardflag"));
+       
+       fo->load(flagsPath+"flag-questionmark.png");
+       fo->setGroup("standard-mark");
+       setupFlag (fo,tb,avis,"questionmark",tr("Really?","Standardflag"));
+
+       fo->load(flagsPath+"flag-hook-green.png");
+       fo->setGroup("standard-hook");
+       setupFlag (fo,tb,avis,"hook-green",tr("ok!","Standardflag"));
+
+       fo->load(flagsPath+"flag-cross-red.png");
+       fo->setGroup("standard-hook");
+       setupFlag (fo,tb,avis,"cross-red",tr("Not ok!","Standardflag"));
+       fo->unsetGroup();
+
+       fo->load(flagsPath+"flag-stopsign.png");
+       setupFlag (fo,tb,avis,"stopsign",tr("This won't work!","Standardflag"));
+
+       fo->load(flagsPath+"flag-smiley-good.png");
+       fo->setGroup("standard-smiley");
+       setupFlag (fo,tb,avis,"smiley-good",tr("Good","Standardflag"));
+
+       fo->load(flagsPath+"flag-smiley-sad.png");
+       fo->setGroup("standard-smiley");
+       setupFlag (fo,tb,avis,"smiley-sad",tr("Bad","Standardflag"));
+
+       fo->load(flagsPath+"flag-smiley-omg.png");
+       fo->setGroup("standard-smiley");
+       setupFlag (fo,tb,avis,"smiley-omb",tr("Oh no!","Standardflag"));
+       // Original omg.png (in KDE emoticons)
+       fo->unsetGroup();
+
+       fo->load(flagsPath+"flag-kalarm.png");
+       setupFlag (fo,tb,avis,"clock",tr("Time critical","Standardflag"));
+
+       fo->load(flagsPath+"flag-phone.png");
+       setupFlag (fo,tb,avis,"phone",tr("Call...","Standardflag"));
+
+       fo->load(flagsPath+"flag-lamp.png");
+       setupFlag (fo,tb,avis,"lamp",tr("Idea!","Standardflag"));
+
+       fo->load(flagsPath+"flag-arrow-up.png");
+       fo->setGroup("standard-arrow");
+       setupFlag (fo,tb,avis,"arrow-up",tr("Important","Standardflag"));
+
+       fo->load(flagsPath+"flag-arrow-down.png");
+       fo->setGroup("standard-arrow");
+       setupFlag (fo,tb,avis,"arrow-down",tr("Unimportant","Standardflag"));
+
+       fo->load(flagsPath+"flag-arrow-2up.png");
+       fo->setGroup("standard-arrow");
+       setupFlag (fo,tb,avis,"2arrow-up",tr("Very important!","Standardflag"));
+
+       fo->load(flagsPath+"flag-arrow-2down.png");
+       fo->setGroup("standard-arrow");
+       setupFlag (fo,tb,avis,"2arrow-down",tr("Very unimportant!","Standardflag"));
+       fo->unsetGroup();
+
+       fo->load(flagsPath+"flag-thumb-up.png");
+       fo->setGroup("standard-thumb");
+       setupFlag (fo,tb,avis,"thumb-up",tr("I like this","Standardflag"));
+
+       fo->load(flagsPath+"flag-thumb-down.png");
+       fo->setGroup("standard-thumb");
+       setupFlag (fo,tb,avis,"thumb-down",tr("I do not like this","Standardflag"));
+       fo->unsetGroup();
+       
+       fo->load(flagsPath+"flag-rose.png");
+       setupFlag (fo,tb,avis,"rose",tr("Rose","Standardflag"));
+
+       fo->load(flagsPath+"flag-heart.png");
+       setupFlag (fo,tb,avis,"heart",tr("I just love...","Standardflag"));
+
+       fo->load(flagsPath+"flag-present.png");
+       setupFlag (fo,tb,avis,"present",tr("Surprise!","Standardflag"));
+
+       fo->load(flagsPath+"flag-flash.png");
+       setupFlag (fo,tb,avis,"flash",tr("Dangerous","Standardflag"));
+       
+       // Original: xsldbg_output.png
+       fo->load(flagsPath+"flag-info.png");
+       setupFlag (fo,tb,avis,"info",tr("Info","Standardflag"));
+
+       // Original khelpcenter.png
+       fo->load(flagsPath+"flag-lifebelt.png");
+       setupFlag (fo,tb,avis,"lifebelt",tr("This will help","Standardflag"));
+
+       // Freemind flags
+
+       avis=false;
+
+       fo->load(flagsPath+"freemind/warning.png");
+       setupFlag (fo,tb, avis, "freemind-warning",tr("Important","Freemind-Flag"));
+
+       for (int i=1; i<8; i++)
+       {
+               fo->load(flagsPath+QString("freemind/priority-%1.png").arg(i));
+               setupFlag (fo,tb, avis,QString("freemind-priority-%1").arg(i),tr("Priority","Freemind-Flag"));
+       }
+
+       fo->load(flagsPath+"freemind/back.png");
+       setupFlag (fo,tb,avis,"freemind-back",tr("Back","Freemind-Flag"));
+
+       fo->load(flagsPath+"freemind/forward.png");
+       setupFlag (fo,tb,avis,"freemind-forward",tr("Forward","Freemind-Flag"));
+
+       fo->load(flagsPath+"freemind/attach.png");
+       setupFlag (fo,tb,avis,"freemind-attach",tr("Look here","Freemind-Flag"));
+
+       fo->load(flagsPath+"freemind/clanbomber.png");
+       setupFlag (fo,tb,avis,"freemind-clanbomber",tr("Dangerous","Freemind-Flag"));
+
+       fo->load(flagsPath+"freemind/desktopnew.png");
+       setupFlag (fo,tb,avis,"freemind-desktopnew",tr("Don't forget","Freemind-Flag"));
+
+       fo->load(flagsPath+"freemind/flag.png");
+       setupFlag (fo,tb,avis,"freemind-flag",tr("Flag","Freemind-Flag"));
+
+
+       fo->load(flagsPath+"freemind/gohome.png");
+       setupFlag (fo,tb,avis,"freemind-gohome",tr("Home","Freemind-Flag"));
+
+
+       fo->load(flagsPath+"freemind/kaddressbook.png");
+       setupFlag (fo,tb,avis,"freemind-kaddressbook",tr("Telephone","Freemind-Flag"));
+
+       fo->load(flagsPath+"freemind/knotify.png");
+       setupFlag (fo,tb,avis,"freemind-knotify",tr("Music","Freemind-Flag"));
+
+       fo->load(flagsPath+"freemind/korn.png");
+       setupFlag (fo,tb,avis,"freemind-korn",tr("Mailbox","Freemind-Flag"));
+
+       fo->load(flagsPath+"freemind/mail.png");
+       setupFlag (fo,tb,avis,"freemind-mail",tr("Maix","Freemind-Flag"));
+
+       fo->load(flagsPath+"freemind/password.png");
+       setupFlag (fo,tb,avis,"freemind-password",tr("Password","Freemind-Flag"));
+
+       fo->load(flagsPath+"freemind/pencil.png");
+       setupFlag (fo,tb,avis,"freemind-pencil",tr("To be improved","Freemind-Flag"));
+
+       fo->load(flagsPath+"freemind/stop.png");
+       setupFlag (fo,tb,avis,"freemind-stop",tr("Stop","Freemind-Flag"));
+
+       fo->load(flagsPath+"freemind/wizard.png");
+       setupFlag (fo,tb,avis,"freemind-wizard",tr("Magic","Freemind-Flag"));
+
+       fo->load(flagsPath+"freemind/xmag.png");
+       setupFlag (fo,tb,avis,"freemind-xmag",tr("To be discussed","Freemind-Flag"));
+
+       fo->load(flagsPath+"freemind/bell.png");
+       setupFlag (fo,tb,avis,"freemind-bell",tr("Reminder","Freemind-Flag"));
+
+       fo->load(flagsPath+"freemind/bookmark.png");
+       setupFlag (fo,tb,avis,"freemind-bookmark",tr("Excellent","Freemind-Flag"));
+
+       fo->load(flagsPath+"freemind/penguin.png");
+       setupFlag (fo,tb,avis,"freemind-penguin",tr("Linux","Freemind-Flag"));
+
+       fo->load(flagsPath+"freemind/licq.png");
+       setupFlag (fo,tb,avis,"freemind-licq",tr("Sweet","Freemind-Flag"));
+
+       delete (fo);
+}
+
+void Main::setupFlag (FlagObj *fo, QToolBar *tb, bool aw, const QString &name, const QString &tooltip)
+{
+       fo->setName(name);
+       fo->setToolTip (tooltip);
+       QAction *a=new QAction (fo->getPixmap(),fo->getName(),this);
+       if (tb)
+       {
+               // StandardFlag
+               tb->addAction (a);
+               fo->setAction (a);
+               fo->setAlwaysVisible(aw);
+               a->setCheckable(true);
+               a->setObjectName(fo->getName());
+               a->setToolTip(tooltip);
+               connect (a, SIGNAL( triggered() ), this, SLOT( standardFlagChanged() ) );
+               standardFlagsDefault->addFlag (fo);     
+       } else
+       {
+               // SystemFlag
+               systemFlagsDefault->addFlag (fo);       
+       }
+}
+// Network Actions
+void Main::setupNetworkActions()
+{
+       if (!settings.value( "/mainwindow/showTestMenu",false).toBool() ) 
+               return;
+    QMenu *netMenu = menuBar()->addMenu(  "Network" );
+
+       QAction *a;
+
+    a = new QAction(  "Start TCPserver for MapEditor",this);
+    //a->setStatusTip ( "Set application to open pdf files"));
+       a->setShortcut ( Qt::Key_T );           //New TCP server
+    connect( a, SIGNAL( triggered() ), this, SLOT( networkStartServer() ) );
+       netMenu->addAction (a);
+
+    a = new QAction(  "Connect MapEditor to server",this);
+    //a->setStatusTip ( "Set application to open pdf files"));
+       a->setShortcut ( Qt::Key_C );           // Connect to server
+    connect( a, SIGNAL( triggered() ), this, SLOT( networkConnect() ) );
+       netMenu->addAction (a);
+}
+       
+// Settings Actions
+void Main::setupSettingsActions()
+{
+    QMenu *settingsMenu = menuBar()->addMenu( tr( "&Settings" ));
+
+       QAction *a;
+
+    a = new QAction( tr( "Set application to open pdf files","Settings action"), this);
+    a->setStatusTip ( tr( "Set application to open pdf files"));
+    connect( a, SIGNAL( triggered() ), this, SLOT( settingsPDF() ) );
+       settingsMenu->addAction (a);
+
+    a = new QAction( tr( "Set application to open external links","Settings action"), this);
+    a->setStatusTip( tr( "Set application to open external links"));
+    connect( a, SIGNAL( triggered() ), this, SLOT( settingsURL() ) );
+       settingsMenu->addAction (a);
+
+    a = new QAction( tr( "Set path for macros","Settings action")+"...", this);
+    a->setStatusTip( tr( "Set path for macros"));
+    connect( a, SIGNAL( triggered() ), this, SLOT( settingsMacroDir() ) );
+       settingsMenu->addAction (a);
+
+    a = new QAction( tr( "Set number of undo levels","Settings action")+"...", this);
+    a->setStatusTip( tr( "Set number of undo levels"));
+    connect( a, SIGNAL( triggered() ), this, SLOT( settingsUndoLevels() ) );
+       settingsMenu->addAction (a);
+
+       settingsMenu->addSeparator();
+
+    a = new QAction( tr( "Autosave","Settings action"), this);
+    a->setStatusTip( tr( "Autosave"));
+       a->setToggleAction(true);
+       a->setOn ( settings.value ("/mapeditor/autosave/use",false).toBool());
+    connect( a, SIGNAL( triggered() ), this, SLOT( settingsAutosaveToggle() ) );
+       settingsMenu->addAction (a);
+       actionSettingsAutosaveToggle=a;
+
+    a = new QAction( tr( "Autosave time","Settings action")+"...", this);
+    a->setStatusTip( tr( "Autosave time"));
+    connect( a, SIGNAL( triggered() ), this, SLOT( settingsAutosaveTime() ) );
+       settingsMenu->addAction (a);
+       actionSettingsAutosaveTime=a;
+
+    a = new QAction( tr( "Write backup file on save","Settings action"), this);
+    a->setStatusTip( tr( "Write backup file on save"));
+       a->setToggleAction(true);
+       a->setOn ( settings.value ("/mainwindow/writeBackupFile",false).toBool());
+    connect( a, SIGNAL( triggered() ), this, SLOT( settingsWriteBackupFileToggle() ) );
+       settingsMenu->addAction (a);
+       actionSettingsWriteBackupFile=a;
+
+       settingsMenu->addSeparator();
+
+    a = new QAction( tr( "Edit branch after adding it","Settings action" ), this );
+    a->setStatusTip( tr( "Edit branch after adding it" ));
+       a->setToggleAction(true);
+       a->setOn ( settings.value ("/mapeditor/editmode/autoEditNewBranch",true).toBool());
+       settingsMenu->addAction (a);
+       actionSettingsAutoEditNewBranch=a;
+
+    a= new QAction( tr( "Select branch after adding it","Settings action" ), this );
+    a->setStatusTip( tr( "Select branch after adding it" ));
+       a->setToggleAction(true);
+       a->setOn ( settings.value ("/mapeditor/editmode/autoSelectNewBranch",false).toBool() );
+       settingsMenu->addAction (a);
+       actionSettingsAutoSelectNewBranch=a;
+       
+    a= new QAction(tr( "Select existing heading","Settings action" ), this);
+    a->setStatusTip( tr( "Select heading before editing" ));
+       a->setToggleAction(true);
+       a->setOn ( settings.value ("/mapeditor/editmode/autoSelectText",true).toBool() );
+       settingsMenu->addAction (a);
+       actionSettingsAutoSelectText=a;
+       
+    a= new QAction( tr( "Delete key","Settings action" ), this);
+    a->setStatusTip( tr( "Delete key for deleting branches" ));
+       a->setToggleAction(true);
+       a->setOn ( settings.value ("/mapeditor/editmode/useDelKey",true).toBool() );
+       settingsMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( settingsToggleDelKey() ) );
+       actionSettingsUseDelKey=a;
+
+    a= new QAction( tr( "Exclusive flags","Settings action" ), this);
+    a->setStatusTip( tr( "Use exclusive flags in flag toolbars" ));
+       a->setToggleAction(true);
+       a->setOn ( settings.value ("/mapeditor/editmode/useFlagGroups",true).toBool() );
+       settingsMenu->addAction (a);
+       actionSettingsUseFlagGroups=a;
+       
+    a= new QAction( tr( "Use hide flags","Settings action" ), this);
+    a->setStatusTip( tr( "Use hide flag during exports " ));
+       a->setToggleAction(true);
+       a->setOn ( settings.value ("/export/useHideExport",true).toBool() );
+       settingsMenu->addAction (a);
+       actionSettingsUseHideExport=a;
+
+    a = new QAction( tr( "Animation","Settings action"), this);
+    a->setStatusTip( tr( "Animation"));
+       a->setToggleAction(true);
+       a->setOn (settings.value("/animation/use",false).toBool() );
+    connect( a, SIGNAL( triggered() ), this, SLOT( settingsToggleAnimation() ) );
+       if (settings.value( "/mainwindow/showTestMenu",false).toBool() )
+       {
+               settingsMenu->addAction (a);
+       }       
+       actionSettingsUseAnimation=a;
+}
+
+// Test Actions
+void Main::setupTestActions()
+{
+    QMenu *testMenu = menuBar()->addMenu( tr( "&Test" ));
+
+    QAction *a;
+    a = new QAction( "Test function 1" , this);
+    a->setStatusTip( "Call test function 1" );
+       testMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( testFunction1() ) );
+
+    a = new QAction( "Test function 2" , this);
+    a->setStatusTip( "Call test function 2" );
+       testMenu->addAction (a);
+    connect( a, SIGNAL( triggered() ), this, SLOT( testFunction2() ) );
+
+    a = new QAction( "Command" , this);
+    a->setStatusTip( "Enter command to call in editor" );
+    connect( a, SIGNAL( triggered() ), this, SLOT( testCommand() ) );
+       testMenu->addAction (a);
+}
+
+// Help Actions
+void Main::setupHelpActions()
+{
+    QMenu *helpMenu = menuBar()->addMenu ( tr( "&Help","Help menubar entry" ));
+
+    QAction *a;
+    a = new QAction(  tr( "Open VYM Documentation (pdf) ","Help action" ), this );
+    a->setStatusTip( tr( "Open VYM Documentation (pdf)" ));
+    connect( a, SIGNAL( triggered() ), this, SLOT( helpDoc() ) );
+       helpMenu->addAction (a);
+
+    a = new QAction(  tr( "Open VYM example maps ","Help action" ), this );
+    a->setStatusTip( tr( "Open VYM example maps " ));
+    connect( a, SIGNAL( triggered() ), this, SLOT( helpDemo() ) );
+       helpMenu->addAction (a);
+
+    a = new QAction( tr( "About VYM","Help action" ), this);
+    a->setStatusTip( tr( "About VYM")+vymName);
+    connect( a, SIGNAL( triggered() ), this, SLOT( helpAbout() ) );
+       helpMenu->addAction (a);
+
+    a = new QAction( tr( "About QT","Help action" ), this);
+    a->setStatusTip( tr( "Information about QT toolkit" ));
+    connect( a, SIGNAL( triggered() ), this, SLOT( helpAboutQT() ) );
+       helpMenu->addAction (a);
+}
+
+// Context Menus
+void Main::setupContextMenus()
+{
+       QAction*a;
+
+       // Context Menu for branch or mapcenter
+       branchContextMenu =new QMenu (this);
+       branchContextMenu->addAction (actionViewTogglePropertyWindow);
+       branchContextMenu->addSeparator();      
+
+               // Submenu "Add"
+               branchAddContextMenu =branchContextMenu->addMenu (tr("Add"));
+               branchAddContextMenu->addAction (actionEditPaste );
+               branchAddContextMenu->addAction ( actionEditAddBranch );
+               branchAddContextMenu->addAction ( actionEditAddBranchBefore );
+               branchAddContextMenu->addAction ( actionEditAddBranchAbove);
+               branchAddContextMenu->addAction ( actionEditAddBranchBelow );
+               branchAddContextMenu->addSeparator();   
+               branchAddContextMenu->addAction ( actionEditImportAdd );
+               branchAddContextMenu->addAction ( actionEditImportReplace );
+
+               // Submenu "Remove"
+               branchRemoveContextMenu =branchContextMenu->addMenu (tr ("Remove","Context menu name"));
+               branchRemoveContextMenu->addAction (actionEditCut);
+               branchRemoveContextMenu->addAction ( actionEditDelete );
+               branchRemoveContextMenu->addAction ( actionEditDeleteKeepChilds );
+               branchRemoveContextMenu->addAction ( actionEditDeleteChilds );
+               
+
+       actionEditSaveBranch->addTo( branchContextMenu );
+       actionFileNewCopy->addTo (branchContextMenu );
+
+       branchContextMenu->addSeparator();      
+       branchContextMenu->addAction ( actionEditLoadImage);
+
+       // Submenu for Links (URLs, vymLinks)
+       branchLinksContextMenu =new QMenu (this);
+
+               branchContextMenu->addSeparator();      
+               branchLinksContextMenu=branchContextMenu->addMenu(tr("References (URLs, vymLinks, ...)","Context menu name"));  
+               branchLinksContextMenu->addAction ( actionEditOpenURL );
+               branchLinksContextMenu->addAction ( actionEditOpenURLTab );
+               branchLinksContextMenu->addAction ( actionEditOpenMultipleURLTabs );
+               branchLinksContextMenu->addAction ( actionEditURL );
+               branchLinksContextMenu->addAction ( actionEditLocalURL );
+               branchLinksContextMenu->addAction ( actionEditHeading2URL );
+               branchLinksContextMenu->addAction ( actionEditBugzilla2URL );
+               if (settings.value( "/mainwindow/showTestMenu",false).toBool() )
+               {
+                       branchLinksContextMenu->addAction ( actionEditFATE2URL );
+               }       
+               branchLinksContextMenu->addSeparator(); 
+               branchLinksContextMenu->addAction ( actionEditOpenVymLink );
+               branchLinksContextMenu->addAction ( actionEditOpenMultipleVymLinks );
+               branchLinksContextMenu->addAction ( actionEditVymLink );
+               branchLinksContextMenu->addAction ( actionEditDeleteVymLink );
+               
+
+       // Context Menu for XLinks in a branch menu
+       // This will be populated "on demand" in MapEditor::updateActions
+       branchContextMenu->addSeparator();      
+       branchXLinksContextMenuEdit =branchContextMenu->addMenu (tr ("Edit XLink","Context menu name"));
+       branchXLinksContextMenuFollow =branchContextMenu->addMenu (tr ("Follow XLink","Context menu name"));
+       connect( branchXLinksContextMenuFollow, SIGNAL( triggered(QAction *) ), this, SLOT( editFollowXLink(QAction * ) ) );
+       connect( branchXLinksContextMenuEdit, SIGNAL( triggered(QAction *) ), this, SLOT( editEditXLink(QAction * ) ) );
+       
+       
+       // Context menu for floatimage
+       floatimageContextMenu =new QMenu (this);
+       a= new QAction (tr ("Save image","Context action"),this);
+       connect (a, SIGNAL (triggered()), this, SLOT (editSaveImage()));
+       floatimageContextMenu->addAction (a);
+
+       floatimageContextMenu->addSeparator();  
+       actionEditCopy->addTo( floatimageContextMenu );
+       actionEditCut->addTo( floatimageContextMenu );
+
+       floatimageContextMenu->addSeparator();  
+       floatimageContextMenu->addAction ( actionFormatHideLinkUnselected );
+
+       
+       // Context menu for canvas
+       canvasContextMenu =new QMenu (this);
+       actionEditMapInfo->addTo( canvasContextMenu );
+       if (settings.value( "/mainwindow/showTestMenu",false).toBool() ) 
+               actionEditAddMapCenter->addTo( canvasContextMenu );
+       canvasContextMenu->insertSeparator();   
+       actionGroupFormatLinkStyles->addTo( canvasContextMenu );
+       canvasContextMenu->insertSeparator();   
+       actionFormatLinkColorHint->addTo( canvasContextMenu );
+       actionFormatLinkColor->addTo( canvasContextMenu );
+       actionFormatSelectionColor->addTo( canvasContextMenu );
+       actionFormatBackColor->addTo( canvasContextMenu );
+       // actionFormatBackImage->addTo( canvasContextMenu );  //FIXME makes vym too slow: postponed for later version 
+
+       // Menu for last opened files
+       // Create actions
+       for (int i = 0; i < MaxRecentFiles; ++i) 
+       {
+        recentFileActions[i] = new QAction(this);
+        recentFileActions[i]->setVisible(false);
+        fileLastMapsMenu->addAction(recentFileActions[i]);
+        connect(recentFileActions[i], SIGNAL(triggered()),
+                this, SLOT(fileLoadRecent()));
+    }
+       setupRecentMapsMenu();
+}
+
+void Main::setupRecentMapsMenu()
+{
+    QStringList files = settings.value("/mainwindow/recentFileList").toStringList();
+
+    int numRecentFiles = qMin(files.size(), (int)MaxRecentFiles);
+
+    for (int i = 0; i < numRecentFiles; ++i) {
+        QString text = tr("&%1 %2").arg(i + 1).arg(files[i]);
+        recentFileActions[i]->setText(text);
+        recentFileActions[i]->setData(files[i]);
+        recentFileActions[i]->setVisible(true);
+    }
+    for (int j = numRecentFiles; j < MaxRecentFiles; ++j)
+        recentFileActions[j]->setVisible(false);
+}
+
+void Main::setupMacros()
+{
+    for (int i = 0; i <= 11; i++) 
+       {
+        macroActions[i] = new QAction(this);
+        macroActions[i]->setData(i);
+        addAction (macroActions[i]);
+        connect(macroActions[i], SIGNAL(triggered()),
+                this, SLOT(callMacro()));
+       }                       
+       macroActions[0]->setShortcut ( Qt::Key_F1 );
+       macroActions[1]->setShortcut ( Qt::Key_F2 );
+       macroActions[2]->setShortcut ( Qt::Key_F3 );
+       macroActions[3]->setShortcut ( Qt::Key_F4 );
+       macroActions[4]->setShortcut ( Qt::Key_F5 );
+       macroActions[5]->setShortcut ( Qt::Key_F6 );
+       macroActions[6]->setShortcut ( Qt::Key_F7 );
+       macroActions[7]->setShortcut ( Qt::Key_F8 );
+       macroActions[8]->setShortcut ( Qt::Key_F9 );
+       macroActions[9]->setShortcut ( Qt::Key_F10 );
+       macroActions[10]->setShortcut ( Qt::Key_F11 );
+       macroActions[11]->setShortcut ( Qt::Key_F12 );
+}
+
+void Main::hideEvent (QHideEvent * )
+{
+       if (!textEditor->isMinimized() ) textEditor->hide();
+}
+
+void Main::showEvent (QShowEvent * )
+{
+       if (actionViewToggleNoteEditor->isOn()) textEditor->showNormal();
+}
+
+
+MapEditor* Main::currentMapEditor() const
+{
+    if ( tabWidget->currentPage() &&
+        tabWidget->currentPage()->inherits( "MapEditor" ) )
+               return (MapEditor*)tabWidget->currentPage();
+    return NULL;       
+}
+
+
+void Main::editorChanged(QWidget *)
+{
+       // Unselect all possibly selected objects
+       // (Important to update note editor)
+       MapEditor *me;
+       for (int i=0;i<=tabWidget->count() -1;i++)
+       {
+               me=(MapEditor*)tabWidget->page(i);
+               me->unselect();
+       }       
+       me=currentMapEditor();
+       if (me) me->reselect();
+
+       // Update actions to in menus and toolbars according to editor
+       updateActions();
+}
+
+void Main::fileNew()
+{
+       QString fn="unnamed";
+       MapEditor* me = new MapEditor ( NULL);
+       tabWidget->addTab (me,fn);
+       tabWidget->showPage(me);
+       me->viewport()->setFocus();
+       me->setAntiAlias (actionViewToggleAntiAlias->isOn());
+       me->setSmoothPixmap(actionViewToggleSmoothPixmapTransform->isOn());
+       
+       // For the very first map we do not have flagrows yet...
+       me->select("mc:");
+}
+
+void Main::fileNewCopy()
+{
+       QString fn="unnamed";
+       MapEditor* oldME =currentMapEditor();
+       if (oldME)
+       {
+               oldME->copy();
+               MapEditor* newME = new MapEditor ( NULL);
+               if (newME)
+               {
+                       tabWidget->addTab (newME,fn);
+                       tabWidget->showPage(newME);
+                       newME->viewport()->setFocus();
+                       newME->setAntiAlias (actionViewToggleAntiAlias->isOn());
+                       newME->setSmoothPixmap(actionViewToggleSmoothPixmapTransform->isOn());
+                       // For the very first map we do not have flagrows yet...
+                       newME->select("mc:");
+                       newME->load (clipboardDir+"/"+clipboardFile,ImportReplace, VymMap);
+               }
+
+       }
+}
+
+ErrorCode Main::fileLoad(QString fn, const LoadMode &lmode, const FileType &ftype)
+{
+       ErrorCode err=success;
+       
+       // fn is usually the archive, mapfile the file after uncompressing
+       QString mapfile;
+
+       // Make fn absolute (needed for unzip)
+       fn=QDir (fn).absPath();
+
+       MapEditor *me;
+
+       if (lmode==NewMap)
+       {
+               // Check, if map is already loaded
+               int i=0;
+               while (i<=tabWidget->count() -1)
+               {
+                       me=(MapEditor*)tabWidget->page(i);
+                       if (me->getFilePath() == fn)
+                       {
+                               // Already there, ask for confirmation
+                               QMessageBox mb( vymName,
+                                       tr("The map %1\nis already opened."
+                                       "Opening the same map in multiple editors may lead \n"
+                                       "to confusion when finishing working with vym."
+                                       "Do you want to").arg(fn),
+                                       QMessageBox::Warning,
+                                       QMessageBox::Yes | QMessageBox::Default,
+                                       QMessageBox::Cancel | QMessageBox::Escape,
+                                       QMessageBox::NoButton);
+                               mb.setButtonText( QMessageBox::Yes, tr("Open anyway") );
+                               mb.setButtonText( QMessageBox::Cancel, tr("Cancel"));
+                               switch( mb.exec() ) 
+                               {
+                                       case QMessageBox::Yes:
+                                               // load anyway
+                                               i=tabWidget->count();
+                                               break;
+                                       case QMessageBox::Cancel:
+                                               // do nothing
+                                               return aborted;
+                                               break;
+                               }
+                       }
+                       i++;
+               }
+       }
+
+
+       // Try to load map
+    if ( !fn.isEmpty() )
+       {
+               me = currentMapEditor();
+               int tabIndex=tabWidget->currentPageIndex();
+               // Check first, if mapeditor exists
+               // If it is not default AND we want a new map, 
+               // create a new mapeditor in a new tab
+               if ( lmode==NewMap && (!me || !me->isDefault() ) )
+               {
+                       me= new MapEditor ( NULL);
+                       tabWidget->addTab (me,fn);
+                       tabIndex=tabWidget->indexOf (me);
+                       tabWidget->setCurrentPage (tabIndex);
+                       me->setAntiAlias (actionViewToggleAntiAlias->isOn());
+                       me->setSmoothPixmap(actionViewToggleSmoothPixmapTransform->isOn());
+               }
+               
+               // Check, if file exists (important for creating new files
+               // from command line
+               /*
+               */
+               if (!QFile(fn).exists() )
+               {
+                       QMessageBox mb( vymName,
+                               tr("This map does not exist:\n  %1\nDo you want to create a new one?").arg(fn),
+                               QMessageBox::Question,
+                               QMessageBox::Yes ,
+                               QMessageBox::Cancel | QMessageBox::Default,
+                               QMessageBox::NoButton );
+
+                       mb.setButtonText( QMessageBox::Yes, tr("Create"));
+                       mb.setButtonText( QMessageBox::No, tr("Cancel"));
+                       switch( mb.exec() ) 
+                       {
+                               case QMessageBox::Yes:
+                                       // Create new map
+                                       currentMapEditor()->setFilePath(fn);
+                                       tabWidget->setTabLabel (currentMapEditor(),
+                                               currentMapEditor()->getFileName() );
+                                       statusBar()->message( "Created " + fn , statusbarTime );
+                                       return success;
+                                               
+                               case QMessageBox::Cancel:
+                                       // don't create new map
+                                       statusBar()->message( "Loading " + fn + " failed!", statusbarTime );
+                                       fileCloseMap();
+                                       return aborted;
+                       }
+               }       
+
+               //tabWidget->currentPage() won't be NULL here, because of above...
+               tabWidget->showPage(me);
+               me->viewport()->setFocus();
+
+               if (err!=aborted)
+               {
+                       // Save existing filename in case  we import
+                       QString fn_org=me->getFilePath();
+
+                       // Finally load map into mapEditor
+                       me->setFilePath (fn);
+                       err=me->load(fn,lmode,ftype);
+
+                       // Restore old (maybe empty) filepath, if this is an import
+                       if (lmode!=NewMap)
+                               me->setFilePath (fn_org);
+               }       
+
+               // Finally check for errors and go home
+               if (err==aborted) 
+               {
+                       if (lmode==NewMap) fileCloseMap();
+                       statusBar()->message( "Could not load " + fn, statusbarTime );
+               } else 
+               {
+                       if (lmode==NewMap)
+                       {
+                               me->setFilePath (fn);
+                               tabWidget->changeTab(tabWidget->page(tabIndex), me->getFileName());
+                               if (!isInTmpDir (fn))
+                               {
+                                       // Only append to lastMaps if not loaded from a tmpDir
+                                       // e.g. imported bookmarks are in a tmpDir
+                                       addRecentMap(me->getFilePath() );
+                               }
+                               //actionFilePrint->setEnabled (true);
+                       }       
+                       statusBar()->message( "Loaded " + fn, statusbarTime );
+               }       
+       }
+       return err;
+}
+
+
+void Main::fileLoad(const LoadMode &lmode)
+{
+       QStringList filters;
+       filters <<"VYM map (*.vym *.vyp)"<<"XML (*.xml)";
+       QFileDialog *fd=new QFileDialog( this);
+       fd->setDir (lastFileDir);
+       fd->setFileMode (QFileDialog::ExistingFiles);
+       fd->setFilters (filters);
+       switch (lmode)
+       {
+               case NewMap:
+                       fd->setCaption(vymName+ " - " +tr("Load vym map"));
+                       break;
+               case ImportAdd:
+                       fd->setCaption(vymName+ " - " +tr("Import: Add vym map to selection"));
+                       break;
+               case ImportReplace:
+                       fd->setCaption(vymName+ " - " +tr("Import: Replace selection with vym map"));
+                       break;
+       }
+       fd->show();
+
+       QString fn;
+       if ( fd->exec() == QDialog::Accepted )
+       {
+               lastFileDir=fd->directory().path();
+           QStringList flist = fd->selectedFiles();
+               QStringList::Iterator it = flist.begin();
+               while( it != flist.end() ) 
+               {
+                       fn = *it;
+                       fileLoad(*it, lmode);                              
+                       ++it;
+               }
+       }
+       delete (fd);
+}
+
+void Main::fileLoad()
+{
+       fileLoad (NewMap);
+}
+
+void Main::fileLoadRecent()
+{
+    QAction *action = qobject_cast<QAction *>(sender());
+    if (action)
+        fileLoad (action->data().toString(), NewMap);
+}
+
+void Main::addRecentMap (const QString &fileName)
+{
+
+    QStringList files = settings.value("/mainwindow/recentFileList").toStringList();
+    files.removeAll(fileName);
+    files.prepend(fileName);
+    while (files.size() > MaxRecentFiles)
+        files.removeLast();
+
+    settings.setValue("/mainwindow/recentFileList", files);
+
+       setupRecentMapsMenu();
+}
+
+void Main::fileSave(MapEditor *me, const SaveMode &savemode)
+{
+       if (!me) return;
+
+       if ( me->getFilePath().isEmpty() ) 
+       {
+               // We have  no filepath yet,
+               // call fileSaveAs() now, this will call fileSave() 
+               // again.
+               // First switch to editor
+               tabWidget->setCurrentWidget (me);
+               fileSaveAs(savemode);
+       }
+
+       if (me->save (savemode)==success)
+       {
+               statusBar()->message( 
+                       tr("Saved  %1").arg(me->getFilePath()), 
+                       statusbarTime );
+               addRecentMap (me->getFilePath() );
+       } else          
+               statusBar()->message( 
+                       tr("Couldn't save ").arg(me->getFilePath()), 
+                       statusbarTime );
+}
+
+void Main::fileSave()
+{
+       fileSave (currentMapEditor(), CompleteMap);
+}
+
+void Main::fileSave(MapEditor *me)
+{
+       fileSave (me,CompleteMap);
+}
+
+void Main::fileSaveAs(const SaveMode& savemode)
+{
+       QString fn;
+
+       if (currentMapEditor())
+       {
+               if (savemode==CompleteMap)
+                        fn = QFileDialog::getSaveFileName( QString::null, "VYM map (*.vym)", this );
+               else            
+                        fn = QFileDialog::getSaveFileName( QString::null, "VYM part of map (*.vyp)", this );
+               if ( !fn.isEmpty() ) 
+               {
+                       // Check for existing file
+                       if (QFile (fn).exists())
+                       {
+                               QMessageBox mb( vymName,
+                                       tr("The file %1\nexists already. Do you want to").arg(fn),
+                                       QMessageBox::Warning,
+                                       QMessageBox::Yes | QMessageBox::Default,
+                                       QMessageBox::Cancel | QMessageBox::Escape,
+                                       QMessageBox::NoButton);
+                               mb.setButtonText( QMessageBox::Yes, tr("Overwrite") );
+                               mb.setButtonText( QMessageBox::Cancel, tr("Cancel"));
+                               switch( mb.exec() ) 
+                               {
+                                       case QMessageBox::Yes:
+                                               // save 
+                                               break;
+                                       case QMessageBox::Cancel:
+                                               // do nothing
+                                               return;
+                                               break;
+                               }
+                       } else
+                       {
+                               // New file, add extension to filename, if missing
+                               // This is always .vym or .vyp, depending on savemode
+                               if (savemode==CompleteMap)
+                               {
+                                       if (!fn.contains (".vym") && !fn.contains (".xml"))
+                                               fn +=".vym";
+                               } else          
+                               {
+                                       if (!fn.contains (".vyp") && !fn.contains (".xml"))
+                                               fn +=".vyp";
+                               }
+                       }
+       
+
+
+
+                       // Save now
+                       currentMapEditor()->setFilePath(fn);
+                       fileSave(currentMapEditor(), savemode);
+
+                       // Set name of tab
+                       if (savemode==CompleteMap)
+                               tabWidget->setTabLabel (currentMapEditor(),
+                                       currentMapEditor()->getFileName() );
+                       return;
+               } 
+       }
+}
+
+void Main::fileSaveAs()
+{
+       fileSaveAs (CompleteMap);
+}
+
+void Main::fileImportKDEBookmarks()
+{
+       ImportKDEBookmarks im;
+       im.transform();
+       if (success==fileLoad (im.getTransformedFile(),NewMap) && currentMapEditor() )
+               currentMapEditor()->setFilePath ("");
+}
+
+void Main::fileImportFirefoxBookmarks()
+{
+        QFileDialog *fd=new QFileDialog( this);
+       fd->setDir (vymBaseDir.homeDirPath()+"/.mozilla/firefox");
+        fd->setMode (QFileDialog::ExistingFiles);
+        //fd->addFilter ("Firefox "+tr("Bookmarks")+" (*.html)");
+        QStringList filters = fd->filters();
+        filters << tr("Firefox Bookmarks (*.html)");
+        fd->setFilters(filters);
+       fd->setCaption(tr("Import")+" "+"Firefox "+tr("Bookmarks"));
+       fd->show();
+
+       if ( fd->exec() == QDialog::Accepted )
+       {
+               ImportFirefoxBookmarks im;
+           QStringList flist = fd->selectedFiles();
+               QStringList::Iterator it = flist.begin();
+               while( it != flist.end() ) 
+               {
+                       im.setFile (*it);
+                       if (im.transform() && 
+                               success==fileLoad (im.getTransformedFile(),NewMap,FreemindMap) && 
+                               currentMapEditor() )
+                               currentMapEditor()->setFilePath ("");
+                       ++it;
+               }
+       }
+       delete (fd);
+}
+
+void Main::fileImportFreemind()
+{
+       QStringList filters;
+       filters <<"Freemind map (*.mm)"<<"All files (*)";
+       QFileDialog *fd=new QFileDialog( this);
+       fd->setDir (lastFileDir);
+       fd->setFileMode (QFileDialog::ExistingFiles);
+       fd->setFilters (filters);
+       fd->setCaption(vymName+ " - " +tr("Load Freemind map"));
+       fd->show();
+
+       QString fn;
+       if ( fd->exec() == QDialog::Accepted )
+       {
+               lastFileDir=fd->directory().path();
+           QStringList flist = fd->selectedFiles();
+               QStringList::Iterator it = flist.begin();
+               while( it != flist.end() ) 
+               {
+                       fn = *it;
+                       if ( fileLoad (fn,NewMap, FreemindMap)  )
+                       {       
+                               currentMapEditor()->setFilePath ("");
+                       }       
+                       ++it;
+               }
+       }
+       delete (fd);
+}
+
+
+void Main::fileImportMM()
+{
+       ImportMM im;
+
+        QFileDialog *fd=new QFileDialog( this);
+       fd->setDir (lastFileDir);
+        fd->setMode (QFileDialog::ExistingFiles);
+        //fd->addFilter ("Mind Manager (*.mmap)");
+        QStringList filters = fd->filters();
+        filters << tr("Mind Manager (*.mmap)");
+        fd->setFilters(filters);
+       fd->setCaption(tr("Import")+" "+"Mind Manager");
+       fd->show();
+
+       if ( fd->exec() == QDialog::Accepted )
+       {
+                lastFileDir=fd->directory().path();
+                QStringList flist = fd->selectedFiles();
+               QStringList::Iterator it = flist.begin();
+               while( it != flist.end() ) 
+               {
+                       im.setFile (*it);
+                       if (im.transform() && 
+                               success==fileLoad (im.getTransformedFile(),NewMap) && 
+                               currentMapEditor() )
+                               currentMapEditor()->setFilePath ("");
+
+                       ++it;
+               }
+       }
+       delete (fd);
+
+}
+
+void Main::fileImportDir()
+{
+       if (currentMapEditor())
+               currentMapEditor()->importDir();        
+}
+
+void Main::fileExportXML()     
+{
+       MapEditor *me=currentMapEditor();
+       if (me) me->exportXML();
+}
+
+
+void Main::fileExportXHTML()   
+{
+       MapEditor *me=currentMapEditor();
+       if (me) me->exportXHTML();
+}
+
+void Main::fileExportImage()   
+{
+       MapEditor *me=currentMapEditor();
+       if (me) me->exportImage();
+}
+
+void Main::fileExportASCII()
+{
+       MapEditor *me=currentMapEditor();
+       if (me) me->exportASCII();
+}
+
+void Main::fileExportCSV()     //FIXME not scriptable yet
+{
+       MapEditor *me=currentMapEditor();
+       if (me)
+       {
+               ExportCSV ex;
+               ex.setModel (me->getModel());
+               ex.addFilter ("CSV (*.csv)");
+               ex.setDir(lastImageDir);
+               ex.setCaption(vymName+ " -" +tr("Export as CSV")+" "+tr("(still experimental)"));
+               if (ex.execDialog() ) 
+               {
+                       me->setExportMode(true);
+                       ex.doExport();
+                       me->setExportMode(false);
+               }
+       }
+}
+
+void Main::fileExportLaTeX()   //FIXME not scriptable yet
+{
+       MapEditor *me=currentMapEditor();
+       if (me)
+       {
+               ExportLaTeX ex;
+               ex.setModel (me->getModel());
+               ex.addFilter ("Tex (*.tex)");
+               ex.setDir(lastImageDir);
+               ex.setCaption(vymName+ " -" +tr("Export as LaTeX")+" "+tr("(still experimental)"));
+               if (ex.execDialog() ) 
+               {
+                       me->setExportMode(true);
+                       ex.doExport();
+                       me->setExportMode(false);
+               }
+       }
+}
+
+void Main::fileExportKDEBookmarks()    //FIXME not scriptable yet
+{
+       ExportKDEBookmarks ex;
+       MapEditor *me=currentMapEditor();
+       if (me)
+       {
+               ex.setModel (me->getModel());
+               ex.doExport();
+       }       
+}
+
+void Main::fileExportTaskjuggler()     //FIXME not scriptable yet
+{
+       ExportTaskjuggler ex;
+       MapEditor *me=currentMapEditor();
+       if (me)
+       {
+               ex.setModel (me->getModel());
+               ex.setCaption ( vymName+" - "+tr("Export to")+" Taskjuggler"+tr("(still experimental)"));
+               ex.setDir(lastImageDir);
+               ex.addFilter ("Taskjuggler (*.tjp)");
+               if (ex.execDialog() ) 
+               {
+                       me->setExportMode(true);
+                       ex.doExport();
+                       me->setExportMode(false);
+               }
+       }       
+}
+
+void Main::fileExportOOPresentation()  //FIXME not scriptable yet
+{
+       ExportOOFileDialog *fd=new ExportOOFileDialog( this,vymName+" - "+tr("Export to")+" Open Office");
+       // TODO add preview in dialog
+       //ImagePreview *p =new ImagePreview (fd);
+       //fd->setContentsPreviewEnabled( TRUE );
+       //fd->setContentsPreview( p, p );
+       //fd->setPreviewMode( QFileDialog::Contents );
+       fd->setCaption(vymName+" - " +tr("Export to")+" Open Office");
+       fd->setDir (QDir().current());
+       if (fd->foundConfig())
+       {
+               fd->show();
+
+               if ( fd->exec() == QDialog::Accepted )
+               {
+                       QString fn=fd->selectedFile();
+                       if (!fn.contains (".odp"))
+                               fn +=".odp";
+
+                       //lastImageDir=fn.left(fn.findRev ("/"));
+                       if (currentMapEditor())
+                               currentMapEditor()->exportOOPresentation(fn,fd->selectedConfig());      
+               }
+       } else
+       {
+               QMessageBox::warning(0, 
+               tr("Warning"),
+               tr("Couldn't find configuration for export to Open Office\n"));
+       }
+}
+
+void Main::fileCloseMap()
+{
+       MapEditor *me = currentMapEditor();
+       if (me)
+       {
+               if (me->hasChanged())
+               {
+                       QMessageBox mb( vymName,
+                               tr("The map %1 has been modified but not saved yet. Do you want to").arg(me->getFileName()),
+                               QMessageBox::Warning,
+                               QMessageBox::Yes | QMessageBox::Default,
+                               QMessageBox::No,
+                               QMessageBox::Cancel | QMessageBox::Escape );
+                       mb.setButtonText( QMessageBox::Yes, tr("Save modified map before closing it") );
+                       mb.setButtonText( QMessageBox::No, tr("Discard changes"));
+                       switch( mb.exec() ) 
+                       {
+                               case QMessageBox::Yes:
+                                       // save and close
+                                       fileSave(me, CompleteMap);
+                                       break;
+                               case QMessageBox::No:
+                               // close  without saving
+                                       break;
+                               case QMessageBox::Cancel:
+                                       // do nothing
+                               return;
+                       }
+               } 
+               //me->closeMap(); 
+               tabWidget->removePage(me);
+               //if (tabWidget->count()==0)
+               //      actionFilePrint->setEnabled (false);
+
+        //delete me;
+               me->clear();
+       }
+}
+
+void Main::filePrint()
+{
+       if (currentMapEditor())
+               currentMapEditor()->print();
+}
+
+void Main::fileExitVYM()
+{
+       // Check if one or more editors have changed
+       MapEditor *me;
+       int i;
+       for (i=0;i<=tabWidget->count() -1;i++)
+       {
+               
+               me=(MapEditor*)tabWidget->page(i);
+
+               // If something changed, ask what to do
+               if (me->hasChanged())
+               {
+                       tabWidget->setCurrentPage(i);
+                       QMessageBox mb( vymName,
+                               tr("This map is not saved yet. Do you want to"),
+                               QMessageBox::Warning,
+                               QMessageBox::Yes | QMessageBox::Default,
+                               QMessageBox::No,
+                               QMessageBox::Cancel | QMessageBox::Escape );
+                       mb.setButtonText( QMessageBox::Yes, tr("Save map") );
+                       mb.setButtonText( QMessageBox::No, tr("Discard changes") );
+                       mb.setModal (true);
+                       mb.show();
+                       mb.setActiveWindow();
+                       switch( mb.exec() ) {
+                               case QMessageBox::Yes:
+                                       // save (the changed editors) and exit
+                                       fileSave(currentMapEditor(), CompleteMap);
+                                       break;
+                               case QMessageBox::No:
+                                       // exit without saving
+                                       break;
+                               case QMessageBox::Cancel:
+                                       // don't save and don't exit
+                               return;
+                       }
+               }
+       } // loop over all MEs  
+    qApp->quit();
+}
+
+void Main::editUndo()
+{
+       if (currentMapEditor())
+               currentMapEditor()->undo();
+}
+
+void Main::editRedo()     
+{
+       if (currentMapEditor())
+               currentMapEditor()->redo();
+}
+
+void Main::gotoHistoryStep (int i)        
+{
+       if (currentMapEditor())
+               currentMapEditor()->gotoHistoryStep (i);
+}
+
+void Main::editCopy()
+{
+       if (currentMapEditor())
+               currentMapEditor()->copy();
+}
+
+void Main::editPaste()
+{
+       if (currentMapEditor())
+               currentMapEditor()->paste();
+}
+
+void Main::editCut()
+{
+       if (currentMapEditor())
+               currentMapEditor()->cut();
+}
+
+void Main::editOpenFindWindow()
+{
+       findWindow->popup();
+       findWindow->raise();
+       findWindow->setActiveWindow();
+}
+
+void Main::editFind(QString s)
+{
+       bool cs=false;
+       BranchObj *bo=currentMapEditor()->findText(s, cs);
+       if (bo)
+       {       
+               statusBar()->message( "Found: " + bo->getHeading(), statusbarTime );
+       } else
+       {
+               QMessageBox::information( findWindow, tr( "VYM -Information:" ),
+                                                          tr("No matches found for \"%1\"").arg(s));
+       }       
+}
+
+void Main::editFindChanged()
+{      // Notify editor, to abort the current find process
+       currentMapEditor()->findReset();
+}
+
+void Main::openTabs(QStringList urls)
+{
+       if (!urls.isEmpty())
+       {       
+               bool success=true;
+               QStringList args;
+               QString browser=settings.value("/mainwindow/readerURL" ).toString();
+               QProcess *p;
+               if (!procBrowser ||  procBrowser->state()!=QProcess::Running)
+               {
+                       QString u=urls.takeFirst();
+                       procBrowser = new QProcess( this );
+                       args<<u;
+                       procBrowser->start(browser,args);
+                       if ( !procBrowser->waitForStarted())
+                       {
+                               // try to set path to browser
+                               QMessageBox::warning(0, 
+                                       tr("Warning"),
+                                       tr("Couldn't find a viewer to open %1.\n").arg(u)+
+                                       tr("Please use Settings->")+tr("Set application to open an URL"));
+                               return;
+                       }
+#if defined(Q_OS_WIN32)
+            // There's no sleep in VCEE, replace it with Qt's QThread::wait().
+            this->thread()->wait(3000);
+#else
+                       sleep (3);
+#endif
+               }
+               if (browser.contains("konqueror"))
+               {
+                       for (int i=0; i<urls.size(); i++)
+                       {
+                               // Open new browser
+                               // Try to open new tab in existing konqueror started previously by vym
+                               p=new QProcess (this);
+                               args.clear();
+#if defined(Q_OS_WIN32)
+                // In Win32, pid is not a longlong, but a pointer to a _PROCESS_INFORMATION structure.
+                // Redundant change in Win32, as there's no konqueror, but I wanted to follow the original logic.
+                               args<< QString("konqueror-%1").arg(procBrowser->pid()->dwProcessId)<<
+                                       "konqueror-mainwindow#1"<<
+                                       "newTab" <<
+                                       urls.at(i);
+#else
+                               args<< QString("konqueror-%1").arg(procBrowser->pid())<<
+                                       "konqueror-mainwindow#1"<<
+                                       "newTab" <<
+                                       urls.at(i);
+#endif
+                               p->start ("dcop",args);
+                               //cout << qPrintable (args.join(" "))<<endl;
+                               if ( !p->waitForStarted() ) success=false;
+                       }
+                       if (!success)
+                               QMessageBox::warning(0, 
+                                       tr("Warning"),
+                                       tr("Couldn't start %1 to open a new tab in %2.").arg("dcop").arg("konqueror"));
+                       return;         
+               } else if (browser.contains ("firefox") || browser.contains ("mozilla") )
+               {
+                       for (int i=0; i<urls.size(); i++)
+                       {
+                               // Try to open new tab in firefox
+                               p=new QProcess (this);
+                               args<< "-remote"<< QString("openurl(%1,new-tab)").arg(urls.at(i));
+                               p->start (browser,args);
+                               if ( !p->waitForStarted() ) success=false;
+                       }                       
+                       if (!success)
+                               QMessageBox::warning(0, 
+                                       tr("Warning"),
+                                       tr("Couldn't start %1 to open a new tab").arg(browser));
+                       return;         
+               }                       
+               QMessageBox::warning(0, 
+                       tr("Warning"),
+                       tr("Sorry, currently only Konqueror and Mozilla support tabbed browsing."));
+       }       
+}
+
+void Main::editOpenURL()
+{
+       // Open new browser
+       if (currentMapEditor())
+       {       
+           QString url=currentMapEditor()->getURL();
+               QStringList args;
+               if (url=="") return;
+               QString browser=settings.value("/mainwindow/readerURL" ).toString();
+               procBrowser = new QProcess( this );
+               args<<url;
+               procBrowser->start(browser,args);
+               if ( !procBrowser->waitForStarted())
+               {
+                       // try to set path to browser
+                       QMessageBox::warning(0, 
+                               tr("Warning"),
+                               tr("Couldn't find a viewer to open %1.\n").arg(url)+
+                               tr("Please use Settings->")+tr("Set application to open an URL"));
+                       settingsURL() ; 
+               }       
+       }       
+}
+void Main::editOpenURLTab()
+{
+       if (currentMapEditor())
+       {       
+           QStringList urls;
+               urls.append(currentMapEditor()->getURL());
+               openTabs (urls);
+       }       
+}
+void Main::editOpenMultipleURLTabs()
+{
+       if (currentMapEditor())
+       {       
+           QStringList urls;
+               urls=currentMapEditor()->getURLs();
+               openTabs (urls);
+       }       
+}
+
+
+void Main::editURL()
+{
+       if (currentMapEditor())
+           currentMapEditor()->editURL();
+}
+
+void Main::editLocalURL()
+{
+       if (currentMapEditor())
+           currentMapEditor()->editLocalURL();
+}
+
+void Main::editHeading2URL()
+{
+       if (currentMapEditor())
+           currentMapEditor()->editHeading2URL();
+}
+
+void Main::editBugzilla2URL()
+{
+       if (currentMapEditor())
+           currentMapEditor()->editBugzilla2URL();
+}
+
+void Main::editFATE2URL()
+{
+       if (currentMapEditor())
+           currentMapEditor()->editFATE2URL();
+}
+
+void Main::editHeadingFinished()
+{
+       // only called from editHeading(), so there is a currentME
+       MapEditor *me=currentMapEditor();
+       if (me)
+       {
+               me->setStateEditHeading (false);
+               QPoint p;       //Not used here, only to find out pos of branch
+               bool ok;
+               QString s=me->getHeading(ok,p);
+
+#if defined(Q_OS_MACX) || defined(Q_OS_WIN32)
+#else
+               if (ok && s!=lineedit->text())
+                       me->setHeading(lineedit->text());
+                       
+               lineedit->releaseKeyboard();
+               lineedit->hide();
+               setFocus();
+#endif 
+               if (!actionSettingsAutoSelectNewBranch->isOn() && 
+                       !prevSelection.isEmpty()) 
+                       me->select(prevSelection);
+               prevSelection="";
+       }
+}
+
+void Main::editHeading()
+{
+       if (currentMapEditor())
+       {
+               MapEditor *me=currentMapEditor();
+               QString oldSel=me->getSelectString();
+
+               if (lineedit->isVisible())
+                       editHeadingFinished();
+               else
+               {
+                       bool ok;
+                       QPoint p;
+                       QString s=me->getHeading(ok,p);
+
+                       if (ok)
+                       {
+                               me->setStateEditHeading (true);
+#if defined(Q_OS_MACX) || defined(Q_OS_WIN32)
+                               p=me->mapToGlobal (p);
+                               QDialog *d =new QDialog(NULL);
+                               QLineEdit *le=new QLineEdit (d);
+                               d->setWindowFlags (Qt::FramelessWindowHint);
+                               d->setGeometry(p.x(),p.y(),230,25);
+                               le->resize (d->width()-10,d->height());
+                               le->setText (s);
+                               le->selectAll();
+                               connect (le, SIGNAL (returnPressed()), d, SLOT (accept()));
+                               d->activateWindow();
+                               d->exec();
+                               me->setHeading (le->text());
+                               delete (le);
+                               delete (d);
+                               editHeadingFinished();
+#else
+                               p=me->mapTo (this,p);
+                               lineedit->setGeometry(p.x(),p.y(),230,25);
+                               lineedit->setText(s);
+                               lineedit->setCursorPosition(1);
+                               lineedit->selectAll();
+                               lineedit->show();
+                               lineedit->grabKeyboard();
+                               lineedit->setFocus();
+#endif
+                       }
+               }
+       } // currentMapEditor() 
+}
+
+void Main::editAttributeFinished()
+{
+       // only called from editHeading(), so there is a currentME
+
+       /*
+       MapEditor *me=currentMapEditor();
+       if (me)
+       {
+               me->setStateEditHeading (false);
+               QPoint p;       //Not used here, only to find out pos of branch
+               bool ok;
+               QString s=me->getHeading(ok,p);
+
+#if defined(Q_OS_MACX)
+#else
+               if (ok && s!=lineedit->text())
+                       me->setHeading(lineedit->text());
+                       
+               lineedit->releaseKeyboard();
+               lineedit->hide();
+               setFocus();
+#endif 
+               if (!actionSettingsAutoSelectNewBranch->isOn() && 
+                       !prevSelection.isEmpty()) 
+                       me->select(prevSelection);
+               prevSelection="";
+       }
+       */
+}
+
+#include "attribute.h"
+#include "attributedialog.h"
+void Main::editAttribute()
+{
+       MapEditor *me=currentMapEditor();
+       if (me)
+       {
+               BranchObj *bo=me->getSelectedBranch();
+               if (bo)
+               {
+                       AttributeDialog dia(this);
+                       dia.setTable (me->attributeTable() );
+                       dia.setBranch (bo);
+                       dia.setMode (Definition);
+                       dia.updateTable();
+                       dia.exec();
+               }
+       }       
+       /*
+       if (currentMapEditor())
+       {
+               MapEditor *me=currentMapEditor();
+               QString oldSel=me->getSelectString();
+
+               if (lineedit->isVisible())
+                       editAttributeFinished();
+               else
+               {
+                       bool ok;
+                       QPoint p;
+                       QString s=me->getHeading(ok,p);
+
+                       if (ok)
+                       {
+                               me->setStateEditHeading (true);
+#if defined(Q_OS_MACX)
+                               p=me->mapToGlobal (p);
+                               QDialog *d =new QDialog(NULL);
+                               QLineEdit *le=new QLineEdit (d);
+                               d->setWindowFlags (Qt::FramelessWindowHint);
+                               d->setGeometry(p.x(),p.y(),230,25);
+                               le->resize (d->width()-10,d->height());
+                               le->setText (s);
+                               le->selectAll();
+                               connect (le, SIGNAL (returnPressed()), d, SLOT (accept()));
+                               d->activateWindow();
+                               d->exec();
+                               me->setHeading (le->text());
+                               delete (le);
+                               delete (d);
+                               editHeadingFinished();
+#else
+                               p=me->mapTo (this,p);
+                               lineedit->setGeometry(p.x(),p.y(),230,25);
+                               lineedit->setText(s);
+                               lineedit->setCursorPosition(1);
+                               lineedit->selectAll();
+                               lineedit->show();
+                               lineedit->grabKeyboard();
+                               lineedit->setFocus();
+#endif
+                       }
+               } 
+       } // currentMapEditor() 
+
+       */
+}
+
+void Main::openVymLinks(const QStringList &vl)
+{
+       for (int j=0; j<vl.size(); j++)
+       {
+               // compare path with already loaded maps
+               int index=-1;
+               int i;
+               MapEditor *me;
+               for (i=0;i<=tabWidget->count() -1;i++)
+               {
+                       me=(MapEditor*)tabWidget->page(i);
+                       if (vl.at(j)==me->getFilePath() )
+                       {
+                               index=i;
+                               break;
+                       }
+               }       
+               if (index<0)
+               // Load map
+               {
+                       if (!QFile(vl.at(j)).exists() )
+                               QMessageBox::critical( 0, tr( "Critical Error" ),
+                                  tr("Couldn't open map %1").arg(vl.at(j)));
+                       else
+                       {
+                               fileLoad (vl.at(j), NewMap);
+                               tabWidget->setCurrentPage (tabWidget->count()-1);       
+                       }
+               } else
+                       // Go to tab containing the map
+                       tabWidget->setCurrentPage (index);      
+       }
+}
+
+void Main::editOpenVymLink()
+{
+       if (currentMapEditor())
+       {
+               QStringList vl;
+               vl.append(currentMapEditor()->getVymLink());    
+               openVymLinks (vl);
+       }
+}
+
+void Main::editOpenMultipleVymLinks()
+{
+       QString currentVymLink;
+       if (currentMapEditor())
+       {
+               QStringList vl=currentMapEditor()->getVymLinks();
+               openVymLinks (vl);
+       }
+}
+
+void Main::editVymLink()
+{
+       if (currentMapEditor())
+               currentMapEditor()->editVymLink();      
+}
+
+void Main::editDeleteVymLink()
+{
+       if (currentMapEditor())
+               currentMapEditor()->deleteVymLink();    
+}
+
+void Main::editToggleHideExport()
+{
+       if (currentMapEditor())
+               currentMapEditor()->toggleHideExport(); 
+}
+
+void Main::editMapInfo()
+{
+       if (currentMapEditor())
+               currentMapEditor()->editMapInfo();      
+}
+
+void Main::editMoveUp()
+{
+       if (currentMapEditor())
+           currentMapEditor()->moveBranchUp();
+}
+
+void Main::editMoveDown()
+{
+       if (currentMapEditor())
+               currentMapEditor()->moveBranchDown();
+}
+
+void Main::editSortChildren()
+{
+       if (currentMapEditor())
+               currentMapEditor()->sortChildren();
+}
+
+void Main::editToggleScroll()
+{
+       if (currentMapEditor())
+       {
+               currentMapEditor()->toggleScroll();     
+       }       
+}
+
+void Main::editUnscrollChilds()
+{
+       if (currentMapEditor())
+               currentMapEditor()->unscrollChilds();   
+}
+
+void Main::editAddMapCenter()
+{
+       MapEditor *me=currentMapEditor();
+       if (!lineedit->isVisible() && me)
+       {
+               me->addMapCenter ();
+       }       
+}
+
+void Main::editNewBranch()
+{
+       MapEditor *me=currentMapEditor();
+       if (!lineedit->isVisible() && me)
+       {
+               BranchObj *bo=(BranchObj*)me->getSelection();
+               BranchObj *newbo=me->addNewBranch(0);
+
+               prevSelection=me->getModel()->getSelectString(bo);
+               if (newbo) 
+                       me->select (newbo);
+               else
+                       return;
+
+               if (actionSettingsAutoEditNewBranch->isOn())
+               {
+                       editHeading();
+                       return;
+               }       
+               if (!prevSelection.isEmpty()) 
+               {
+                       me->select(prevSelection);
+                       prevSelection="";
+               }
+
+       }       
+}
+
+void Main::editNewBranchBefore()
+{
+       MapEditor *me=currentMapEditor();
+       if (!lineedit->isVisible() && me)
+       {
+               BranchObj *bo=(BranchObj*)me->getSelection();
+               BranchObj *newbo=me->addNewBranchBefore();
+
+               if (newbo) 
+                       me->select (newbo);
+               else
+                       return;
+
+               if (actionSettingsAutoEditNewBranch->isOn())
+               {
+                       if (!actionSettingsAutoSelectNewBranch->isOn())
+                               prevSelection=me->getModel()->getSelectString(bo); //TODO access directly
+                       editHeading();
+               }
+       }       
+}
+
+void Main::editNewBranchAbove()
+{
+       MapEditor *me=currentMapEditor();
+       if (!lineedit->isVisible() && me)
+       {
+               BranchObj *bo=(BranchObj*)me->getSelection();
+               BranchObj *newbo=me->addNewBranch (-1);
+
+               if (newbo) 
+                       me->select (newbo);
+               else
+                       return;
+
+               if (actionSettingsAutoEditNewBranch->isOn())
+               {
+                       if (!actionSettingsAutoSelectNewBranch->isOn())
+                               prevSelection=me->getModel()->getSelectString (bo);     // TODO access directly
+                       editHeading();
+               }
+       }       
+}
+
+void Main::editNewBranchBelow()
+{
+       MapEditor *me=currentMapEditor();
+       if (!lineedit->isVisible() && me)
+       {
+               BranchObj *bo=(BranchObj*)me->getSelection();
+               BranchObj *newbo=me->addNewBranch (1);
+
+               if (newbo) 
+                       me->select (newbo);
+               else
+                       return;
+
+               if (actionSettingsAutoEditNewBranch->isOn())
+               {
+                       if (!actionSettingsAutoSelectNewBranch->isOn())
+                               prevSelection=me->getModel()->getSelectString(bo);      //TODO access directly
+                       editHeading();
+               }
+       }       
+}
+
+void Main::editImportAdd()
+{
+       fileLoad (ImportAdd);
+}
+
+void Main::editImportReplace()
+{
+       fileLoad (ImportReplace);
+}
+
+void Main::editSaveBranch()
+{
+       fileSaveAs (PartOfMap);
+}
+
+void Main::editDeleteKeepChilds()
+{
+       if (currentMapEditor())
+               currentMapEditor()->deleteKeepChilds();
+}
+
+void Main::editDeleteChilds()
+{
+       if (currentMapEditor())
+               currentMapEditor()->deleteChilds();
+}
+
+void Main::editDeleteSelection()
+{
+       if (currentMapEditor() && actionSettingsUseDelKey->isOn())
+               currentMapEditor()->deleteSelection();
+}
+
+void Main::editUpperBranch()
+{
+       if (currentMapEditor())
+               currentMapEditor()->selectUpperBranch();
+}
+
+void Main::editLowerBranch()
+{
+       if (currentMapEditor())
+               currentMapEditor()->selectLowerBranch();
+}
+
+void Main::editLeftBranch()
+{
+       if (currentMapEditor())
+               currentMapEditor()->selectLeftBranch();
+}
+
+void Main::editRightBranch()
+{
+       if (currentMapEditor())
+               currentMapEditor()->selectRightBranch();
+}
+
+void Main::editFirstBranch()
+{
+       if (currentMapEditor())
+               currentMapEditor()->selectFirstBranch();
+}
+
+void Main::editLastBranch()
+{
+       if (currentMapEditor())
+               currentMapEditor()->selectLastBranch();
+}
+
+void Main::editLoadImage()
+{
+       if (currentMapEditor())
+               currentMapEditor()->loadFloatImage();
+}
+
+void Main::editSaveImage()
+{
+       if (currentMapEditor())
+               currentMapEditor()->saveFloatImage();
+}
+
+void Main::editFollowXLink(QAction *a)
+{
+
+       if (currentMapEditor())
+               currentMapEditor()->followXLink(branchXLinksContextMenuFollow->actions().indexOf(a));
+}
+
+void Main::editEditXLink(QAction *a)
+{
+       if (currentMapEditor())
+               currentMapEditor()->editXLink(branchXLinksContextMenuEdit->actions().indexOf(a));
+}
+
+void Main::formatSelectColor()
+{
+       if (currentMapEditor())
+       {
+               QColor col = QColorDialog::getColor((currentColor ), this );
+               if ( !col.isValid() ) return;
+               colorChanged( col );
+       }       
+}
+
+void Main::formatPickColor()
+{
+       if (currentMapEditor())
+               colorChanged( currentMapEditor()->getCurrentHeadingColor() );
+}
+
+void Main::colorChanged(QColor c)
+{
+    QPixmap pix( 16, 16 );
+    pix.fill( c );
+    actionFormatColor->setIconSet( pix );
+       currentColor=c;
+}
+
+void Main::formatColorBranch()
+{
+       if (currentMapEditor())
+               currentMapEditor()->colorBranch(currentColor);
+}
+
+void Main::formatColorSubtree()
+{
+       if (currentMapEditor())
+               currentMapEditor()->colorSubtree (currentColor);
+}
+
+void Main::formatLinkStyleLine()
+{
+       if (currentMapEditor())
+    {
+               currentMapEditor()->setMapLinkStyle("StyleLine");
+        actionFormatLinkStyleLine->setOn(true);
+    }
+}
+
+void Main::formatLinkStyleParabel()
+{
+       if (currentMapEditor())
+    {
+               currentMapEditor()->setMapLinkStyle("StyleParabel");
+        actionFormatLinkStyleParabel->setOn(true);
+    }
+}
+
+void Main::formatLinkStylePolyLine()
+{
+       if (currentMapEditor())
+    {
+               currentMapEditor()->setMapLinkStyle("StylePolyLine");
+        actionFormatLinkStylePolyLine->setOn(true);
+    }
+}
+
+void Main::formatLinkStylePolyParabel()
+{
+       if (currentMapEditor())
+    {
+               currentMapEditor()->setMapLinkStyle("StylePolyParabel");
+        actionFormatLinkStylePolyParabel->setOn(true);
+    }
+}
+
+void Main::formatSelectBackColor()
+{
+       if (currentMapEditor())
+               currentMapEditor()->selectMapBackgroundColor();
+}
+
+void Main::formatSelectBackImage()
+{
+       if (currentMapEditor())
+               currentMapEditor()->selectMapBackgroundImage();
+}
+
+void Main::formatSelectLinkColor()
+{
+       if (currentMapEditor())
+               currentMapEditor()->selectMapLinkColor();
+}
+
+void Main::formatSelectSelectionColor()
+{
+       if (currentMapEditor())
+               currentMapEditor()->selectMapSelectionColor();
+}
+
+void Main::formatToggleLinkColorHint()
+{
+       currentMapEditor()->toggleMapLinkColorHint();
+}
+
+
+void Main::formatHideLinkUnselected()  //FIXME get rid of this with imagepropertydialog
+{
+       if (currentMapEditor())
+               currentMapEditor()->setHideLinkUnselected(actionFormatHideLinkUnselected->isOn());
+}
+
+void Main::viewZoomReset()
+{
+       if (currentMapEditor())
+       {
+               QMatrix m;
+               m.reset();
+               currentMapEditor()->setMatrix( m );
+       }       
+}
+
+void Main::viewZoomIn()
+{
+       if (currentMapEditor())
+       {
+               QMatrix m = currentMapEditor()->matrix();
+               m.scale( 1.25, 1.25 );
+               currentMapEditor()->setMatrix( m );
+       }       
+}
+
+void Main::viewZoomOut()
+{
+       if (currentMapEditor())
+       {
+               QMatrix m = currentMapEditor()->matrix();
+               m.scale( 0.8, 0.8 );
+               currentMapEditor()->setMatrix( m );
+       }       
+}
+
+void Main::viewCenter()
+{
+       MapEditor *me=currentMapEditor();
+       if (me)
+       {
+               me->ensureSelectionVisible();
+       }       
+}
+
+void Main::networkStartServer()
+{
+       MapEditor *me=currentMapEditor();
+       if (me) me->newServer();
+}
+
+void Main::networkConnect()
+{
+       MapEditor *me=currentMapEditor();
+       if (me) me->connectToServer();
+}
+
+bool Main::settingsPDF()
+{
+       // Default browser is set in constructor
+       bool ok;
+       QString text = QInputDialog::getText(
+               "VYM", tr("Set application to open PDF files")+":", QLineEdit::Normal,
+               settings.value("/mainwindow/readerPDF").toString(), &ok, this );
+       if (ok)
+               settings.setValue ("/mainwindow/readerPDF",text);
+       return ok;
+}
+
+
+bool Main::settingsURL()
+{
+       // Default browser is set in constructor
+       bool ok;
+       QString text = QInputDialog::getText(
+               "VYM", tr("Set application to open an URL")+":", QLineEdit::Normal,
+               settings.value("/mainwindow/readerURL").toString()
+               , &ok, this );
+       if (ok)
+               settings.setValue ("/mainwindow/readerURL",text);
+       return ok;
+}
+
+void Main::settingsMacroDir()
+{
+       QDir defdir(vymBaseDir.path() + "/macros");
+       if (!defdir.exists())
+               defdir=vymBaseDir;
+       QDir dir=QFileDialog::getExistingDirectory (
+               this,
+               tr ("Directory with vym macros:"), 
+               settings.value ("/macros/macroDir",defdir.path()).toString()
+       );
+       if (dir.exists())
+               settings.setValue ("/macros/macroDir",dir.absolutePath());
+}
+
+void Main::settingsUndoLevels()
+{
+       bool ok;
+       int i = QInputDialog::getInteger(
+               this, 
+               tr("QInputDialog::getInteger()"),
+           tr("Number of undo/redo levels:"), settings.value("/mapeditor/stepsTotal").toInt(), 0, 1000, 1, &ok);
+       if (ok)
+       {
+               settings.setValue ("/mapeditor/stepsTotal",i);
+               QMessageBox::information( this, tr( "VYM -Information:" ),
+                  tr("Settings have been changed. The next map opened will have \"%1\" undo/redo levels").arg(i)); 
+   }   
+}
+
+void Main::settingsAutosaveToggle()
+{
+       settings.setValue ("/mapeditor/autosave/use",actionSettingsAutosaveToggle->isOn() );
+}
+
+void Main::settingsAutosaveTime()
+{
+       bool ok;
+       int i = QInputDialog::getInteger(
+               this, 
+               tr("QInputDialog::getInteger()"),
+           tr("Number of seconds before autosave:"), settings.value("/mapeditor/autosave/ms").toInt() / 1000, 10, 10000, 1, &ok);
+       if (ok)
+               settings.setValue ("/mapeditor/autosave/ms",i * 1000);
+}
+
+void Main::settingsWriteBackupFileToggle()
+{
+       settings.setValue ("/mapeditor/writeBackupFile",actionSettingsWriteBackupFile->isOn() );
+}
+
+void Main::settingsToggleAnimation()
+{
+       settings.setValue ("/animation/use",actionSettingsUseAnimation->isOn() );
+}
+
+void Main::settingsToggleDelKey()
+{
+       if (actionSettingsUseDelKey->isOn())
+       {
+               actionEditDelete->setAccel (QKeySequence (Qt::Key_Delete));
+       } else
+       {
+               actionEditDelete->setAccel (QKeySequence (""));
+       }
+}
+
+void Main::windowToggleNoteEditor()
+{
+       if (textEditor->isVisible() )
+               windowHideNoteEditor();
+       else
+               windowShowNoteEditor();
+}
+
+void Main::windowToggleHistory()
+{
+       if (historyWindow->isVisible())
+               historyWindow->hide();
+       else    
+               historyWindow->show();
+
+}
+
+void Main::windowToggleProperty()
+{
+       if (branchPropertyWindow->isVisible())
+               branchPropertyWindow->hide();
+       else    
+               branchPropertyWindow->show();
+
+       if(currentMapEditor())
+       {
+               BranchObj *bo=currentMapEditor()->getSelectedBranch();
+               if (bo) 
+               {
+                       branchPropertyWindow->setMapEditor(currentMapEditor());
+                       branchPropertyWindow->setBranch(bo);
+                       return;
+               }
+               
+       }       
+       branchPropertyWindow->setBranch(NULL);
+}
+
+void Main::windowToggleAntiAlias()
+{
+       bool b=actionViewToggleAntiAlias->isOn();
+       MapEditor *me;
+       for (int i=0;i<tabWidget->count();i++)
+       {
+               
+               me=(MapEditor*)tabWidget->page(i);
+               me->setAntiAlias(b);
+       }       
+
+}
+
+void Main::windowToggleSmoothPixmap()
+{
+       bool b=actionViewToggleSmoothPixmapTransform->isOn();
+       MapEditor *me;
+       for (int i=0;i<tabWidget->count();i++)
+       {
+               
+               me=(MapEditor*)tabWidget->page(i);
+               me->setSmoothPixmap(b);
+       }       
+}
+
+void Main::updateHistory(SimpleSettings &undoSet)
+{
+       historyWindow->update (undoSet);
+}
+
+void Main::updateNoteFlag()
+{
+       if (currentMapEditor())
+               currentMapEditor()->updateNoteFlag();
+}
+
+void Main::updateSatellites(MapEditor *me)
+{
+       branchPropertyWindow->setMapEditor (me);
+}
+
+void Main::updateActions()
+{
+       MapEditor *me=currentMapEditor();
+       if (!me) return;
+
+       historyWindow->setCaption (vymName + " - " +tr("History for %1","Window Caption").arg(currentMapEditor()->getFileName()));
+
+       // updateActions is also called when NoteEditor is closed
+       actionViewToggleNoteEditor->setOn (textEditor->isVisible());
+       actionViewToggleHistoryWindow->setOn (historyWindow->isVisible());
+       actionViewTogglePropertyWindow->setOn (branchPropertyWindow->isVisible());
+
+       if (me->getMapLinkColorHint()==LinkableMapObj::HeadingColor) 
+               actionFormatLinkColorHint->setOn(true);
+       else    
+               actionFormatLinkColorHint->setOn(false);
+
+       switch (me->getMapLinkStyle())
+       {
+               case LinkableMapObj::Line: 
+                       actionFormatLinkStyleLine->setOn(true);
+                       break;
+               case LinkableMapObj::Parabel:
+                       actionFormatLinkStyleParabel->setOn(true);
+                       break;
+               case LinkableMapObj::PolyLine:  
+                       actionFormatLinkStylePolyLine->setOn(true);
+                       break;
+               case LinkableMapObj::PolyParabel:       
+                       actionFormatLinkStylePolyParabel->setOn(true);
+                       break;
+               default:
+                       break;
+       }       
+
+       // Update colors
+       QPixmap pix( 16, 16 );
+    pix.fill( me->getMapBackgroundColor() );
+    actionFormatBackColor->setIconSet( pix );
+    pix.fill( me->getSelectionColor() );
+    actionFormatSelectionColor->setIconSet( pix );
+    pix.fill( me->getMapDefLinkColor() );
+    actionFormatLinkColor->setIconSet( pix );
+
+
+       actionFileSave->setEnabled( me->hasChanged() );
+       if (me->isUndoAvailable())
+               actionEditUndo->setEnabled( true);
+       else    
+               actionEditUndo->setEnabled( false);
+
+       if (me->isRedoAvailable())
+               actionEditRedo->setEnabled( true);
+       else    
+               actionEditRedo->setEnabled( false);
+
+       LinkableMapObj *selection=me->getSelection();
+       if (selection)
+       {
+               if ( (typeid(*selection) == typeid(BranchObj)) || 
+                       (typeid(*selection) == typeid(MapCenterObj))  )
+               {
+                       BranchObj *bo=(BranchObj*)selection;
+                       // Take care of links
+                       if (bo->countXLinks()==0)
+                       {
+                               branchXLinksContextMenuEdit->clear();
+                               branchXLinksContextMenuFollow->clear();
+                       } else
+                       {
+                               BranchObj *bot;
+                               QString s;
+                               branchXLinksContextMenuEdit->clear();
+                               branchXLinksContextMenuFollow->clear();
+                               for (int i=0; i<=bo->countXLinks();i++)
+                               {
+                                       bot=bo->XLinkTargetAt(i);
+                                       if (bot)
+                                       {
+                                               s=bot->getHeading();
+                                               if (s.length()>xLinkMenuWidth)
+                                                       s=s.left(xLinkMenuWidth)+"...";
+                                               branchXLinksContextMenuFollow->addAction (s);
+                                               branchXLinksContextMenuEdit->addAction (s);
+                                       }       
+                               }
+                       }
+
+                       standardFlagsDefault->setEnabled (true);
+
+                       actionEditToggleScroll->setEnabled (true);
+                       if ( bo->isScrolled() )
+                               actionEditToggleScroll->setOn(true);
+                       else    
+                               actionEditToggleScroll->setOn(false);
+
+                       if ( bo->getURL().isEmpty() )
+                       {
+                               actionEditOpenURL->setEnabled (false);
+                               actionEditOpenURLTab->setEnabled (false);
+                       }       
+                       else    
+                       {
+                               actionEditOpenURL->setEnabled (true);
+                               actionEditOpenURLTab->setEnabled (true);
+                       }
+                       if ( bo->getVymLink().isEmpty() )
+                       {
+                               actionEditOpenVymLink->setEnabled (false);
+                               actionEditDeleteVymLink->setEnabled (false);
+                       } else  
+                       {
+                               actionEditOpenVymLink->setEnabled (true);
+                               actionEditDeleteVymLink->setEnabled (true);
+                       }       
+
+                       if (bo->canMoveBranchUp()) 
+                               actionEditMoveUp->setEnabled (true);
+                       else    
+                               actionEditMoveUp->setEnabled (false);
+                       if (bo->canMoveBranchDown()) 
+                               actionEditMoveDown->setEnabled (true);
+                       else    
+                               actionEditMoveDown->setEnabled (false);
+
+
+                       actionEditToggleHideExport->setEnabled (true);  
+                       actionEditToggleHideExport->setOn (bo->hideInExport() );        
+
+                       actionEditCopy->setEnabled (true);      
+                       actionEditCut->setEnabled (true);       
+                       if (!clipboardEmpty)
+                               actionEditPaste->setEnabled (true);     
+                       else    
+                               actionEditPaste->setEnabled (false);    
+                       for (int i=0; i<actionListBranches.size(); ++i) 
+                               actionListBranches.at(i)->setEnabled(true);
+                       actionEditDelete->setEnabled (true);
+                       actionFormatHideLinkUnselected->setOn
+                               (selection->getHideLinkUnselected());
+               }
+               if ( (typeid(*selection) == typeid(FloatImageObj)) )
+               {
+                       FloatObj *fo=(FloatImageObj*)selection;
+
+                       actionEditOpenURL->setEnabled (false);
+                       actionEditOpenVymLink->setEnabled (false);
+                       actionEditDeleteVymLink->setEnabled (false);    
+                       actionEditToggleHideExport->setEnabled (true);  
+                       actionEditToggleHideExport->setOn (fo->hideInExport() );        
+
+
+                       actionEditCopy->setEnabled (true);
+                       actionEditCut->setEnabled (true);       
+                       actionEditPaste->setEnabled (false);
+                       for (int i=0; i<actionListBranches.size(); ++i) 
+                               actionListBranches.at(i)->setEnabled(false);
+                       actionEditDelete->setEnabled (true);
+                       actionFormatHideLinkUnselected->setOn
+                               ( selection->getHideLinkUnselected());
+                       actionEditMoveUp->setEnabled (false);
+                       actionEditMoveDown->setEnabled (false);
+               }
+
+       } else
+       {
+               actionEditCopy->setEnabled (false);     
+               actionEditCut->setEnabled (false);      
+               actionEditPaste->setEnabled (false);    
+               for (int i=0; i<actionListBranches.size(); ++i) 
+                       actionListBranches.at(i)->setEnabled(false);
+
+               actionEditToggleScroll->setEnabled (false);
+               actionEditOpenURL->setEnabled (false);
+               actionEditOpenVymLink->setEnabled (false);
+               actionEditDeleteVymLink->setEnabled (false);    
+               actionEditHeading2URL->setEnabled (false);      
+               actionEditDelete->setEnabled (false);
+               actionEditMoveUp->setEnabled (false);
+               actionEditMoveDown->setEnabled (false);
+               actionEditToggleHideExport->setEnabled (false); 
+       }       
+}
+
+Main::ModMode Main::getModMode()
+{
+       if (actionModModeColor->isOn()) return ModModeColor;
+       if (actionModModeCopy->isOn()) return ModModeCopy;
+       if (actionModModeXLink->isOn()) return ModModeXLink;
+       return ModModeNone;
+}
+
+bool Main::autoEditNewBranch()
+{
+       return actionSettingsAutoEditNewBranch->isOn();
+}
+
+bool Main::autoSelectNewBranch()
+{
+       return actionSettingsAutoSelectNewBranch->isOn();
+}
+
+bool Main::useFlagGroups()
+{
+       return actionSettingsUseFlagGroups->isOn();
+}
+
+void Main::windowShowNoteEditor()
+{
+       textEditor->setShowWithMain(true);
+       textEditor->show();
+       actionViewToggleNoteEditor->setOn (true);
+}
+
+void Main::windowHideNoteEditor()
+{
+       textEditor->setShowWithMain(false);
+       textEditor->hide();
+       actionViewToggleNoteEditor->setOn (false);
+}
+
+void Main::setScript (const QString &script)
+{
+       scriptEditor->setScript (script);
+}
+
+void Main::runScript (const QString &script)
+{
+       if (currentMapEditor())
+               currentMapEditor()->runScript (script);
+}
+
+void Main::runScriptEverywhere (const QString &script)
+{
+       MapEditor *me;
+       for (int i=0;i<=tabWidget->count() -1;i++)
+       {
+               me=(MapEditor*)tabWidget->page(i);
+               if (me) me->runScript (script);
+       }       
+}
+
+void Main::windowNextEditor()
+{
+       if (tabWidget->currentPageIndex() < tabWidget->count())
+               tabWidget->setCurrentPage (tabWidget->currentPageIndex() +1);
+}
+
+void Main::windowPreviousEditor()
+{
+       if (tabWidget->currentPageIndex() >0)
+               tabWidget->setCurrentPage (tabWidget->currentPageIndex() -1);
+}
+
+void Main::standardFlagChanged()
+{
+       if (currentMapEditor())
+               currentMapEditor()->toggleStandardFlag(sender()->name());
+}
+
+void Main::testFunction1()
+{
+       if (!currentMapEditor()) return;
+       currentMapEditor()->testFunction1();
+       //editAttribute();
+}
+
+void Main::testFunction2()
+{
+       if (!currentMapEditor()) return;
+       currentMapEditor()->testFunction2();
+}
+
+void Main::testCommand()
+{
+       if (!currentMapEditor()) return;
+       scriptEditor->show();
+       /*
+       bool ok;
+       QString com = QInputDialog::getText(
+                       vymName, "Enter Command:", QLineEdit::Normal,"command", &ok, this );
+       if (ok) currentMapEditor()->parseAtom(com);
+       */
+}
+
+void Main::helpDoc()
+{
+       QString locale = QLocale::system().name();
+       QString docname;
+       if (locale.left(2)=="es")
+               docname="vym_es.pdf";
+       else    
+               docname="vym.pdf";
+
+       QStringList searchList;
+       QDir docdir;
+       #if defined(Q_OS_MACX)
+               searchList << "./vym.app/Contents/Resources/doc";
+    #elif defined(Q_OS_WIN32)
+        searchList << vymInstallDir.path() + "/share/doc/packages/vym";
+       #else
+               #if defined(VYM_DOCDIR)
+                       searchList << VYM_DOCDIR;
+               #endif
+               // default path in SUSE LINUX
+               searchList << "/usr/share/doc/packages/vym";
+       #endif
+
+       searchList << "doc";    // relative path for easy testing in tarball
+       searchList << "doc/tex";        // Easy testing working on vym.tex
+       searchList << "/usr/share/doc/vym";     // Debian
+       searchList << "/usr/share/doc/packages";// Knoppix
+
+       bool found=false;
+       QFile docfile;
+       for (int i=0; i<searchList.count(); ++i)
+       {
+               docfile.setFileName(searchList.at(i)+"/"+docname);
+               if (docfile.exists())
+               {
+                       found=true;
+                       break;
+               }       
+       }
+
+       if (!found)
+       {
+               QMessageBox::critical(0, 
+                       tr("Critcal error"),
+                       tr("Couldn't find the documentation %1 in:\n%2").arg(searchList.join("\n")));
+               return;
+       }       
+
+       QStringList args;
+       Process *pdfProc = new Process();
+    args << QDir::toNativeSeparators(docfile.fileName());
+
+       pdfProc->start( settings.value("/mainwindow/readerPDF").toString(),args);
+       if ( !pdfProc->waitForStarted() ) 
+       {
+               // error handling
+               QMessageBox::warning(0, 
+                       tr("Warning"),
+                       tr("Couldn't find a viewer to open %1.\n").arg(docfile.fileName())+
+                       tr("Please use Settings->")+tr("Set application to open PDF files"));
+               settingsPDF();  
+               return;
+       }
+}
+
+
+void Main::helpDemo()
+{
+       QStringList filters;
+       filters <<"VYM example map (*.vym)";
+       QFileDialog *fd=new QFileDialog( this);
+       #if defined(Q_OS_MACX)
+               fd->setDir (QDir("./vym.app/Contents/Resources/demos"));
+       #else
+               // default path in SUSE LINUX
+               fd->setDir (QDir(vymBaseDir.path()+"/demos"));
+       #endif
+
+       fd->setFileMode (QFileDialog::ExistingFiles);
+       fd->setFilters (filters);
+       fd->setCaption(vymName+ " - " +tr("Load vym example map"));
+       fd->show();
+
+       QString fn;
+       if ( fd->exec() == QDialog::Accepted )
+       {
+               lastFileDir=fd->directory().path();
+           QStringList flist = fd->selectedFiles();
+               QStringList::Iterator it = flist.begin();
+               while( it != flist.end() ) 
+               {
+                       fn = *it;
+                       fileLoad(*it, NewMap);                             
+                       ++it;
+               }
+       }
+       delete (fd);
+}
+
+
+void Main::helpAbout()
+{
+       AboutDialog ad;
+       ad.setName ("aboutwindow");
+       ad.setMinimumSize(500,500);
+       ad.resize (QSize (500,500));
+       ad.exec();
+}
+
+void Main::helpAboutQT()
+{
+       QMessageBox::aboutQt( this, "Qt Application Example" );
+}
+
+void Main::callMacro ()
+{
+    QAction *action = qobject_cast<QAction *>(sender());
+       int i=-1;
+    if (action)
+       {
+        i=action->data().toInt();
+               QString mDir (settings.value ("macros/macroDir").toString() );
+
+               QString fn=mDir + QString("/macro-%1.vys").arg(i+1);
+               QFile f (fn);
+               if ( !f.open( QIODevice::ReadOnly ) )
+               {
+                       QMessageBox::warning(0, 
+                               tr("Warning"),
+                               tr("Couldn't find a macro at  %1.\n").arg(fn)+
+                               tr("Please use Settings->")+tr("Set directory for vym macros"));
+                       return;
+               }       
+
+               QTextStream ts( &f );
+               QString m= ts.read();
+
+               if (! m.isEmpty())
+               {
+                       //cout <<"Main::callMacro  m="<<qPrintable (m)<<endl;
+                       currentMapEditor()->runScript (m);
+               }       
+       }       
+}
+
+
+
+//////////////////////////////////
+/*
+@@ -2544,18 +2576,27 @@
+                               // Try to open new tab in existing konqueror started previously by vym
+                               p=new QProcess (this);
+                               args.clear();
+-                              args<< QString("konqueror-%1").arg(procBrowser->pid())<< 
+-                                      "konqueror-mainwindow#1"<< 
+-                                      "newTab" << 
++#if defined(Q_OS_WIN32)
++                // In Win32, pid is not a longlong, but a pointer to a _PROCESS_INFORMATION structure.
++                // Redundant change in Win32, as there's no konqueror, but I wanted to follow the original logic.
++                              args<< QString("konqueror-%1").arg(procBrowser->pid()->dwProcessId)<<
++                                      "konqueror-mainwindow#1"<<
++                                      "newTab" <<
+                                       urls.at(i);
++#else
++                              args<< QString("konqueror-%1").arg(procBrowser->pid())<<
++                                      "konqueror-mainwindow#1"<<
++                                      "newTab" <<
++                                      urls.at(i);
++#endif
+                               p->start ("dcop",args);
+                               if ( !p->waitForStarted() ) success=false;
+                       }
+*/                     
diff --git a/mainwindow.h b/mainwindow.h
new file mode 100644 (file)
index 0000000..082a8f2
--- /dev/null
@@ -0,0 +1,342 @@
+#ifndef MAINWINDOW_H 
+#define MAINWINDOW_H
+
+#include <QMainWindow>
+
+#include "branchpropwindow.h"
+#include "file.h"
+#include "findwindow.h"
+#include "historywindow.h"
+#include "mapeditor.h"
+#include "simplescripteditor.h"
+#include "texteditor.h"
+
+
+class Main : public QMainWindow 
+{
+    Q_OBJECT
+
+public:
+       /*! Modifier modes are used when CTRL together with a mouse button is pressed */
+       enum ModMode {
+               ModModeNone,    //!< Unused
+               ModModeColor,   //!< Pick color from object
+               ModModeCopy,    //!< Copy object
+               ModModeXLink    //!< Create a XLink (XLinkObj) from selected object
+               };
+
+    Main(QWidget* parent=0, const char* name=0, Qt::WFlags f=0);
+    ~Main();
+       void loadCmdLine();
+       void statusMessage (const QString &);
+
+public slots:
+    void fileNew();
+    void fileNewCopy();
+
+protected:
+       void closeEvent( QCloseEvent* );
+
+private:
+    void setupFileActions();
+    void setupEditActions();
+    void setupFormatActions();
+    void setupViewActions();
+    void setupModeActions();
+    void setupWindowActions();
+    void setupFlag(FlagObj *fo, QToolBar *tb, bool aw, const QString &name, const QString &tooltip);
+    void setupFlagActions();
+    void setupNetworkActions();
+    void setupSettingsActions();
+    void setupTestActions();
+    void setupHelpActions();
+    void setupContextMenus();
+       void setupRecentMapsMenu();
+    void setupMacros();
+       void hideEvent (QHideEvent * );
+       void showEvent (QShowEvent * );
+       MapEditor* currentMapEditor() const;
+    
+private slots:
+       void editorChanged(QWidget*);
+
+    ErrorCode fileLoad(QString ,const LoadMode &, const FileType & ftype=VymMap);
+    void fileLoad(const LoadMode &);
+    void fileLoad();
+       void fileLoadRecent();
+       void addRecentMap (const QString &);
+    void fileSave(MapEditor*, const SaveMode & );
+    void fileSave();
+public slots:  
+    void fileSave(MapEditor *);        // autosave from MapEditor
+private slots: 
+    void fileSaveAs(const SaveMode &);
+    void fileSaveAs();
+    void fileImportKDEBookmarks();
+    void fileImportFirefoxBookmarks();
+    void fileImportFreemind();
+    void fileImportMM();
+    void fileImportDir();
+    void fileExportXML();
+    void fileExportXHTML();
+    void fileExportImage();
+    void fileExportASCII();
+    void fileExportCSV();
+    void fileExportLaTeX();
+    void fileExportKDEBookmarks();
+    void fileExportTaskjuggler();
+    void fileExportOOPresentation();
+    void fileCloseMap();
+    void filePrint();
+    void fileExitVYM();
+
+public slots:
+    void editUndo();   
+    void editRedo();   
+       void gotoHistoryStep (int);
+private slots: 
+    void editCopy();   
+    void editPaste();  
+    void editCut();    
+    void editOpenFindWindow();
+       void editFind(QString);
+       void editFindChanged();
+private:
+       void openTabs(QStringList);
+public slots:
+       void editOpenURL();
+       void editOpenURLTab();
+private slots:
+       void editOpenMultipleURLTabs();
+       void editURL();
+       void editLocalURL();
+       void editHeading2URL();
+       void editBugzilla2URL();
+       void editFATE2URL();
+       void openVymLinks(const QStringList &);
+       void editVymLink();
+       void editOpenMultipleVymLinks();
+    void editHeadingFinished();
+    void editAttributeFinished();
+public slots:
+    void editHeading();
+    void editAttribute();
+       void editOpenVymLink();
+private slots:
+       void editDeleteVymLink();
+       void editToggleHideExport();
+       void editMapInfo();
+    void editMoveUp(); 
+    void editMoveDown();       
+       void editSortChildren();
+    void editToggleScroll();
+    void editUnscrollChilds();
+    void editAddMapCenter();
+    void editNewBranch();
+    void editNewBranchBefore();
+    void editNewBranchAbove();
+    void editNewBranchBelow();
+    void editImportAdd();
+    void editImportReplace();
+    void editSaveBranch();
+    void editDeleteKeepChilds();
+    void editDeleteChilds();
+    void editDeleteSelection();
+    void editUpperBranch();
+    void editLowerBranch();
+    void editLeftBranch();
+    void editRightBranch();
+    void editFirstBranch();
+    void editLastBranch();
+    void editLoadImage();
+    void editSaveImage();
+    void editFollowXLink (QAction *);
+    void editEditXLink (QAction *);
+
+    void formatSelectColor();
+    void formatPickColor();
+    void colorChanged(QColor);
+    void formatColorBranch();
+    void formatColorSubtree();
+       void formatLinkStyleLine();
+       void formatLinkStyleParabel();
+       void formatLinkStylePolyLine();
+       void formatLinkStylePolyParabel();
+    void formatSelectBackColor();
+    void formatSelectBackImage();
+    void formatSelectLinkColor();
+    void formatSelectSelectionColor();
+    void formatToggleLinkColorHint();
+       void formatHideLinkUnselected();
+
+    void viewZoomReset();
+    void viewZoomIn();
+    void viewZoomOut();
+    void viewCenter();
+
+public slots:
+       void networkStartServer();
+       void networkConnect();
+       bool settingsPDF();
+       bool settingsURL();
+       void settingsMacroDir();
+       void settingsToggleDelKey();
+       void settingsUndoLevels();
+       void settingsAutosaveToggle();
+       void settingsAutosaveTime();
+       void settingsWriteBackupFileToggle();
+       void settingsToggleAnimation();
+
+       void windowToggleNoteEditor();
+       void windowToggleHistory();
+       void windowToggleProperty();
+       void updateHistory(SimpleSettings &);
+       void windowToggleAntiAlias();
+       void windowToggleSmoothPixmap();
+       void updateNoteFlag();
+       void updateSatellites(MapEditor *);
+       void updateActions();
+       ModMode getModMode();
+       bool autoEditNewBranch();
+       bool autoSelectNewBranch();
+       bool useFlagGroups();
+       void setScript(const QString &);
+       void runScript(const QString &);
+       void runScriptEverywhere (const QString &);
+
+private slots:
+       void windowNextEditor();
+       void windowPreviousEditor();
+       void windowShowNoteEditor();
+       void windowHideNoteEditor();
+
+       void standardFlagChanged();
+
+    void testFunction1();
+    void testFunction2();
+    void testCommand();
+
+    void helpDoc();
+    void helpDemo();
+    void helpAbout();
+    void helpAboutQT();
+
+       void callMacro ();
+
+private:
+       QTabWidget *tabWidget;
+       FindWindow *findWindow;
+       QProcess *procBrowser;
+
+       QStringList imageTypes;
+
+       QLineEdit *lineedit;    // to enter headings of branches
+       QString prevSelection;
+
+       HistoryWindow *historyWindow;
+
+       BranchPropertyWindow *branchPropertyWindow;
+       SimpleScriptEditor *scriptEditor;
+
+       QList <QAction*> actionListBranches;
+
+       QColor currentColor;
+
+       int xLinkMenuWidth;
+
+       QMenu *recentFilesMenu;
+       enum { MaxRecentFiles = 9 };
+    QAction *recentFileActions[MaxRecentFiles];
+
+    QAction *macroActions[12];
+       QStringList macro;
+
+       QAction* actionFileNewCopy;
+       QAction* actionFileSave;
+       //QAction* actionFilePrint;
+       QAction* actionEditUndo;
+       QAction* actionEditRedo;
+       QAction *actionEditCopy;
+       QAction *actionEditCut;
+       QAction *actionEditPaste;
+       QAction *actionEditMoveUp;
+       QAction *actionEditMoveDown;
+       QAction *actionEditSortChildren;
+       QAction *actionEditToggleScroll;
+       QAction* actionEditOpenURL;
+       QAction* actionEditOpenURLTab;
+       QAction* actionEditOpenMultipleURLTabs;
+       QAction* actionEditURL;
+       QAction* actionEditLocalURL;
+       QAction* actionEditHeading2URL;
+       QAction* actionEditBugzilla2URL;
+       QAction* actionEditFATE2URL;
+       QAction *actionEditOpenVymLink;
+       QAction *actionEditOpenMultipleVymLinks;
+       QAction *actionEditVymLink;
+       QAction *actionEditDeleteVymLink;
+       QAction *actionEditToggleHideExport;
+       QAction *actionEditMapInfo;
+       QAction *actionEditHeading;
+       QAction *actionEditDelete;
+       QAction *actionEditAddMapCenter;
+       QAction *actionEditAddBranch;
+       QAction *actionEditAddBranchBefore;
+       QAction *actionEditAddBranchAbove;
+       QAction *actionEditAddBranchBelow;
+       QAction *actionEditDeleteKeepChilds;
+       QAction *actionEditDeleteChilds;
+       QAction *actionEditImportAdd;
+       QAction *actionEditImportReplace;
+       QAction *actionEditSaveBranch;
+       QAction *actionEditSelectFirst;
+       QAction *actionEditSelectLast;
+       QAction *actionEditLoadImage;
+
+       QAction* actionFormatColor;
+       QAction* actionFormatPickColor;
+       QAction* actionFormatColorBranch;
+       QAction* actionFormatColorSubtree;
+       QAction* actionFormatLinkColorHint;
+       QAction* actionFormatBackColor;
+       QAction* actionFormatBackImage;
+       QAction* actionFormatLinkColor;
+       QAction* actionFormatSelectionColor;
+
+       QActionGroup* actionGroupModModes;
+       QAction* actionModModeColor;
+       QAction* actionModModeXLink;
+       QAction* actionModModeCopy;
+
+       QActionGroup *actionGroupFormatFrameTypes;
+
+
+       QActionGroup *actionGroupFormatLinkStyles;
+       QAction *actionFormatLinkStyleLine;
+       QAction *actionFormatLinkStyleParabel;
+       QAction *actionFormatLinkStylePolyLine;
+       QAction *actionFormatLinkStylePolyParabel;
+       QAction *actionFormatHideLinkUnselected;
+
+       QAction *actionViewToggleNoteEditor;
+       QAction *actionViewToggleHistoryWindow;
+       QAction *actionViewTogglePropertyWindow;
+       QAction *actionViewToggleAntiAlias;
+       QAction *actionViewToggleSmoothPixmapTransform;
+       QAction* actionViewCenter;
+
+       QAction* actionSettingsAutoEditNewBranch;
+       QAction* actionSettingsAutoSelectNewBranch;
+       QAction* actionSettingsAutoSelectText;
+       QAction* actionSettingsUseDelKey;
+       QAction* actionSettingsUseFlagGroups;
+       QAction* actionSettingsUseHideExport;
+       QAction* actionSettingsAutosaveToggle;
+       QAction* actionSettingsAutosaveTime;
+       QAction* actionSettingsWriteBackupFile;
+       QAction* actionSettingsUseAnimation;
+};
+
+
+#endif
+
diff --git a/mapcenterobj.cpp b/mapcenterobj.cpp
new file mode 100644 (file)
index 0000000..2913415
--- /dev/null
@@ -0,0 +1,220 @@
+#include <QDateTime>
+
+#include "floatimageobj.h"
+#include "geometry.h"
+#include "mapcenterobj.h"
+#include "mapeditor.h"
+
+
+/////////////////////////////////////////////////////////////////
+// MapCenterObj
+/////////////////////////////////////////////////////////////////
+MapCenterObj::MapCenterObj() : BranchObj ()
+{
+//    cout << "Const MapCenterObj\n";
+    init();
+}
+
+MapCenterObj::MapCenterObj(QGraphicsScene* s) : BranchObj (s)
+{
+//    cout << "Const MapCenterObj   canvas="<<s<<"\n";
+    init();
+}
+
+MapCenterObj::~MapCenterObj() 
+{
+//    cout << "Destr MapCenterObj\n";
+       clear();
+}      
+
+void MapCenterObj::clear() 
+{
+       BranchObj::clear();
+}
+
+void MapCenterObj::init () 
+{
+       BranchObj::init();
+    orientation=LinkableMapObj::UndefinedOrientation;
+
+       // TODO this should be done in TextObj later...
+       //QFont font ("Sans Serif,16,-1,5,50,0,0,0,0,0");               
+       //heading->setFont(font);
+       depth=0;
+       setDefAttr(MovedBranch);
+
+       frame->setFrameType (FrameObj::Rectangle);
+}
+
+void MapCenterObj::move (double x, double y)
+{
+       BranchObj::move(x,y);
+}
+
+void MapCenterObj::move (QPointF absPos)
+{
+       BranchObj::move(absPos);
+}
+
+void MapCenterObj::moveBy (double x, double y)
+{
+       BranchObj::moveBy(x,y);
+}
+
+void MapCenterObj::moveAll (double x, double y)
+{
+       // Get rel. position
+       double dx=x-absPos.x();
+       double dy=y-absPos.y();
+
+       // Move myself and branches
+       moveAllBy (dx,dy);
+}
+
+void MapCenterObj::moveAllBy (double dx, double dy)
+{
+       // Move myself and childs
+       BranchObj::moveBy(dx,dy);
+}
+
+void MapCenterObj::updateLink()
+{
+       // set childPos to middle of MapCenterObj
+       childPos.setX( clickBox.topLeft().x() + (int)(clickBox.width())/2 );
+       childPos.setY( clickBox.topLeft().y() + (int)(clickBox.height())/2 );
+       parPos=childPos;                
+       for (int i=0; i<branch.size(); ++i)
+               branch.at(i)->updateLink();
+}
+
+void MapCenterObj::updateRelPositions()
+{
+       if (repositionRequest) unsetAllRepositionRequests();
+
+       // update relative Positions of branches and floats
+       for (int i=0; i<branch.size(); ++i)
+       {
+               branch.at(i)->setRelPos();
+               branch.at(i)->setOrientation();
+       }
+       
+       for (int i=0; i<floatimage.size(); ++i)
+               floatimage.at(i)->setRelPos();
+
+       if (repositionRequest) reposition();
+}
+
+LinkableMapObj* MapCenterObj::findMapObj(QPointF p, LinkableMapObj *excludeLMO)
+       {
+       LinkableMapObj *lmo;
+
+       // Search through child branches
+       for (int i=0; i<branch.size(); ++i)
+       {       
+               lmo = branch.at(i)->findMapObj(p, excludeLMO);
+               if (lmo!= NULL) return lmo;
+       }
+       // is p in MapCenter?
+       if (inBox (p,clickBox) && (this != excludeLMO) ) return this;
+
+       // Search float images
+       for (int i=0; i<floatimage.size(); ++i)
+               if (inBox(p,floatimage.at(i)->getClickBox()) && (floatimage.at(i) != excludeLMO) && floatimage.at(i)->getParObj()!= excludeLMO) return floatimage.at(i);
+
+       // nothing found
+       return NULL;
+}
+
+QString MapCenterObj::saveToDir (const QString &tmpdir,const QString &prefix, int verbose, const QPointF &offset)
+{
+    QString s,a;
+
+       // save area, if not scrolled
+       QString areaAttr=
+               attribut("x1",QString().setNum(absPos.x()-offset.x())) +
+               attribut("y1",QString().setNum(absPos.y()-offset.y())) +
+               attribut("x2",QString().setNum(absPos.x()+width()-offset.x())) +
+               attribut("y2",QString().setNum(absPos.y()+height()-offset.y()));
+       
+       // Providing an ID for a branch makes export to XHTML easier
+       QString idAttr;
+       if (countXLinks()>0)
+               idAttr=attribut ("id",mapEditor->getModel()->getSelectString(this)); //TODO directly access model
+
+       else
+               idAttr="";
+
+       QString linkAttr=getLinkAttr();
+
+    s=beginElement ("mapcenter" 
+               +getOrnXMLAttr() 
+               +areaAttr 
+               +idAttr 
+               +getIncludeImageAttr() );
+    incIndent();
+    if (heading->getColor()!=QColor("black"))
+               a=attribut ("textColor",QColor(heading->getColor()).name() );
+    else       
+               a="";
+    
+       // Save flags. If verbose is set (export to xml dir), also write
+       // the flags as picture
+       s+=standardFlags->saveToDir(tmpdir+"/flags", "/standardFlag-", verbose);
+
+       // Save heading
+    s+=valueElement("heading", getHeading(),a);
+
+       // Save frame
+       s+=frame->saveToDir ();
+
+       // add link to file in s
+       if (!note.isEmpty() )
+               s+=note.saveToDir();
+       
+       // Save branches
+       for (int i=0; i<branch.size(); ++i)
+               s+=branch.at(i)->saveToDir(tmpdir,prefix, offset);
+
+       // Save FloatImages
+       for (int i=0; i<floatimage.size(); ++i)
+               s+=floatimage.at(i)->saveToDir (tmpdir,prefix);
+
+       // Save XLinks
+       for (int i=0;i<xlink.size(); ++i)
+               s+=xlink.at(i)->saveToDir();
+
+    decIndent();
+    s+=endElement   ("mapcenter");
+    return s;
+}
+
+void MapCenterObj::setVersion (const QString &s)
+{
+       version=s;
+}
+
+void MapCenterObj::setAuthor (const QString &s)
+{
+       author=s;
+}
+
+QString MapCenterObj::getAuthor()
+{
+       return author;
+}
+
+void MapCenterObj::setComment (const QString &s)
+{
+       comment=s;
+}
+
+QString MapCenterObj::getComment ()
+{
+       return comment;
+}
+
+QString MapCenterObj::getDate ()
+{
+       return QDate::currentDate().toString ("yyyy-MM-dd");
+}
+
diff --git a/mapcenterobj.h b/mapcenterobj.h
new file mode 100644 (file)
index 0000000..0336acb
--- /dev/null
@@ -0,0 +1,40 @@
+#ifndef MAPCENTEROBJ_H
+#define MAPCENTEROBJ_H
+
+
+#include <QDate>
+
+#include "branchobj.h"
+
+/*! \brief The center of the map is a special branch. */
+
+/////////////////////////////////////////////////////////////////////////////
+class MapCenterObj:public BranchObj {
+public:
+    MapCenterObj ();
+    MapCenterObj (QGraphicsScene *);
+    ~MapCenterObj ();
+    void clear();
+    void init();
+    virtual void move      (double,double);
+    virtual void move      (QPointF absPos);
+    virtual void moveBy    (double,double);
+    virtual void moveAll   (double,double);
+    virtual void moveAllBy (double,double);
+    virtual void updateLink();
+    virtual void updateRelPositions();
+    LinkableMapObj* findMapObj(QPointF,LinkableMapObj*);       // find MapObj 
+       virtual QString saveToDir (const QString&,const QString&,int, const QPointF&);// Save data recursivly to tempdir
+       void setVersion(const  QString &);
+       void setAuthor  (const QString &);
+       QString getAuthor ();
+       void setComment (const QString &);
+       QString getComment ();
+       QString getDate();
+private:
+       QString version;        //!< version string saved in vym file
+       QString author;
+       QString comment;
+       QDate date;
+};
+#endif
diff --git a/mapeditor.cpp b/mapeditor.cpp
new file mode 100644 (file)
index 0000000..c9405f4
--- /dev/null
@@ -0,0 +1,5365 @@
+#include "mapeditor.h"
+
+//#include <q3filedialog.h>
+
+#include <iostream>
+#include <cstdlib>
+#include <typeinfo>
+
+#include "parser.h"
+#include "editxlinkdialog.h"
+#include "exports.h"
+#include "exportxhtmldialog.h"
+#include "extrainfodialog.h"
+#include "file.h"
+#include "linkablemapobj.h"
+#include "mainwindow.h"
+#include "misc.h"
+#include "texteditor.h"
+#include "warningdialog.h"
+#include "xml-freemind.h"
+#include "xml-vym.h"
+
+
+extern TextEditor *textEditor;
+extern int statusbarTime;
+extern Main *mainWindow;
+extern QString tmpVymDir;
+extern QString clipboardDir;
+extern QString clipboardFile;
+extern bool clipboardEmpty;
+extern bool debug;
+extern FlagRowObj *standardFlagsDefault;
+
+extern QMenu* branchContextMenu;
+extern QMenu* branchAddContextMenu;
+extern QMenu* branchRemoveContextMenu;
+extern QMenu* branchLinksContextMenu;
+extern QMenu* branchXLinksContextMenuEdit;
+extern QMenu* branchXLinksContextMenuFollow;
+extern QMenu* floatimageContextMenu;
+extern QMenu* canvasContextMenu;
+
+
+extern Settings settings;
+extern ImageIO imageIO;
+
+extern QString vymName;
+extern QString vymVersion;
+
+extern QString iconPath;
+extern QDir vymBaseDir;
+extern QDir lastImageDir;
+extern QDir lastFileDir;
+
+int MapEditor::mapNum=0;       // make instance
+
+///////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////
+MapEditor::MapEditor( QWidget* parent) :
+  QGraphicsView(parent)  
+{
+       setObjectName ("MapEditor");
+
+       //cout << "Constructor ME "<<this<<endl;
+       mapNum++;
+
+
+       mapScene= new QGraphicsScene(parent);
+       //mapScene= new QGraphicsScene(QRectF(0,0,width(),height()), parent);
+       mapScene->setBackgroundBrush (QBrush(Qt::white, Qt::SolidPattern));
+
+       model=new VymModel();
+       model->setScene (mapScene);
+       model->setMapEditor (this);
+
+    setScene (mapScene);
+
+    printer=NULL;
+
+       defLinkColor=QColor (0,0,255);
+       defXLinkColor=QColor (180,180,180);
+       linkcolorhint=LinkableMapObj::DefaultColor;
+       linkstyle=LinkableMapObj::PolyParabel;
+
+       // Create bitmap cursors, platform dependant
+       HandOpenCursor=QCursor (QPixmap(iconPath+"cursorhandopen.png"),1,1);            
+       PickColorCursor=QCursor ( QPixmap(iconPath+"cursorcolorpicker.png"), 5,27 ); 
+       CopyCursor=QCursor ( QPixmap(iconPath+"cursorcopy.png"), 1,1 ); 
+       XLinkCursor=QCursor ( QPixmap(iconPath+"cursorxlink.png"), 1,7 ); 
+
+       setFocusPolicy (Qt::StrongFocus);
+
+       pickingColor=false;
+       drawingLink=false;
+       copyingObj=false;
+
+    editingBO=NULL;
+    movingObj=NULL;
+
+       xelection.setModel (model);
+       xelection.unselect();
+
+       defXLinkWidth=1;
+       defXLinkColor=QColor (230,230,230);
+
+    mapChanged=false;
+       mapDefault=true;
+       mapUnsaved=false;
+       
+       zipped=true;
+       filePath="";
+       fileName=tr("unnamed");
+       mapName="";
+
+       stepsTotal=settings.readNumEntry("/mapeditor/stepsTotal",100);
+       undoSet.setEntry ("/history/stepsTotal",QString::number(stepsTotal));
+       mainWindow->updateHistory (undoSet);
+       
+       // Initialize find routine
+       itFind=NULL;                            
+       EOFind=false;
+
+       printFrame=true;
+       printFooter=true;
+
+       blockReposition=false;
+       blockSaveState=false;
+
+       hidemode=HideNone;
+
+       // Create temporary files
+       makeTmpDirs();
+
+       curStep=0;
+       redosAvail=0;
+       undosAvail=0;
+
+       setAcceptDrops (true);  
+
+       model->reposition();
+
+       // autosave
+       autosaveTimer=new QTimer (this);
+       connect(autosaveTimer, SIGNAL(timeout()), this, SLOT(autosave()));
+
+       fileChangedTimer=new QTimer (this);
+       fileChangedTimer->start(3000);
+       connect(fileChangedTimer, SIGNAL(timeout()), this, SLOT(fileChanged()));
+
+       // Network
+       netstate=Offline;
+
+       // Attributes   //FIXME testing only...
+       QString k;
+       AttributeDef *ad;
+       attrTable= new AttributeTable();
+       k="A - StringList";
+       ad=attrTable->addKey (k,StringList);
+       if (ad)
+       {
+               QStringList sl;
+               sl <<"val 1"<<"val 2"<< "val 3";
+               ad->setValue (QVariant (sl));
+       }
+       //attrTable->addValue ("Key A","P 1");
+       //attrTable->addValue ("Key A","P 2");
+       //attrTable->addValue ("Key A","P 3");
+       //attrTable->addValue ("Key A","P 4");
+       k="B - FreeString";
+       ad=attrTable->addKey (k,FreeString);
+       if (ad)
+       {
+               //attrTable->addValue ("Key B","w1");
+               //attrTable->addValue ("Key B","w2");
+       }
+       k="C - UniqueString";
+       ad=attrTable->addKey (k,UniqueString);
+       if (ad)
+       {
+       //attrTable->addKey ("Key Prio");
+       //attrTable->addValue ("Key Prio","Prio 1");
+       //attrTable->addValue ("Key Prio","Prio 2");
+       }
+}
+
+MapEditor::~MapEditor()
+{
+       //cout <<"Destructor MapEditor\n";
+       autosaveTimer->stop();
+       fileChangedTimer->stop();
+
+       // tmpMapDir is in tmpVymDir, so it gets removed automagically when vym closes
+       
+       //removeDir(QDir(tmpMapDir));
+       delete (model);
+}
+
+VymModel* MapEditor::getModel()
+{
+    return model;
+}
+
+QGraphicsScene * MapEditor::getScene()
+{
+    return mapScene;
+}
+
+MapEditor::State MapEditor::getState()
+{
+    return state;
+}
+
+void MapEditor::setStateEditHeading(bool s)
+{
+       if (s)
+       {
+               if (state==Idle) state=EditHeading;
+       }
+       else    
+               state=Idle;
+}
+
+bool MapEditor::isRepositionBlocked()
+{
+       return blockReposition;
+}
+
+void MapEditor::setSaveStateBlocked(bool b)
+{
+       blockSaveState=b;
+}
+
+bool MapEditor::isSelectBlocked()
+{
+       if (state==EditHeading)
+               return true;
+       else
+               return false; 
+}
+
+QString MapEditor::getName (const LinkableMapObj *lmo)
+{
+       QString s;
+       if (!lmo) return QString("Error: NULL has no name!");
+
+       if ((typeid(*lmo) == typeid(BranchObj) ||
+                                     typeid(*lmo) == typeid(MapCenterObj))) 
+       {
+               
+               s=(((BranchObj*)lmo)->getHeading());
+               if (s=="") s="unnamed";
+               return QString("branch (%1)").arg(s);
+       }       
+       if ((typeid(*lmo) == typeid(FloatImageObj) ))
+               return QString ("floatimage [%1]").arg(((FloatImageObj*)lmo)->getOriginalFilename());
+       return QString("Unknown type has no name!");
+}
+
+void MapEditor::makeTmpDirs()
+{
+       // Create unique temporary directories
+       tmpMapDir = tmpVymDir+QString("/mapeditor-%1").arg(mapNum);
+       histPath = tmpMapDir+"/history";
+       QDir d;
+       d.mkdir (tmpMapDir);
+}
+
+QString MapEditor::saveToDir(const QString &tmpdir, const QString &prefix, bool writeflags, const QPointF &offset, LinkableMapObj *saveSel)
+{
+       // tmpdir               temporary directory to which data will be written
+       // prefix               mapname, which will be appended to images etc.
+       // writeflags   Only write flags for "real" save of map, not undo
+       // offset               offset of bbox of whole map in scene. 
+       //                              Needed for XML export
+       
+       // Save Header
+       QString ls;
+       switch (linkstyle)
+       {
+               case LinkableMapObj::Line: 
+                       ls="StyleLine";
+                       break;
+               case LinkableMapObj::Parabel:
+                       ls="StyleParabel";
+                       break;
+               case LinkableMapObj::PolyLine:  
+                       ls="StylePolyLine";
+                       break;
+               default:
+                       ls="StylePolyParabel";
+                       break;
+       }       
+
+       QString s="<?xml version=\"1.0\" encoding=\"utf-8\"?><!DOCTYPE vymmap>\n";
+       QString colhint="";
+       if (linkcolorhint==LinkableMapObj::HeadingColor) 
+               colhint=attribut("linkColorHint","HeadingColor");
+
+       QString mapAttr=attribut("version",vymVersion);
+       if (!saveSel)
+               mapAttr+= attribut("author",model->getAuthor()) +
+                                 attribut("comment",model->getComment()) +
+                             attribut("date",model->getDate()) +
+                         attribut("backgroundColor", mapScene->backgroundBrush().color().name() ) +
+                         attribut("selectionColor", xelection.getColor().name() ) +
+                         attribut("linkStyle", ls ) +
+                         attribut("linkColor", defLinkColor.name() ) +
+                         attribut("defXLinkColor", defXLinkColor.name() ) +
+                         attribut("defXLinkWidth", QString().setNum(defXLinkWidth,10) ) +
+                         colhint; 
+       s+=beginElement("vymmap",mapAttr);
+       incIndent();
+
+       // Find the used flags while traversing the tree
+       standardFlagsDefault->resetUsedCounter();
+       
+       // Reset the counters before saving
+       // TODO constr. of FIO creates lots of objects, better do this in some other way...
+       FloatImageObj (mapScene).resetSaveCounter();
+
+       // Build xml recursivly
+       if (!saveSel || typeid (*saveSel) == typeid (MapCenterObj))
+               // Save complete map, if saveSel not set
+               s+=model->saveToDir(tmpdir,prefix,writeflags,offset);
+       else
+       {
+               if ( typeid(*saveSel) == typeid(BranchObj) )
+                       // Save Subtree
+                       s+=((BranchObj*)(saveSel))->saveToDir(tmpdir,prefix,offset);
+               else if ( typeid(*saveSel) == typeid(FloatImageObj) )
+                       // Save image
+                       s+=((FloatImageObj*)(saveSel))->saveToDir(tmpdir,prefix);
+       }
+
+       // Save local settings
+       s+=settings.getDataXML (destPath);
+
+       // Save selection
+       if (!xelection.isEmpty() && !saveSel ) 
+               s+=valueElement("select",xelection.getSelectString());
+
+       decIndent();
+       s+=endElement("vymmap");
+
+       if (writeflags)
+               standardFlagsDefault->saveToDir (tmpdir+"/flags/","",writeflags);
+       return s;
+}
+
+QString MapEditor::getHistoryDir()
+{
+       QString histName(QString("history-%1").arg(curStep));
+       return (tmpMapDir+"/"+histName);
+}
+
+void MapEditor::saveState(const SaveMode &savemode, const QString &undoSelection, const QString &undoCom, const QString &redoSelection, const QString &redoCom, const QString &comment, LinkableMapObj *saveSel)
+{
+       sendData(redoCom);      //FIXME testing
+
+       // Main saveState
+
+
+       if (blockSaveState) return;
+
+       if (debug) cout << "ME::saveState() for  "<<qPrintable (mapName)<<endl;
+       
+       // Find out current undo directory
+       if (undosAvail<stepsTotal) undosAvail++;
+       curStep++;
+       if (curStep>stepsTotal) curStep=1;
+       
+       QString backupXML="";
+       QString histDir=getHistoryDir();
+       QString bakMapPath=histDir+"/map.xml";
+
+       // Create histDir if not available
+       QDir d(histDir);
+       if (!d.exists()) 
+               makeSubDirs (histDir);
+
+       // Save depending on how much needs to be saved 
+       if (saveSel)
+               backupXML=saveToDir (histDir,mapName+"-",false, QPointF (),saveSel);
+               
+       QString undoCommand="";
+       if (savemode==UndoCommand)
+       {
+               undoCommand=undoCom;
+       }       
+       else if (savemode==PartOfMap )
+       {
+               undoCommand=undoCom;
+               undoCommand.replace ("PATH",bakMapPath);
+       }
+
+       if (!backupXML.isEmpty())
+               // Write XML Data to disk
+               saveStringToDisk (bakMapPath,backupXML);
+
+       // We would have to save all actions in a tree, to keep track of 
+       // possible redos after a action. Possible, but we are too lazy: forget about redos.
+       redosAvail=0;
+
+       // Write the current state to disk
+       undoSet.setEntry ("/history/undosAvail",QString::number(undosAvail));
+       undoSet.setEntry ("/history/redosAvail",QString::number(redosAvail));
+       undoSet.setEntry ("/history/curStep",QString::number(curStep));
+       undoSet.setEntry (QString("/history/step-%1/undoCommand").arg(curStep),undoCommand);
+       undoSet.setEntry (QString("/history/step-%1/undoSelection").arg(curStep),undoSelection);
+       undoSet.setEntry (QString("/history/step-%1/redoCommand").arg(curStep),redoCom);
+       undoSet.setEntry (QString("/history/step-%1/redoSelection").arg(curStep),redoSelection);
+       undoSet.setEntry (QString("/history/step-%1/comment").arg(curStep),comment);
+       undoSet.setEntry (QString("/history/version"),vymVersion);
+       undoSet.writeSettings(histPath);
+
+       if (debug)
+       {
+               // TODO remove after testing
+               //cout << "          into="<< histPath.toStdString()<<endl;
+               cout << "    stepsTotal="<<stepsTotal<<
+               ", undosAvail="<<undosAvail<<
+               ", redosAvail="<<redosAvail<<
+               ", curStep="<<curStep<<endl;
+               cout << "    ---------------------------"<<endl;
+               cout << "    comment="<<comment.toStdString()<<endl;
+               cout << "    undoCom="<<undoCommand.toStdString()<<endl;
+               cout << "    undoSel="<<undoSelection.toStdString()<<endl;
+               cout << "    redoCom="<<redoCom.toStdString()<<endl;
+               cout << "    redoSel="<<redoSelection.toStdString()<<endl;
+               if (saveSel) cout << "    saveSel="<<qPrintable (model->getSelectString(saveSel))<<endl;
+               cout << "    ---------------------------"<<endl;
+       }
+
+       mainWindow->updateHistory (undoSet);
+       setChanged();
+       updateActions();
+}
+
+
+void MapEditor::saveStateChangingPart(LinkableMapObj *undoSel, LinkableMapObj* redoSel, const QString &rc, const QString &comment)
+{
+       // save the selected part of the map, Undo will replace part of map 
+       QString undoSelection="";
+       if (undoSel)
+               undoSelection=model->getSelectString(undoSel);
+       else
+               qWarning ("MapEditor::saveStateChangingPart  no undoSel given!");
+       QString redoSelection="";
+       if (redoSel)
+               redoSelection=model->getSelectString(undoSel);
+       else
+               qWarning ("MapEditor::saveStateChangingPart  no redoSel given!");
+               
+
+       saveState (PartOfMap,
+               undoSelection, "addMapReplace (\"PATH\")",
+               redoSelection, rc, 
+               comment, 
+               undoSel);
+}
+
+void MapEditor::saveStateRemovingPart(LinkableMapObj *redoSel, const QString &comment)
+{
+       if (!redoSel)
+       {
+               qWarning ("MapEditor::saveStateRemovingPart  no redoSel given!");
+               return;
+       }
+       QString undoSelection=model->getSelectString (redoSel->getParObj());
+       QString redoSelection=model->getSelectString(redoSel);
+       if (typeid(*redoSel) == typeid(BranchObj)  ) 
+       {
+               // save the selected branch of the map, Undo will insert part of map 
+               saveState (PartOfMap,
+                       undoSelection, QString("addMapInsert (\"PATH\",%1)").arg(((BranchObj*)redoSel)->getNum()),
+                       redoSelection, "delete ()", 
+                       comment, 
+                       redoSel);
+       }
+}
+
+
+void MapEditor::saveState(LinkableMapObj *undoSel, const QString &uc, LinkableMapObj *redoSel, const QString &rc, const QString &comment) 
+{
+       // "Normal" savestate: save commands, selections and comment
+       // so just save commands for undo and redo
+       // and use current selection
+
+       QString redoSelection="";
+       if (redoSel) redoSelection=model->getSelectString(redoSel);
+       QString undoSelection="";
+       if (undoSel) undoSelection=model->getSelectString(undoSel);
+
+       saveState (UndoCommand,
+               undoSelection, uc,
+               redoSelection, rc, 
+               comment, 
+               NULL);
+}
+
+void MapEditor::saveState(const QString &undoSel, const QString &uc, const QString &redoSel, const QString &rc, const QString &comment) 
+{
+       // "Normal" savestate: save commands, selections and comment
+       // so just save commands for undo and redo
+       // and use current selection
+       saveState (UndoCommand,
+               undoSel, uc,
+               redoSel, rc, 
+               comment, 
+               NULL);
+}
+
+void MapEditor::saveState(const QString &uc, const QString &rc, const QString &comment) 
+{
+       // "Normal" savestate applied to model (no selection needed): 
+       // save commands  and comment
+       saveState (UndoCommand,
+               NULL, uc,
+               NULL, rc, 
+               comment, 
+               NULL);
+}
+
+               
+void MapEditor::parseAtom(const QString &atom)
+{
+       BranchObj *selb=xelection.getBranch();
+       QString s,t;
+       double x,y;
+       int n;
+       bool b,ok;
+
+       // Split string s into command and parameters
+       parser.parseAtom (atom);
+       QString com=parser.getCommand();
+       
+       // External commands
+       /////////////////////////////////////////////////////////////////////
+       if (com=="addBranch")
+       {
+               if (xelection.isEmpty())
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else 
+               {       
+                       QList <int> pl;
+                       pl << 0 <<1;
+                       if (parser.checkParCount(pl))
+                       {
+                               if (parser.parCount()==0)
+                                       addNewBranch (0);
+                               else
+                               {
+                                       n=parser.parInt (ok,0);
+                                       if (ok ) addNewBranch (n);
+                               }
+                       }
+               }
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="addBranchBefore")
+       {
+               if (xelection.isEmpty())
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else 
+               {       
+                       if (parser.parCount()==0)
+                       {
+                               addNewBranchBefore ();
+                       }       
+               }
+       /////////////////////////////////////////////////////////////////////
+       } else if (com==QString("addMapCenter"))
+       {
+               if (parser.checkParCount(2))
+               {
+                       x=parser.parDouble (ok,0);
+                       if (ok)
+                       {
+                               y=parser.parDouble (ok,1);
+                               if (ok) model->addMapCenter (QPointF(x,y));
+                       }
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com==QString("addMapReplace"))
+       {
+               if (xelection.isEmpty())
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(1))
+               {
+                       //s=parser.parString (ok,0);    // selection
+                       t=parser.parString (ok,0);      // path to map
+                       if (QDir::isRelativePath(t)) t=(tmpMapDir + "/"+t);
+                       addMapReplaceInt(model->getSelectString(selb),t);       
+               }
+       /////////////////////////////////////////////////////////////////////
+       } else if (com==QString("addMapInsert"))
+       {
+               if (xelection.isEmpty())
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else 
+               {       
+                       if (parser.checkParCount(2))
+                       {
+                               t=parser.parString (ok,0);      // path to map
+                               n=parser.parInt(ok,1);          // position
+                               if (QDir::isRelativePath(t)) t=(tmpMapDir + "/"+t);
+                               addMapInsertInt(t,n);   
+                       }
+               }
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="clearFlags")
+       {
+               if (xelection.isEmpty() )
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(0))
+               {
+                       selb->clearStandardFlags();     
+                       selb->updateFlagsToolbar();
+               }
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="colorBranch")
+       {
+               if (xelection.isEmpty())
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(1))
+               {       
+                       QColor c=parser.parColor (ok,0);
+                       if (ok) colorBranch (c);
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="colorSubtree")
+       {
+               if (xelection.isEmpty())
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(1))
+               {       
+                       QColor c=parser.parColor (ok,0);
+                       if (ok) colorSubtree (c);
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="copy")
+       {
+               if (xelection.isEmpty())
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(0))
+               {       
+                       //FIXME missing action for copy
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="cut")
+       {
+               if (xelection.isEmpty())
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if ( xelection.type()!=Selection::Branch  && 
+                                       xelection.type()!=Selection::MapCenter  &&
+                                       xelection.type()!=Selection::FloatImage )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch or floatimage");
+               } else if (parser.checkParCount(0))
+               {       
+                       cut();
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="delete")
+       {
+               if (xelection.isEmpty())
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } 
+               /*else if (xelection.type() != Selection::Branch && xelection.type() != Selection::FloatImage )
+               {
+                       parser.setError (Aborted,"Type of selection is wrong.");
+               } 
+               */
+               else if (parser.checkParCount(0))
+               {       
+                       deleteSelection();
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="deleteKeepChilds")
+       {
+               if (xelection.isEmpty())
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(0))
+               {       
+                       deleteKeepChilds();
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="deleteChilds")
+       {
+               if (xelection.isEmpty())
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb)
+               {
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(0))
+               {       
+                       deleteChilds();
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="exportASCII")
+       {
+               QString fname="";
+               ok=true;
+               if (parser.parCount()>=1)
+                       // Hey, we even have a filename
+                       fname=parser.parString(ok,0); 
+               if (!ok)
+               {
+                       parser.setError (Aborted,"Could not read filename");
+               } else
+               {
+                               exportASCII (fname,false);
+               }
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="exportImage")
+       {
+               QString fname="";
+               ok=true;
+               if (parser.parCount()>=2)
+                       // Hey, we even have a filename
+                       fname=parser.parString(ok,0); 
+               if (!ok)
+               {
+                       parser.setError (Aborted,"Could not read filename");
+               } else
+               {
+                       QString format="PNG";
+                       if (parser.parCount()>=2)
+                       {
+                               format=parser.parString(ok,1);
+                       }
+                       exportImage (fname,false,format);
+               }
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="exportXHTML")
+       {
+               QString fname="";
+               ok=true;
+               if (parser.parCount()>=2)
+                       // Hey, we even have a filename
+                       fname=parser.parString(ok,1); 
+               if (!ok)
+               {
+                       parser.setError (Aborted,"Could not read filename");
+               } else
+               {
+                       exportXHTML (fname,false);
+               }
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="exportXML")
+       {
+               QString fname="";
+               ok=true;
+               if (parser.parCount()>=2)
+                       // Hey, we even have a filename
+                       fname=parser.parString(ok,1); 
+               if (!ok)
+               {
+                       parser.setError (Aborted,"Could not read filename");
+               } else
+               {
+                       exportXML (fname,false);
+               }
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="importDir")
+       {
+               if (xelection.isEmpty())
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(1))
+               {
+                       s=parser.parString(ok,0);
+                       if (ok) importDirInt(s);
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="linkTo")
+       {
+               if (xelection.isEmpty())
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if ( selb)
+               {
+                       if (parser.checkParCount(4))
+                       {
+                               // 0    selectstring of parent
+                               // 1    num in parent (for branches)
+                               // 2,3  x,y of mainbranch or mapcenter
+                               s=parser.parString(ok,0);
+                               LinkableMapObj *dst=model->findObjBySelect (s);
+                               if (dst)
+                               {       
+                                       if (typeid(*dst) == typeid(BranchObj) ) 
+                                       {
+                                               // Get number in parent
+                                               n=parser.parInt (ok,1);
+                                               if (ok)
+                                               {
+                                                       selb->linkTo ((BranchObj*)(dst),n);
+                                                       xelection.update();
+                                               }       
+                                       } else if (typeid(*dst) == typeid(MapCenterObj) ) 
+                                       {
+                                               selb->linkTo ((BranchObj*)(dst),-1);
+                                               // Get coordinates of mainbranch
+                                               x=parser.parDouble(ok,2);
+                                               if (ok)
+                                               {
+                                                       y=parser.parDouble(ok,3);
+                                                       if (ok) 
+                                                       {
+                                                               selb->move (x,y);
+                                                               xelection.update();
+                                                       }
+                                               }
+                                       }       
+                               }       
+                       }       
+               } else if ( xelection.type() == Selection::FloatImage) 
+               {
+                       if (parser.checkParCount(1))
+                       {
+                               // 0    selectstring of parent
+                               s=parser.parString(ok,0);
+                               LinkableMapObj *dst=model->findObjBySelect (s);
+                               if (dst)
+                               {       
+                                       if (typeid(*dst) == typeid(BranchObj) ||
+                                               typeid(*dst) == typeid(MapCenterObj)) 
+                                               linkTo (model->getSelectString(dst));
+                               } else  
+                                       parser.setError (Aborted,"Destination is not a branch");
+                       }               
+               } else
+                       parser.setError (Aborted,"Type of selection is not a floatimage or branch");
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="loadImage")
+       {
+               if (xelection.isEmpty())
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(1))
+               {
+                       s=parser.parString(ok,0);
+                       if (ok) loadFloatImageInt (s);
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="moveBranchUp")
+       {
+               if (xelection.isEmpty() )
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(0))
+               {
+                       moveBranchUp();
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="moveBranchDown")
+       {
+               if (xelection.isEmpty() )
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(0))
+               {
+                       moveBranchDown();
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="move")
+       {
+               if (xelection.isEmpty() )
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if ( xelection.type()!=Selection::Branch  && 
+                                       xelection.type()!=Selection::MapCenter  &&
+                                       xelection.type()!=Selection::FloatImage )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch or floatimage");
+               } else if (parser.checkParCount(2))
+               {       
+                       x=parser.parDouble (ok,0);
+                       if (ok)
+                       {
+                               y=parser.parDouble (ok,1);
+                               if (ok) move (x,y);
+                       }
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="moveRel")
+       {
+               if (xelection.isEmpty() )
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if ( xelection.type()!=Selection::Branch  && 
+                                       xelection.type()!=Selection::MapCenter  &&
+                                       xelection.type()!=Selection::FloatImage )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch or floatimage");
+               } else if (parser.checkParCount(2))
+               {       
+                       x=parser.parDouble (ok,0);
+                       if (ok)
+                       {
+                               y=parser.parDouble (ok,1);
+                               if (ok) moveRel (x,y);
+                       }
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="nop")
+       {
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="paste")
+       {
+               if (xelection.isEmpty() )
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(1))
+               {       
+                       n=parser.parInt (ok,0);
+                       if (ok) pasteNoSave(n);
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="qa")
+       {
+               if (xelection.isEmpty() )
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(4))
+               {       
+                       QString c,u;
+                       c=parser.parString (ok,0);
+                       if (!ok)
+                       {
+                               parser.setError (Aborted,"No comment given");
+                       } else
+                       {
+                               s=parser.parString (ok,1);
+                               if (!ok)
+                               {
+                                       parser.setError (Aborted,"First parameter is not a string");
+                               } else
+                               {
+                                       t=parser.parString (ok,2);
+                                       if (!ok)
+                                       {
+                                               parser.setError (Aborted,"Condition is not a string");
+                                       } else
+                                       {
+                                               u=parser.parString (ok,3);
+                                               if (!ok)
+                                               {
+                                                       parser.setError (Aborted,"Third parameter is not a string");
+                                               } else
+                                               {
+                                                       if (s!="heading")
+                                                       {
+                                                               parser.setError (Aborted,"Unknown type: "+s);
+                                                       } else
+                                                       {
+                                                               if (! (t=="eq") ) 
+                                                               {
+                                                                       parser.setError (Aborted,"Unknown operator: "+t);
+                                                               } else
+                                                               {
+                                                                       if (! selb    )
+                                                                       {
+                                                                               parser.setError (Aborted,"Type of selection is not a branch");
+                                                                       } else
+                                                                       {
+                                                                               if (selb->getHeading() == u)
+                                                                               {
+                                                                                       cout << "PASSED: " << qPrintable (c)  << endl;
+                                                                               } else
+                                                                               {
+                                                                                       cout << "FAILED: " << qPrintable (c)  << endl;
+                                                                               }
+                                                                       }
+                                                               }
+                                                       }
+                                               } 
+                                       } 
+                               } 
+                       }
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="saveImage")
+       {
+               FloatImageObj *fio=xelection.getFloatImage();
+               if (!fio)
+               {
+                       parser.setError (Aborted,"Type of selection is not an image");
+               } else if (parser.checkParCount(2))
+               {
+                       s=parser.parString(ok,0);
+                       if (ok)
+                       {
+                               t=parser.parString(ok,1);
+                               if (ok) saveFloatImageInt (fio,t,s);
+                       }
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="scroll")
+       {
+               if (xelection.isEmpty() )
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(0))
+               {       
+                       if (!scrollBranch (selb))       
+                               parser.setError (Aborted,"Could not scroll branch");
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="select")
+       {
+               if (parser.checkParCount(1))
+               {
+                       s=parser.parString(ok,0);
+                       if (ok) select (s);
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="selectLastBranch")
+       {
+               if (xelection.isEmpty() )
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(0))
+               {       
+                       BranchObj *bo=selb->getLastBranch();
+                       if (!bo)
+                               parser.setError (Aborted,"Could not select last branch");
+                       selectInt (bo); 
+                               
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="selectLastImage")
+       {
+               if (xelection.isEmpty() )
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(0))
+               {       
+                       FloatImageObj *fio=selb->getLastFloatImage();
+                       if (!fio)
+                               parser.setError (Aborted,"Could not select last image");
+                       selectInt (fio);        
+                               
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="selectLatestAdded")
+       {
+               if (latestSelection.isEmpty() )
+               {
+                       parser.setError (Aborted,"No latest added object");
+               } else
+               {       
+                       if (!select (latestSelection))
+                               parser.setError (Aborted,"Could not select latest added object "+latestSelection);
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="setFrameType")
+       {
+               if ( xelection.type()!=Selection::Branch && xelection.type()!= Selection::MapCenter && xelection.type()!=Selection::FloatImage)
+               {
+                       parser.setError (Aborted,"Type of selection does not allow setting frame type");
+               }
+               else if (parser.checkParCount(1))
+               {
+                       s=parser.parString(ok,0);
+                       if (ok) setFrameType (s);
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="setFramePenColor")
+       {
+               if ( xelection.type()!=Selection::Branch && xelection.type()!= Selection::MapCenter && xelection.type()!=Selection::FloatImage)
+               {
+                       parser.setError (Aborted,"Type of selection does not allow setting of pen color");
+               }
+               else if (parser.checkParCount(1))
+               {
+                       QColor c=parser.parColor(ok,0);
+                       if (ok) setFramePenColor (c);
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="setFrameBrushColor")
+       {
+               if ( xelection.type()!=Selection::Branch && xelection.type()!= Selection::MapCenter && xelection.type()!=Selection::FloatImage)
+               {
+                       parser.setError (Aborted,"Type of selection does not allow setting brush color");
+               }
+               else if (parser.checkParCount(1))
+               {
+                       QColor c=parser.parColor(ok,0);
+                       if (ok) setFrameBrushColor (c);
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="setFramePadding")
+       {
+               if ( xelection.type()!=Selection::Branch && xelection.type()!= Selection::MapCenter && xelection.type()!=Selection::FloatImage)
+               {
+                       parser.setError (Aborted,"Type of selection does not allow setting frame padding");
+               }
+               else if (parser.checkParCount(1))
+               {
+                       n=parser.parInt(ok,0);
+                       if (ok) setFramePadding(n);
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="setFrameBorderWidth")
+       {
+               if ( xelection.type()!=Selection::Branch && xelection.type()!= Selection::MapCenter && xelection.type()!=Selection::FloatImage)
+               {
+                       parser.setError (Aborted,"Type of selection does not allow setting frame border width");
+               }
+               else if (parser.checkParCount(1))
+               {
+                       n=parser.parInt(ok,0);
+                       if (ok) setFrameBorderWidth (n);
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="setMapAuthor")
+       {
+               if (parser.checkParCount(1))
+               {
+                       s=parser.parString(ok,0);
+                       if (ok) setMapAuthor (s);
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="setMapComment")
+       {
+               if (parser.checkParCount(1))
+               {
+                       s=parser.parString(ok,0);
+                       if (ok) setMapComment(s);
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="setMapBackgroundColor")
+       {
+               if (xelection.isEmpty() )
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! xelection.getBranch() )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(1))
+               {
+                       QColor c=parser.parColor (ok,0);
+                       if (ok) setMapBackgroundColor (c);
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="setMapDefLinkColor")
+       {
+               if (xelection.isEmpty() )
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(1))
+               {
+                       QColor c=parser.parColor (ok,0);
+                       if (ok) setMapDefLinkColor (c);
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="setMapLinkStyle")
+       {
+               if (parser.checkParCount(1))
+               {
+                       s=parser.parString (ok,0);
+                       if (ok) setMapLinkStyle(s);
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="setHeading")
+       {
+               if (xelection.isEmpty() )
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(1))
+               {
+                       s=parser.parString (ok,0);
+                       if (ok) 
+                               setHeading (s);
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="setHideExport")
+       {
+               if (xelection.isEmpty() )
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (xelection.type()!=Selection::Branch && xelection.type() != Selection::MapCenter &&xelection.type()!=Selection::FloatImage)
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch or floatimage");
+               } else if (parser.checkParCount(1))
+               {
+                       b=parser.parBool(ok,0);
+                       if (ok) setHideExport (b);
+               }
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="setIncludeImagesHorizontally")
+       { 
+               if (xelection.isEmpty() )
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb)
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(1))
+               {
+                       b=parser.parBool(ok,0);
+                       if (ok) setIncludeImagesHor(b);
+               }
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="setIncludeImagesVertically")
+       {
+               if (xelection.isEmpty() )
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb)
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(1))
+               {
+                       b=parser.parBool(ok,0);
+                       if (ok) setIncludeImagesVer(b);
+               }
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="setHideLinkUnselected")
+       {
+               if (xelection.isEmpty() )
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if ( xelection.type()!=Selection::Branch && xelection.type()!= Selection::MapCenter && xelection.type()!=Selection::FloatImage)
+               {                                 
+                       parser.setError (Aborted,"Type of selection does not allow hiding the link");
+               } else if (parser.checkParCount(1))
+               {
+                       b=parser.parBool(ok,0);
+                       if (ok) setHideLinkUnselected(b);
+               }
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="setSelectionColor")
+       {
+               if (parser.checkParCount(1))
+               {
+                       QColor c=parser.parColor (ok,0);
+                       if (ok) setSelectionColorInt (c);
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="setURL")
+       {
+               if (xelection.isEmpty() )
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(1))
+               {
+                       s=parser.parString (ok,0);
+                       if (ok) setURL(s);
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="setVymLink")
+       {
+               if (xelection.isEmpty() )
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(1))
+               {
+                       s=parser.parString (ok,0);
+                       if (ok) setVymLinkInt(s);
+               }       
+       }
+       /////////////////////////////////////////////////////////////////////
+       else if (com=="setFlag")
+       {
+               if (xelection.isEmpty() )
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(1))
+               {
+                       s=parser.parString(ok,0);
+                       if (ok) 
+                       {
+                               selb->activateStandardFlag(s);
+                               selb->updateFlagsToolbar();
+                       }       
+               }
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="setFrameType")
+       {
+               if (xelection.isEmpty() )
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(1))
+               {
+                       s=parser.parString(ok,0);
+                       if (ok) 
+                               setFrameType (s);
+               }
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="sortChildren")
+       {
+               if (xelection.isEmpty() )
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(0))
+               {
+                       sortChildren();
+               }
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="toggleFlag")
+       {
+               if (xelection.isEmpty() )
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(1))
+               {
+                       s=parser.parString(ok,0);
+                       if (ok) 
+                       {
+                               selb->toggleStandardFlag(s);    
+                               selb->updateFlagsToolbar();
+                       }       
+               }
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="unscroll")
+       {
+               if (xelection.isEmpty() )
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(0))
+               {       
+                       if (!unscrollBranch (selb))     
+                               parser.setError (Aborted,"Could not unscroll branch");
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="unscrollChilds")
+       {
+               if (xelection.isEmpty() )
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(0))
+               {       
+                       unscrollChilds ();
+               }       
+       /////////////////////////////////////////////////////////////////////
+       } else if (com=="unsetFlag")
+       {
+               if (xelection.isEmpty() )
+               {
+                       parser.setError (Aborted,"Nothing selected");
+               } else if (! selb )
+               {                                 
+                       parser.setError (Aborted,"Type of selection is not a branch");
+               } else if (parser.checkParCount(1))
+               {
+                       s=parser.parString(ok,0);
+                       if (ok) 
+                       {
+                               selb->deactivateStandardFlag(s);
+                               selb->updateFlagsToolbar();
+                       }       
+               }
+       } else
+               parser.setError (Aborted,"Unknown command");
+
+       // Any errors?
+       if (parser.errorLevel()==NoError)
+       {
+               // setChanged();  FIXME should not be called e.g. for export?!
+               model->reposition();
+       }       
+       else    
+       {
+               // TODO Error handling
+               qWarning("MapEditor::parseAtom: Error!");
+               qWarning(parser.errorMessage());
+       } 
+}
+
+void MapEditor::runScript (QString script)
+{
+       parser.setScript (script);
+       parser.runScript();
+       while (parser.next() ) 
+               parseAtom(parser.getAtom());
+}
+
+bool MapEditor::isDefault()
+{
+    return mapDefault;
+}
+
+bool MapEditor::hasChanged()
+{
+    return mapChanged;
+}
+
+void MapEditor::setChanged()
+{
+       if (!mapChanged)
+               autosaveTimer->start(settings.value("/mapeditor/autosave/ms/",300000).toInt());
+       mapChanged=true;
+       mapDefault=false;
+       mapUnsaved=true;
+       findReset();
+
+}
+
+void MapEditor::closeMap()
+{
+       // Unselect before disabling the toolbar actions
+       if (!xelection.isEmpty() ) xelection.unselect();
+       xelection.clear();
+       updateActions();
+
+    clear();
+       // close();  FIXME needed?
+}
+
+void MapEditor::setFilePath(QString fpath, QString destname)
+{
+       if (fpath.isEmpty() || fpath=="")
+       {
+               filePath="";
+               fileName="";
+               destPath="";
+       } else
+       {
+               filePath=fpath;         // becomes absolute path
+               fileName=fpath;         // gets stripped of path
+               destPath=destname;      // needed for vymlinks and during load to reset fileChangedTime
+
+               // If fpath is not an absolute path, complete it
+               filePath=QDir(fpath).absPath();
+               fileDir=filePath.left (1+filePath.findRev ("/"));
+
+               // Set short name, too. Search from behind:
+               int i=fileName.findRev("/");
+               if (i>=0) fileName=fileName.remove (0,i+1);
+
+               // Forget the .vym (or .xml) for name of map
+               mapName=fileName.left(fileName.findRev(".",-1,true) );
+       }
+}
+
+void MapEditor::setFilePath(QString fpath)
+{
+       setFilePath (fpath,fpath);
+}
+
+QString MapEditor::getFilePath()
+{
+       return filePath;
+}
+
+QString MapEditor::getFileName()
+{
+       return fileName;
+}
+
+QString MapEditor::getMapName()
+{
+       return mapName;
+}
+
+QString MapEditor::getDestPath()
+{
+       return destPath;
+}
+
+ErrorCode MapEditor::load (QString fname, const LoadMode &lmode, const FileType &ftype)
+{
+       ErrorCode err=success;
+
+       parseBaseHandler *handler;
+       fileType=ftype;
+       switch (fileType)
+       {
+               case VymMap: handler=new parseVYMHandler; break;
+               case FreemindMap : handler=new parseFreemindHandler; break;
+               default: 
+                       QMessageBox::critical( 0, tr( "Critical Parse Error" ),
+                                  "Unknown FileType in MapEditor::load()");
+               return aborted; 
+       }
+       if (lmode==NewMap)
+       {
+               xelection.clear();
+               model->setMapEditor(this);
+               // (map state is set later at end of load...)
+       } else
+       {
+               BranchObj *bo=xelection.getBranch();
+               if (!bo) return aborted;
+               if (lmode==ImportAdd)
+                       saveStateChangingPart(
+                               bo,
+                               bo,
+                               QString("addMapInsert (%1)").arg(fname),
+                               QString("Add map %1 to %2").arg(fname).arg(getName(bo)));
+               else    
+                       saveStateChangingPart(
+                               bo,
+                               bo,
+                               QString("addMapReplace(%1)").arg(fname),
+                               QString("Add map %1 to %2").arg(fname).arg(getName(bo)));
+       }       
+    
+
+       // Create temporary directory for packing
+       bool ok;
+       QString tmpZipDir=makeTmpDir (ok,"vym-pack");
+       if (!ok)
+       {
+               QMessageBox::critical( 0, tr( "Critical Load Error" ),
+                  tr("Couldn't create temporary directory before load\n"));
+               return aborted; 
+       }
+
+       // Try to unzip file
+       err=unzipDir (tmpZipDir,fname);
+       QString xmlfile;
+       if (err==nozip)
+       {
+               xmlfile=fname;
+               zipped=false;
+       } else
+       {
+               zipped=true;
+               
+               // Look for mapname.xml
+               xmlfile= fname.left(fname.findRev(".",-1,true));
+               xmlfile=xmlfile.section( '/', -1 );
+               QFile mfile( tmpZipDir + "/" + xmlfile + ".xml");
+               if (!mfile.exists() )
+               {
+                       // mapname.xml does not exist, well, 
+                       // maybe someone renamed the mapname.vym file...
+                       // Try to find any .xml in the toplevel 
+                       // directory of the .vym file
+                       QStringList flist=QDir (tmpZipDir).entryList("*.xml");
+                       if (flist.count()==1) 
+                       {
+                               // Only one entry, take this one
+                               xmlfile=tmpZipDir + "/"+flist.first();
+                       } else
+                       {
+                               for ( QStringList::Iterator it = flist.begin(); it != flist.end(); ++it ) 
+                                       *it=tmpZipDir + "/" + *it;
+                               // TODO Multiple entries, load all (but only the first one into this ME)
+                               //mainWindow->fileLoadFromTmp (flist);
+                               //returnCode=1; // Silently forget this attempt to load
+                               qWarning ("MainWindow::load (fn)  multimap found...");
+                       }       
+                               
+                       if (flist.isEmpty() )
+                       {
+                               QMessageBox::critical( 0, tr( "Critical Load Error" ),
+                                                  tr("Couldn't find a map (*.xml) in .vym archive.\n"));
+                               err=aborted;                               
+                       }       
+               } //file doesn't exist  
+               else
+                       xmlfile=mfile.name();
+       }
+
+       QFile file( xmlfile);
+
+       // I am paranoid: file should exist anyway
+       // according to check in mainwindow.
+       if (!file.exists() )
+       {
+               QMessageBox::critical( 0, tr( "Critical Parse Error" ),
+                                  tr(QString("Couldn't open map %1").arg(file.name())));
+               err=aborted;    
+       } else
+       {
+               bool blockSaveStateOrg=blockSaveState;
+               blockReposition=true;
+               blockSaveState=true;
+               QXmlInputSource source( file);
+               QXmlSimpleReader reader;
+               reader.setContentHandler( handler );
+               reader.setErrorHandler( handler );
+               handler->setModel ( model);
+
+
+               // We need to set the tmpDir in order  to load files with rel. path
+               QString tmpdir;
+               if (zipped)
+                       tmpdir=tmpZipDir;
+               else
+                       tmpdir=fname.left(fname.findRev("/",-1));       
+               handler->setTmpDir (tmpdir);
+               handler->setInputFile (file.name());
+               handler->setLoadMode (lmode);
+               bool ok = reader.parse( source );
+               blockReposition=false;
+               blockSaveState=blockSaveStateOrg;
+               file.close();
+               if ( ok ) 
+               {
+                       model->reposition();    // FIXME reposition the view instead...
+                       xelection.update();
+                       if (lmode==NewMap)
+                       {
+                               mapDefault=false;
+                               mapChanged=false;
+                               mapUnsaved=false;
+                               autosaveTimer->stop();
+                       }
+
+                       // Reset timestamp to check for later updates of file
+                       fileChangedTime=QFileInfo (destPath).lastModified();
+               } else 
+               {
+                       QMessageBox::critical( 0, tr( "Critical Parse Error" ),
+                                          tr( handler->errorProtocol() ) );
+                       // returnCode=1;        
+                       // Still return "success": the map maybe at least
+                       // partially read by the parser
+               }       
+       }       
+
+       // Delete tmpZipDir
+       removeDir (QDir(tmpZipDir));
+
+       updateActions();
+
+       return err;
+}
+
+ErrorCode MapEditor::save (const SaveMode &savemode)
+{
+       QString tmpZipDir;
+       QString mapFileName;
+       QString safeFilePath;
+
+       ErrorCode err=success;
+
+       if (zipped)
+               // save as .xml
+               mapFileName=mapName+".xml";
+       else
+               // use name given by user, even if he chooses .doc
+               mapFileName=fileName;
+
+       // Look, if we should zip the data:
+       if (!zipped)
+       {
+               QMessageBox mb( vymName,
+                       tr("The map %1\ndid not use the compressed "
+                       "vym file format.\nWriting it uncompressed will also write images \n"
+                       "and flags and thus may overwrite files in the "
+                       "given directory\n\nDo you want to write the map").arg(filePath),
+                       QMessageBox::Warning,
+                       QMessageBox::Yes | QMessageBox::Default,
+                       QMessageBox::No ,
+                       QMessageBox::Cancel | QMessageBox::Escape);
+               mb.setButtonText( QMessageBox::Yes, tr("compressed (vym default)") );
+               mb.setButtonText( QMessageBox::No, tr("uncompressed") );
+               mb.setButtonText( QMessageBox::Cancel, tr("Cancel"));
+               switch( mb.exec() ) 
+               {
+                       case QMessageBox::Yes:
+                               // save compressed (default file format)
+                               zipped=true;
+                               break;
+                       case QMessageBox::No:
+                               // save uncompressed
+                               zipped=false;
+                               break;
+                       case QMessageBox::Cancel:
+                               // do nothing
+                               return aborted;
+                               break;
+               }
+       }
+
+       // First backup existing file, we 
+       // don't want to add to old zip archives
+       QFile f(destPath);
+       if (f.exists())
+       {
+               if ( settings.value ("/mapeditor/writeBackupFile").toBool())
+               {
+                       QString backupFileName(destPath + "~");
+                       QFile backupFile(backupFileName);
+                       if (backupFile.exists() && !backupFile.remove())
+                       {
+                               QMessageBox::warning(0, tr("Save Error"),
+                                                                        tr("%1\ncould not be removed before saving").arg(backupFileName));
+                       }
+                       else if (!f.rename(backupFileName))
+                       {
+                               QMessageBox::warning(0, tr("Save Error"),
+                                                                        tr("%1\ncould not be renamed before saving").arg(destPath));
+                       }
+               }
+       }
+
+       if (zipped)
+       {
+               // Create temporary directory for packing
+               bool ok;
+               tmpZipDir=makeTmpDir (ok,"vym-zip");
+               if (!ok)
+               {
+                       QMessageBox::critical( 0, tr( "Critical Load Error" ),
+                          tr("Couldn't create temporary directory before save\n"));
+                       return aborted; 
+               }
+
+               safeFilePath=filePath;
+               setFilePath (tmpZipDir+"/"+ mapName+ ".xml", safeFilePath);
+       } // zipped
+
+       // Create mapName and fileDir
+       makeSubDirs (fileDir);
+
+       QString saveFile;
+       if (savemode==CompleteMap || xelection.isEmpty())
+       {
+               // Save complete map
+               saveFile=saveToDir (fileDir,mapName+"-",true,QPointF(),NULL);
+               mapChanged=false;
+               mapUnsaved=false;
+               autosaveTimer->stop();
+       }
+       else    
+       {
+               // Save part of map
+               if (xelection.type()==Selection::FloatImage)
+                       saveFloatImage();
+               else    
+                       saveFile=saveToDir (fileDir,mapName+"-",true,QPointF(),xelection.getBranch());  
+               // TODO take care of multiselections
+       }       
+
+       if (!saveStringToDisk(fileDir+mapFileName,saveFile))
+       {
+               err=aborted;
+               qWarning ("ME::saveStringToDisk failed!");
+       }
+
+       if (zipped)
+       {
+               // zip
+               if (err==success) err=zipDir (tmpZipDir,destPath);
+
+               // Delete tmpDir
+               removeDir (QDir(tmpZipDir));
+
+               // Restore original filepath outside of tmp zip dir
+               setFilePath (safeFilePath);
+       }
+
+       updateActions();
+       fileChangedTime=QFileInfo (destPath).lastModified();
+       return err;
+}
+
+
+void MapEditor::print()
+{
+}
+
+void MapEditor::setAntiAlias (bool b)
+{
+       setRenderHint(QPainter::Antialiasing,b);
+}
+
+void MapEditor::setSmoothPixmap(bool b)
+{
+       setRenderHint(QPainter::SmoothPixmapTransform,b);
+}
+
+QPixmap MapEditor::getPixmap()
+{
+       QRectF mapRect=model->getTotalBBox();
+       QPixmap pix((int)mapRect.width()+2,(int)mapRect.height()+1);
+       QPainter pp (&pix);
+       
+       pp.setRenderHints(renderHints());
+
+       // Don't print the visualisation of selection
+       xelection.unselect();
+
+       mapScene->render (      &pp, 
+               QRectF(0,0,mapRect.width()+1,mapRect.height()+1),
+               QRectF(mapRect.x(),mapRect.y(),mapRect.width(),mapRect.height() ));
+
+       // Restore selection
+       xelection.reselect();
+       
+       return pix;
+}
+
+void MapEditor::setHideTmpMode (HideTmpMode mode)
+{
+       hidemode=mode;
+       model->setHideTmp (hidemode);
+       model->reposition();
+       scene()->update();
+}
+
+HideTmpMode MapEditor::getHideTmpMode()
+{
+       return hidemode;
+}
+
+void MapEditor::setExportMode (bool b)
+{
+       // should be called before and after exports
+       // depending on the settings
+       if (b && settings.value("/export/useHideExport","true")=="true")
+               setHideTmpMode (HideExport);
+       else    
+               setHideTmpMode (HideNone);
+}
+
+void MapEditor::exportASCII(QString fname,bool askName)
+{
+       ExportASCII ex;
+       ex.setModel (model);
+       if (fname=="") 
+               ex.setFile (mapName+".txt");    
+       else
+               ex.setFile (fname);
+
+       if (askName)
+       {
+               //ex.addFilter ("TXT (*.txt)");
+               ex.setDir(lastImageDir);
+               //ex.setCaption(vymName+ " -" +tr("Export as ASCII")+" "+tr("(still experimental)"));
+               ex.execDialog() ; 
+       } 
+       if (!ex.canceled())
+       {
+               setExportMode(true);
+               ex.doExport();
+               setExportMode(false);
+       }
+}
+
+void MapEditor::exportImage(QString fname, bool askName, QString format)
+{
+       if (fname=="")
+       {
+               fname=mapName+".png";
+               format="PNG";
+       }       
+
+       if (askName)
+       {
+               QStringList fl;
+               QFileDialog *fd=new QFileDialog (this);
+               fd->setCaption (tr("Export map as image"));
+               fd->setDirectory (lastImageDir);
+               fd->setFileMode(QFileDialog::AnyFile);
+               fd->setFilters  (imageIO.getFilters() );
+               if (fd->exec())
+               {
+                       fl=fd->selectedFiles();
+                       fname=fl.first();
+                       format=imageIO.getType(fd->selectedFilter());
+               } 
+       }
+
+       setExportMode (true);
+       QPixmap pix (getPixmap());
+       pix.save(fname, format);
+       setExportMode (false);
+}
+
+void MapEditor::exportOOPresentation(const QString &fn, const QString &cf)
+{
+       ExportOO ex;
+       ex.setFile (fn);
+       ex.setModel (model);
+       if (ex.setConfigFile(cf)) 
+       {
+               setExportMode (true);
+               ex.exportPresentation();
+               setExportMode (false);
+       }
+}
+
+void MapEditor::exportXHTML (const QString &dir, bool askForName)
+{
+                       ExportXHTMLDialog dia(this);
+                       dia.setFilePath (filePath );
+                       dia.setMapName (mapName );
+                       dia.readSettings();
+                       if (dir!="") dia.setDir (dir);
+
+                       bool ok=true;
+                       
+                       if (askForName)
+                       {
+                               if (dia.exec()!=QDialog::Accepted) 
+                                       ok=false;
+                               else    
+                               {
+                                       QDir d (dia.getDir());
+                                       // Check, if warnings should be used before overwriting
+                                       // the output directory
+                                       if (d.exists() && d.count()>0)
+                                       {
+                                               WarningDialog warn;
+                                               warn.showCancelButton (true);
+                                               warn.setText(QString(
+                                                       "The directory %1 is not empty.\n"
+                                                       "Do you risk to overwrite some of its contents?").arg(d.path() ));
+                                               warn.setCaption("Warning: Directory not empty");
+                                               warn.setShowAgainName("mainwindow/overwrite-dir-xhtml");
+
+                                               if (warn.exec()!=QDialog::Accepted) ok=false;
+                                       }
+                               }       
+                       }
+
+                       if (ok)
+                       {
+                               exportXML (dia.getDir(),false );
+                               dia.doExport(mapName );
+                               //if (dia.hasChanged()) setChanged();
+                       }
+}
+
+void MapEditor::exportXML(QString dir, bool askForName)
+{
+       if (askForName)
+       {
+               dir=browseDirectory(this,tr("Export XML to directory"));
+               if (dir =="" && !reallyWriteDirectory(dir) )
+               return;
+       }
+
+       // Hide stuff during export, if settings want this
+       setExportMode (true);
+
+       // Create subdirectories
+       makeSubDirs (dir);
+
+       // write to directory
+       QString saveFile=saveToDir (dir,mapName+"-",true,model->getTotalBBox().topLeft() ,NULL);
+       QFile file;
+
+       file.setName ( dir + "/"+mapName+".xml");
+       if ( !file.open( QIODevice::WriteOnly ) )
+       {
+               // This should neverever happen
+               QMessageBox::critical (0,tr("Critical Export Error"),tr("MapEditor::exportXML couldn't open %1").arg(file.name()));
+               return;
+       }       
+
+       // Write it finally, and write in UTF8, no matter what 
+       QTextStream ts( &file );
+       ts.setEncoding (QTextStream::UnicodeUTF8);
+       ts << saveFile;
+       file.close();
+
+       // Now write image, too
+       exportImage (dir+"/images/"+mapName+".png",false,"PNG");
+
+       setExportMode (false);
+}
+
+void MapEditor::clear()
+{
+       xelection.unselect();
+       model->clear();
+}
+
+void MapEditor::copy()
+{
+       LinkableMapObj *sel=xelection.single();
+       if (sel)
+       {
+               if (redosAvail == 0)
+               {
+                       // Copy to history
+                       QString s=model->getSelectString(sel);
+                       saveState (PartOfMap, s, "nop ()", s, "copy ()","Copy selection to clipboard",sel  );
+                       curClipboard=curStep;
+               }
+
+               // Copy also to global clipboard, because we are at last step in history
+               QString bakMapName(QString("history-%1").arg(curStep));
+               QString bakMapDir(tmpMapDir +"/"+bakMapName);
+               copyDir (bakMapDir,clipboardDir );
+
+               clipboardEmpty=false;
+               updateActions();
+       }           
+}
+
+void MapEditor::redo()
+{
+       // Can we undo at all?
+       if (redosAvail<1) return;
+
+       bool blockSaveStateOrg=blockSaveState;
+       blockSaveState=true;
+       
+       redosAvail--;
+
+       if (undosAvail<stepsTotal) undosAvail++;
+       curStep++;
+       if (curStep>stepsTotal) curStep=1;
+       QString undoCommand=  undoSet.readEntry (QString("/history/step-%1/undoCommand").arg(curStep));
+       QString undoSelection=undoSet.readEntry (QString("/history/step-%1/undoSelection").arg(curStep));
+       QString redoCommand=  undoSet.readEntry (QString("/history/step-%1/redoCommand").arg(curStep));
+       QString redoSelection=undoSet.readEntry (QString("/history/step-%1/redoSelection").arg(curStep));
+       QString comment=undoSet.readEntry (QString("/history/step-%1/comment").arg(curStep));
+       QString version=undoSet.readEntry ("/history/version");
+
+       /* TODO Maybe check for version, if we save the history
+       if (!checkVersion(version))
+               QMessageBox::warning(0,tr("Warning"),
+                       tr("Version %1 of saved undo/redo data\ndoes not match current vym version %2.").arg(version).arg(vymVersion));
+       */ 
+
+       // Find out current undo directory
+       QString bakMapDir(QString(tmpMapDir+"/undo-%1").arg(curStep));
+
+       if (debug)
+       {
+               cout << "ME::redo() begin\n";
+               cout << "    undosAvail="<<undosAvail<<endl;
+               cout << "    redosAvail="<<redosAvail<<endl;
+               cout << "       curStep="<<curStep<<endl;
+               cout << "    ---------------------------"<<endl;
+               cout << "    comment="<<comment.toStdString()<<endl;
+               cout << "    undoCom="<<undoCommand.toStdString()<<endl;
+               cout << "    undoSel="<<undoSelection.toStdString()<<endl;
+               cout << "    redoCom="<<redoCommand.toStdString()<<endl;
+               cout << "    redoSel="<<redoSelection.toStdString()<<endl;
+               cout << "    ---------------------------"<<endl<<endl;
+       }
+
+       // select  object before redo
+       if (!redoSelection.isEmpty())
+               select (redoSelection);
+
+
+       parseAtom (redoCommand);
+       model->reposition();
+
+       blockSaveState=blockSaveStateOrg;
+
+       undoSet.setEntry ("/history/undosAvail",QString::number(undosAvail));
+       undoSet.setEntry ("/history/redosAvail",QString::number(redosAvail));
+       undoSet.setEntry ("/history/curStep",QString::number(curStep));
+       undoSet.writeSettings(histPath);
+
+       mainWindow->updateHistory (undoSet);
+       updateActions();
+
+       /* TODO remove testing
+       cout << "ME::redo() end\n";
+       cout << "    undosAvail="<<undosAvail<<endl;
+       cout << "    redosAvail="<<redosAvail<<endl;
+       cout << "       curStep="<<curStep<<endl;
+       cout << "    ---------------------------"<<endl<<endl;
+       */
+
+
+}
+
+bool MapEditor::isRedoAvailable()
+{
+       if (undoSet.readNumEntry("/history/redosAvail",0)>0)
+               return true;
+       else    
+               return false;
+}
+
+void MapEditor::undo()
+{
+       // Can we undo at all?
+       if (undosAvail<1) return;
+
+       mainWindow->statusMessage (tr("Autosave disabled during undo."));
+
+       bool blockSaveStateOrg=blockSaveState;
+       blockSaveState=true;
+       
+       QString undoCommand=  undoSet.readEntry (QString("/history/step-%1/undoCommand").arg(curStep));
+       QString undoSelection=undoSet.readEntry (QString("/history/step-%1/undoSelection").arg(curStep));
+       QString redoCommand=  undoSet.readEntry (QString("/history/step-%1/redoCommand").arg(curStep));
+       QString redoSelection=undoSet.readEntry (QString("/history/step-%1/redoSelection").arg(curStep));
+       QString comment=undoSet.readEntry (QString("/history/step-%1/comment").arg(curStep));
+       QString version=undoSet.readEntry ("/history/version");
+
+       /* TODO Maybe check for version, if we save the history
+       if (!checkVersion(version))
+               QMessageBox::warning(0,tr("Warning"),
+                       tr("Version %1 of saved undo/redo data\ndoes not match current vym version %2.").arg(version).arg(vymVersion));
+       */
+
+       // Find out current undo directory
+       QString bakMapDir(QString(tmpMapDir+"/undo-%1").arg(curStep));
+
+       // select  object before undo
+       if (!undoSelection.isEmpty())
+               select (undoSelection);
+
+       if (debug)
+       {
+               cout << "ME::undo() begin\n";
+               cout << "    undosAvail="<<undosAvail<<endl;
+               cout << "    redosAvail="<<redosAvail<<endl;
+               cout << "       curStep="<<curStep<<endl;
+               cout << "    ---------------------------"<<endl;
+               cout << "    comment="<<comment.toStdString()<<endl;
+               cout << "    undoCom="<<undoCommand.toStdString()<<endl;
+               cout << "    undoSel="<<undoSelection.toStdString()<<endl;
+               cout << "    redoCom="<<redoCommand.toStdString()<<endl;
+               cout << "    redoSel="<<redoSelection.toStdString()<<endl;
+               cout << "    ---------------------------"<<endl<<endl;
+       }       
+       parseAtom (undoCommand);
+       model->reposition();
+
+       undosAvail--;
+       curStep--; 
+       if (curStep<1) curStep=stepsTotal;
+
+       redosAvail++;
+
+       blockSaveState=blockSaveStateOrg;
+/* TODO remove testing
+       cout << "ME::undo() end\n";
+       cout << "    undosAvail="<<undosAvail<<endl;
+       cout << "    redosAvail="<<redosAvail<<endl;
+       cout << "       curStep="<<curStep<<endl;
+       cout << "    ---------------------------"<<endl<<endl;
+*/
+
+       undoSet.setEntry ("/history/undosAvail",QString::number(undosAvail));
+       undoSet.setEntry ("/history/redosAvail",QString::number(redosAvail));
+       undoSet.setEntry ("/history/curStep",QString::number(curStep));
+       undoSet.writeSettings(histPath);
+
+       mainWindow->updateHistory (undoSet);
+       updateActions();
+       xelection.update();
+       ensureSelectionVisible();
+}
+
+bool MapEditor::isUndoAvailable()
+{
+       if (undoSet.readNumEntry("/history/undosAvail",0)>0)
+               return true;
+       else    
+               return false;
+}
+
+void MapEditor::gotoHistoryStep (int i)
+{
+       // Restore variables
+       int undosAvail=undoSet.readNumEntry (QString("/history/undosAvail"));
+       int redosAvail=undoSet.readNumEntry (QString("/history/redosAvail"));
+
+       if (i<0) i=undosAvail+redosAvail;
+
+       // Clicking above current step makes us undo things
+       if (i<undosAvail) 
+       {       
+               for (int j=0; j<undosAvail-i; j++) undo();
+               return;
+       }       
+       // Clicking below current step makes us redo things
+       if (i>undosAvail) 
+               for (int j=undosAvail; j<i; j++) 
+               {
+                       if (debug) cout << "ME::gotoHistoryStep redo "<<j<<"/"<<undosAvail<<" i="<<i<<endl;
+                       redo();
+               }
+
+       // And ignore clicking the current row ;-)      
+}
+
+void MapEditor::addMapReplaceInt(const QString &undoSel, const QString &path)
+{
+       QString pathDir=path.left(path.findRev("/"));
+       QDir d(pathDir);
+       QFile file (path);
+
+       if (d.exists() )
+       {
+               // We need to parse saved XML data
+               parseVYMHandler handler;
+               QXmlInputSource source( file);
+               QXmlSimpleReader reader;
+               reader.setContentHandler( &handler );
+               reader.setErrorHandler( &handler );
+               handler.setModel ( model);
+               handler.setTmpDir ( pathDir );  // needed to load files with rel. path
+               if (undoSel.isEmpty())
+               {
+                       unselect();
+                       model->clear();
+                       handler.setLoadMode (NewMap);
+               } else  
+               {
+                       select (undoSel);
+                       handler.setLoadMode (ImportReplace);
+               }       
+               blockReposition=true;
+               bool ok = reader.parse( source );
+               blockReposition=false;
+               if (! ok ) 
+               {       
+                       // This should never ever happen
+                       QMessageBox::critical( 0, tr( "Critical Parse Error while reading %1").arg(path),
+                                                                   handler.errorProtocol());
+               }
+       } else  
+               QMessageBox::critical( 0, tr( "Critical Error" ), tr("Could not read %1").arg(path));
+}
+
+void MapEditor::addMapInsertInt (const QString &path, int pos)
+{
+       BranchObj *sel=xelection.getBranch();
+       if (sel)
+       {
+               QString pathDir=path.left(path.findRev("/"));
+               QDir d(pathDir);
+               QFile file (path);
+
+               if (d.exists() )
+               {
+                       // We need to parse saved XML data
+                       parseVYMHandler handler;
+                       QXmlInputSource source( file);
+                       QXmlSimpleReader reader;
+                       reader.setContentHandler( &handler );
+                       reader.setErrorHandler( &handler );
+                       handler.setModel (model);
+                       handler.setTmpDir ( pathDir );  // needed to load files with rel. path
+                       handler.setLoadMode (ImportAdd);
+                       blockReposition=true;
+                       bool ok = reader.parse( source );
+                       blockReposition=false;
+                       if (! ok ) 
+                       {       
+                               // This should never ever happen
+                               QMessageBox::critical( 0, tr( "Critical Parse Error while reading %1").arg(path),
+                                                                               handler.errorProtocol());
+                       }
+                       if (sel->getDepth()>0)
+                               sel->getLastBranch()->linkTo (sel,pos);
+               } else  
+                       QMessageBox::critical( 0, tr( "Critical Error" ), tr("Could not read %1").arg(path));
+       }               
+}
+
+void MapEditor::pasteNoSave(const int &n)
+{
+       bool old=blockSaveState;
+       blockSaveState=true;
+       bool zippedOrg=zipped;
+       if (redosAvail > 0 || n!=0)
+       {
+               // Use the "historical" buffer
+               QString bakMapName(QString("history-%1").arg(n));
+               QString bakMapDir(tmpMapDir +"/"+bakMapName);
+               load (bakMapDir+"/"+clipboardFile,ImportAdd, VymMap);
+       } else
+               // Use the global buffer
+               load (clipboardDir+"/"+clipboardFile,ImportAdd, VymMap);
+       zipped=zippedOrg;
+       blockSaveState=old;
+}
+
+void MapEditor::paste()                
+{   
+       BranchObj *sel=xelection.getBranch();
+       if (sel)
+       {
+               saveStateChangingPart(
+                       sel,
+                       sel,
+                       QString ("paste (%1)").arg(curClipboard),
+                       QString("Paste to %1").arg( getName(sel))
+               );
+               pasteNoSave(0);
+               model->reposition();
+       }
+}
+
+void MapEditor::cut()
+{
+       LinkableMapObj *sel=xelection.single();
+       if ( sel && (xelection.type() == Selection::Branch ||
+               xelection.type()==Selection::MapCenter ||
+               xelection.type()==Selection::FloatImage))
+       {
+       /* No savestate! savestate is called in cutNoSave
+               saveStateChangingPart(
+                       sel->getParObj(),
+                       sel,
+                       "cut ()",
+                       QString("Cut %1").arg(getName(sel ))
+               );
+       */      
+               copy();
+               deleteSelection();
+               model->reposition();
+       }
+}
+
+void MapEditor::move(const double &x, const double &y)
+{
+       LinkableMapObj *sel=xelection.single();
+       if (sel)
+       {
+        QPointF ap(sel->getAbsPos());
+        QPointF to(x, y);
+        if (ap != to)
+        {
+            QString ps=qpointfToString(ap);
+            QString s=xelection.getSelectString();
+            saveState(
+                s, "move "+ps, 
+                s, "move "+qpointfToString(to), 
+                QString("Move %1 to %2").arg(getName(sel)).arg(ps));
+            sel->move(x,y);
+            model->reposition();
+            xelection.update();
+        }
+       }
+}
+
+void MapEditor::moveRel (const double &x, const double &y)
+{
+       LinkableMapObj *sel=xelection.single();
+       if (sel)
+       {
+        QPointF rp(sel->getRelPos());
+        QPointF to(x, y);
+        if (rp != to)
+        {
+            QString ps=qpointfToString (sel->getRelPos());
+            QString s=model->getSelectString(sel);
+            saveState(
+                s, "moveRel "+ps, 
+                s, "moveRel "+qpointfToString(to), 
+                QString("Move %1 to relative position %2").arg(getName(sel)).arg(ps));
+            ((OrnamentedObj*)sel)->move2RelPos (x,y);
+            model->reposition();
+            sel->updateLink();
+            xelection.update();
+        }
+       }
+}
+
+void MapEditor::moveBranchUp()
+{
+       BranchObj* bo=xelection.getBranch();
+       BranchObj* par;
+       if (bo)
+       {
+               if (!bo->canMoveBranchUp()) return;
+               par=(BranchObj*)(bo->getParObj());
+               BranchObj *obo=par->moveBranchUp (bo);  // bo will be the one below selection
+               saveState (model->getSelectString(bo),"moveBranchDown ()",model->getSelectString(obo),"moveBranchUp ()",QString("Move up %1").arg(getName(bo)));
+               model->reposition();
+               scene()->update();
+               xelection.update();
+               ensureSelectionVisible();
+       }
+}
+
+void MapEditor::moveBranchDown()
+{
+       BranchObj* bo=xelection.getBranch();
+       BranchObj* par;
+       if (bo)
+       {
+               if (!bo->canMoveBranchDown()) return;
+               par=(BranchObj*)(bo->getParObj());
+               BranchObj *obo=par->moveBranchDown(bo); // bo will be the one above selection
+               saveState(model->getSelectString(bo),"moveBranchUp ()",model->getSelectString(obo),"moveBranchDown ()",QString("Move down %1").arg(getName(bo)));
+               model->reposition();
+               scene()->update();
+               xelection.update();
+               ensureSelectionVisible();
+       }       
+}
+
+void MapEditor::sortChildren()
+{
+       BranchObj* bo=xelection.getBranch();
+       if (bo)
+       {
+               if(bo->countBranches()>1)
+               {
+                       saveStateChangingPart(bo,bo, "sortChildren ()",QString("Sort children of %1").arg(getName(bo)));
+                       bo->sortChildren();
+                       model->reposition();
+                       ensureSelectionVisible();
+               }
+       }
+}
+
+void MapEditor::linkTo(const QString &dstString)       
+{
+       FloatImageObj *fio=xelection.getFloatImage();
+       if (fio)
+       {
+               BranchObj *dst=(BranchObj*)(model->findObjBySelect(dstString));
+               if (dst && (typeid(*dst)==typeid (BranchObj) || 
+                                       typeid(*dst)==typeid (MapCenterObj)))
+               {                       
+                       LinkableMapObj *dstPar=dst->getParObj();
+                       QString parString=model->getSelectString(dstPar);
+                       QString fioPreSelectString=model->getSelectString(fio);
+                       QString fioPreParentSelectString=model->getSelectString (fio->getParObj());
+                       ((BranchObj*)(dst))->addFloatImage (fio);
+                       xelection.unselect();
+                       ((BranchObj*)(fio->getParObj()))->removeFloatImage (fio);
+                       fio=((BranchObj*)(dst))->getLastFloatImage();
+                       fio->setRelPos();
+                       fio->reposition();
+                       xelection.select(fio);
+                       saveState(
+                               model->getSelectString(fio),
+                               QString("linkTo (\"%1\")").arg(fioPreParentSelectString), 
+                               fioPreSelectString, 
+                               QString ("linkTo (\"%1\")").arg(dstString),
+                               QString ("Link floatimage to %1").arg(getName(dst)));
+               }
+       }
+}
+
+QString MapEditor::getHeading(bool &ok, QPoint &p)
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {
+               ok=true;
+               p=mapFromScene(bo->getAbsPos());
+               return bo->getHeading();
+       }
+       ok=false;
+       return QString();
+}
+
+void MapEditor::setHeading(const QString &s)
+{
+       BranchObj *sel=xelection.getBranch();
+       if (sel)
+       {
+               saveState(
+                       sel,
+                       "setHeading (\""+sel->getHeading()+"\")", 
+                       sel,
+                       "setHeading (\""+s+"\")", 
+                       QString("Set heading of %1 to \"%2\"").arg(getName(sel)).arg(s) );
+               sel->setHeading(s );
+               model->reposition();
+               xelection.update();
+               ensureSelectionVisible();
+       }
+}
+
+void MapEditor::setHeadingInt(const QString &s)
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {
+               bo->setHeading(s);
+               model->reposition();
+               xelection.update();
+               ensureSelectionVisible();
+       }
+}
+
+void MapEditor::setVymLinkInt (const QString &s)
+{
+       // Internal function, no saveState needed
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {
+               bo->setVymLink(s);
+               model->reposition();
+               updateActions();
+               xelection.update();
+               ensureSelectionVisible();
+       }
+}
+
+BranchObj* MapEditor::addMapCenter ()
+{
+       MapCenterObj *mco= model->addMapCenter(contextMenuPos);
+       xelection.select (mco);
+       updateActions();
+       ensureSelectionVisible();
+       saveState (
+               mco,
+               "delete()",
+               NULL,
+               QString ("addMapCenter (%1,%2)").arg (contextMenuPos.x()).arg(contextMenuPos.y()),
+               QString ("Adding MapCenter to (%1,%2").arg (contextMenuPos.x()).arg(contextMenuPos.y())
+       );      
+       return mco;     
+}
+
+BranchObj* MapEditor::addNewBranchInt(int num)
+{
+       // Depending on pos:
+       // -3           insert in childs of parent  above selection 
+       // -2           add branch to selection 
+       // -1           insert in childs of parent below selection 
+       // 0..n         insert in childs of parent at pos
+       BranchObj *newbo=NULL;
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {
+               if (num==-2)
+               {
+                       // save scroll state. If scrolled, automatically select
+                       // new branch in order to tmp unscroll parent...
+                       newbo=bo->addBranch();
+                       
+               }else if (num==-1)
+               {
+                       num=bo->getNum()+1;
+                       bo=(BranchObj*)bo->getParObj();
+                       if (bo) newbo=bo->insertBranch(num);
+               }else if (num==-3)
+               {
+                       num=bo->getNum();
+                       bo=(BranchObj*)bo->getParObj();
+                       if (bo) newbo=bo->insertBranch(num);
+               }
+               if (!newbo) return NULL;
+       }       
+       return newbo;
+}      
+
+BranchObj* MapEditor::addNewBranch(int pos)
+{
+       // Different meaning than num in addNewBranchInt!
+       // -1   add above
+       //  0   add as child
+       // +1   add below
+       BranchObj *bo = xelection.getBranch();
+       BranchObj *newbo=NULL;
+
+       if (bo)
+       {
+               setCursor (Qt::ArrowCursor);
+
+               newbo=addNewBranchInt (pos-2);
+
+               if (newbo)
+               {
+                       saveState(
+                               newbo,          
+                               "delete ()",
+                               bo,
+                               QString ("addBranch (%1)").arg(pos),
+                               QString ("Add new branch to %1").arg(getName(bo)));     
+
+                       model->reposition();
+                       xelection.update();
+                       latestSelection=model->getSelectString(newbo);
+                       // In Network mode, the client needs to know where the new branch is,
+                       // so we have to pass on this information via saveState.
+                       // TODO: Get rid of this positioning workaround
+                       QString ps=qpointfToString (newbo->getAbsPos());
+                       sendData ("selectLatestAdded ()");
+                       sendData (QString("move %1").arg(ps));
+                       sendSelection();
+               }
+       }       
+       return newbo;
+}
+
+
+BranchObj* MapEditor::addNewBranchBefore()
+{
+       BranchObj *newbo=NULL;
+       BranchObj *bo = xelection.getBranch();
+       if (bo && xelection.type()==Selection::Branch)
+                // We accept no MapCenterObj here, so we _have_ a parent
+       {
+               QPointF p=bo->getRelPos();
+
+
+               BranchObj *parbo=(BranchObj*)(bo->getParObj());
+
+               // add below selection
+               newbo=parbo->insertBranch(bo->getNum()+1);
+               if (newbo)
+               {
+                       newbo->move2RelPos (p);
+
+                       // Move selection to new branch
+                       bo->linkTo (newbo,-1);
+
+                       saveState (newbo, "deleteKeepChilds ()", newbo, "addBranchBefore ()", 
+                               QString ("Add branch before %1").arg(getName(bo)));
+
+                       model->reposition();
+                       xelection.update();
+               }
+       }       
+       latestSelection=xelection.getSelectString();
+       return newbo;
+}
+
+void MapEditor::deleteSelection()
+{
+       BranchObj *bo = xelection.getBranch();
+       if (bo && xelection.type()==Selection::MapCenter)
+       {
+       //      BranchObj* par=(BranchObj*)(bo->getParObj());
+               xelection.unselect();
+       /* FIXME Note:  does saveStateRemovingPart work for MCO? (No parent!)
+               saveStateRemovingPart (bo, QString ("Delete %1").arg(getName(bo)));
+               */
+               bo=model->removeMapCenter ((MapCenterObj*)bo);
+               if (bo) 
+               {
+                       xelection.select (bo);
+                       ensureSelectionVisible();
+                       xelection.update();
+               }       
+               model->reposition();
+               return;
+       }
+       if (bo && xelection.type()==Selection::Branch)
+       {
+               BranchObj* par=(BranchObj*)bo->getParObj();
+               xelection.unselect();
+               saveStateRemovingPart (bo, QString ("Delete %1").arg(getName(bo)));
+               par->removeBranch(bo);
+               xelection.select (par);
+               ensureSelectionVisible();
+               model->reposition();
+//             xelection.update();
+               xelection.update();
+               return;
+       }
+       FloatImageObj *fio=xelection.getFloatImage();
+       if (fio)
+       {
+               BranchObj* par=(BranchObj*)fio->getParObj();
+               saveStateChangingPart(
+                       par, 
+                       fio,
+                       "delete ()",
+                       QString("Delete %1").arg(getName(fio))
+               );
+               xelection.unselect();
+               par->removeFloatImage(fio);
+               xelection.select (par);
+               model->reposition();
+               xelection.update();
+               ensureSelectionVisible();
+               return;
+       }
+}
+
+LinkableMapObj* MapEditor::getSelection()
+{
+       return xelection.single();
+}
+
+BranchObj* MapEditor::getSelectedBranch()
+{
+       return xelection.getBranch();
+}
+
+FloatImageObj* MapEditor::getSelectedFloatImage()
+{
+       return xelection.getFloatImage();
+}
+
+void MapEditor::unselect()
+{
+       xelection.unselect();
+}      
+
+void MapEditor::reselect()
+{
+       xelection.reselect();
+}      
+
+bool MapEditor::select (const QString &s)
+{
+       if (xelection.select(s))
+       {
+               xelection.update();
+               ensureSelectionVisible();
+               sendSelection ();
+               return true;
+       }
+       return false;
+}
+
+bool MapEditor::select (LinkableMapObj *lmo)
+{
+       if (xelection.select(lmo))
+       {
+               xelection.update();
+               ensureSelectionVisible();
+               sendSelection ();
+               return true;
+       }
+       return false;
+}
+
+QString MapEditor::getSelectString()
+{
+       return xelection.getSelectString();
+}
+
+void MapEditor::selectInt (LinkableMapObj *lmo)
+{
+       if (lmo && xelection.single()!= lmo && isSelectBlocked()==false )
+       {
+               xelection.select(lmo);
+               xelection.update();
+               sendSelection ();
+       }       
+}
+
+void MapEditor::selectNextBranchInt()
+{
+       // Increase number of branch
+       LinkableMapObj *sel=xelection.single();
+       if (sel)
+       {
+               QString s=xelection.getSelectString();
+               QString part;
+               QString typ;
+               QString num;
+
+               // Where am I? 
+               part=s.section(",",-1);
+               typ=part.left (3);
+               num=part.right(part.length() - 3);
+
+               s=s.left (s.length() -num.length());
+
+               // Go to next lmo
+               num=QString ("%1").arg(num.toUInt()+1);
+
+               s=s+num;
+               
+               // Try to select this one
+               if (select (s)) return;
+
+               // We have no direct successor, 
+               // try to increase the parental number in order to
+               // find a successor with same depth
+
+               int d=xelection.single()->getDepth();
+               int oldDepth=d;
+               int i;
+               bool found=false;
+               bool b;
+               while (!found && d>0)
+               {
+                       s=s.section (",",0,d-1);
+                       // replace substring of current depth in s with "1"
+                       part=s.section(",",-1);
+                       typ=part.left (3);
+                       num=part.right(part.length() - 3);
+
+                       if (d>1)
+                       {       
+                               // increase number of parent
+                               num=QString ("%1").arg(num.toUInt()+1);
+                               s=s.section (",",0,d-2) + ","+ typ+num;
+                       } else
+                       {
+                               // Special case, look at orientation
+                               if (xelection.single()->getOrientation()==LinkableMapObj::RightOfCenter)
+                                       num=QString ("%1").arg(num.toUInt()+1);
+                               else    
+                                       num=QString ("%1").arg(num.toUInt()-1);
+                               s=typ+num;
+                       }       
+
+                       if (select (s))
+                               // pad to oldDepth, select the first branch for each depth
+                               for (i=d;i<oldDepth;i++)
+                               {
+                                       b=select (s);
+                                       if (b)
+                                       {       
+                                               if ( xelection.getBranch()->countBranches()>0)
+                                                       s+=",bo:0";
+                                               else    
+                                                       break;
+                                       } else
+                                               break;
+                               }       
+
+                       // try to select the freshly built string
+                       found=select(s);
+                       d--;
+               }
+               return;
+       }       
+}
+
+void MapEditor::selectPrevBranchInt()
+{
+       // Decrease number of branch
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {
+               QString s=xelection.getSelectString();
+               QString part;
+               QString typ;
+               QString num;
+
+               // Where am I? 
+               part=s.section(",",-1);
+               typ=part.left (3);
+               num=part.right(part.length() - 3);
+
+               s=s.left (s.length() -num.length());
+
+               int n=num.toInt()-1;
+               
+               // Go to next lmo
+               num=QString ("%1").arg(n);
+               s=s+num;
+               
+               // Try to select this one
+               if (n>=0 && select (s)) return;
+
+               // We have no direct precessor, 
+               // try to decrease the parental number in order to
+               // find a precessor with same depth
+
+               int d=xelection.single()->getDepth();
+               int oldDepth=d;
+               int i;
+               bool found=false;
+               bool b;
+               while (!found && d>0)
+               {
+                       s=s.section (",",0,d-1);
+                       // replace substring of current depth in s with "1"
+                       part=s.section(",",-1);
+                       typ=part.left (3);
+                       num=part.right(part.length() - 3);
+
+                       if (d>1)
+                       {
+                               // decrease number of parent
+                               num=QString ("%1").arg(num.toInt()-1);
+                               s=s.section (",",0,d-2) + ","+ typ+num;
+                       } else
+                       {
+                               // Special case, look at orientation
+                               if (xelection.single()->getOrientation()==LinkableMapObj::RightOfCenter)
+                                       num=QString ("%1").arg(num.toInt()-1);
+                               else    
+                                       num=QString ("%1").arg(num.toInt()+1);
+                               s=typ+num;
+                       }       
+
+                       if (select(s))
+                               // pad to oldDepth, select the last branch for each depth
+                               for (i=d;i<oldDepth;i++)
+                               {
+                                       b=select (s);
+                                       if (b)
+                                               if ( xelection.getBranch()->countBranches()>0)
+                                                       s+=",bo:"+ QString ("%1").arg( xelection.getBranch()->countBranches()-1 );
+                                               else    
+                                                       break;
+                                       else
+                                               break;
+                               }       
+                       
+                       // try to select the freshly built string
+                       found=select(s);
+                       d--;
+               }
+               return;
+       }       
+}
+
+void MapEditor::selectUpperBranch()
+{
+       if (isSelectBlocked() ) return;
+
+       BranchObj *bo=xelection.getBranch();
+       if (bo && xelection.type()==Selection::Branch)
+       {
+               if (bo->getOrientation()==LinkableMapObj::RightOfCenter)
+                       selectPrevBranchInt();
+               else
+                       if (bo->getDepth()==1)
+                               selectNextBranchInt();
+                       else
+                               selectPrevBranchInt();
+       }
+}
+
+void MapEditor::selectLowerBranch()
+{
+       if (isSelectBlocked() ) return;
+
+       BranchObj *bo=xelection.getBranch();
+       if (bo && xelection.type()==Selection::Branch)
+       {
+               if (bo->getOrientation()==LinkableMapObj::RightOfCenter)
+                       selectNextBranchInt();
+               else
+                       if (bo->getDepth()==1)
+                               selectPrevBranchInt();
+                       else
+                               selectNextBranchInt();
+       }                       
+}
+
+
+void MapEditor::selectLeftBranch()
+{
+       if (isSelectBlocked() ) return;
+
+       BranchObj* bo;
+       BranchObj* par;
+       LinkableMapObj *sel=xelection.single();
+       if (sel)
+       {
+               if (xelection.type()== Selection::MapCenter)
+               {
+                       par=xelection.getBranch();
+                       bo=par->getLastSelectedBranch();
+                       if (bo)
+                       {
+                               // Workaround for reselecting on left and right side
+                               if (bo->getOrientation()==LinkableMapObj::RightOfCenter)
+                                       bo=par->getLastBranch();
+                               if (bo)
+                               {
+                                       bo=par->getLastBranch();
+                                       xelection.select(bo);
+                                       xelection.update();
+                                       ensureSelectionVisible();
+                                       sendSelection();
+                               }
+                       }       
+               } else
+               {
+                       par=(BranchObj*)(sel->getParObj());
+                       if (sel->getOrientation()==LinkableMapObj::RightOfCenter)
+                       {
+                               if (xelection.type() == Selection::Branch ||
+                                       xelection.type() == Selection::FloatImage)
+                               {
+                                       xelection.select(par);
+                                       xelection.update();
+                                       ensureSelectionVisible();
+                                       sendSelection();
+                               }
+                       } else
+                       {
+                               if (xelection.type() == Selection::Branch )
+                               {
+                                       bo=xelection.getBranch()->getLastSelectedBranch();
+                                       if (bo) 
+                                       {
+                                               xelection.select(bo);
+                                               xelection.update();
+                                               ensureSelectionVisible();
+                                       sendSelection();
+                                       }
+                               }
+                       }
+               }       
+       }
+}
+
+void MapEditor::selectRightBranch()
+{
+       if (isSelectBlocked() ) return;
+
+       BranchObj* bo;
+       BranchObj* par;
+       LinkableMapObj *sel=xelection.single();
+       if (sel)
+       {
+               if (xelection.type()==Selection::MapCenter) 
+               {
+                       par=xelection.getBranch();
+                       bo=par->getLastSelectedBranch();
+                       if (bo)
+                       {
+                               // Workaround for reselecting on left and right side
+                               if (bo->getOrientation()==LinkableMapObj::LeftOfCenter)
+                                       bo=par->getFirstBranch();
+                               if (bo)
+                               {
+                                       xelection.select(bo);
+                                       xelection.update();
+                                       ensureSelectionVisible();
+                                       sendSelection();
+                               }
+                       }
+               } else
+               {
+                       par=(BranchObj*)(xelection.single()->getParObj());
+                       if (xelection.single()->getOrientation()==LinkableMapObj::LeftOfCenter)
+                       {
+                               if (xelection.type() == Selection::Branch ||
+                                       xelection.type() == Selection::FloatImage)
+                               {
+                                       xelection.select(par);
+                                       xelection.update();
+                                       ensureSelectionVisible();
+                                       sendSelection();
+                               }
+                       } else
+                       {
+                               if (xelection.type()  == Selection::Branch) 
+                               {
+                                       bo=xelection.getBranch()->getLastSelectedBranch();
+                                       if (bo) 
+                                       {
+                                               xelection.select(bo);
+                                               xelection.update();
+                                               ensureSelectionVisible();
+                                       sendSelection();
+                                       }
+                               }
+                       }
+               }
+       }
+}
+
+void MapEditor::selectFirstBranch()
+{
+       BranchObj *bo1=xelection.getBranch();
+       BranchObj *bo2;
+       BranchObj* par;
+       if (bo1)
+       {
+               par=(BranchObj*)(bo1->getParObj());
+               if (!par) return;
+               bo2=par->getFirstBranch();
+               if (bo2) {
+                       xelection.select(bo2);
+                       xelection.update();
+                       ensureSelectionVisible();
+                       sendSelection();
+               }
+       }               
+}
+
+void MapEditor::selectLastBranch()
+{
+       BranchObj *bo1=xelection.getBranch();
+       BranchObj *bo2;
+       BranchObj* par;
+       if (bo1)
+       {
+               par=(BranchObj*)(bo1->getParObj());
+               if (!par) return;
+               bo2=par->getLastBranch();
+               if (bo2) 
+               {
+                       xelection.select(bo2);
+                       xelection.update();
+                       ensureSelectionVisible();
+                       sendSelection();
+               }
+       }               
+}
+
+void MapEditor::selectMapBackgroundImage ()
+{
+        QFileDialog *fd=new QFileDialog( this);
+        fd->setMode (QFileDialog::ExistingFile);
+        //fd->addFilter (QString (tr("Images") + " (*.png *.bmp *.xbm *.jpg *.png *.xpm *.gif *.pnm)"));
+        QStringList filters = fd->filters();
+        filters << tr("Images  (*.png *.bmp *.xbm *.jpg *.png *.xpm *.gif *.pnm)");
+        fd->setFilters(filters);
+        //ImagePreview *p =new ImagePreview (fd);
+        //fd->setContentsPreviewEnabled( TRUE );
+        //fd->setContentsPreview( p, p );
+        //fd->setPreviewMode( Q3FileDialog::Contents );
+       fd->setCaption(vymName+" - " +tr("Load background image"));
+       fd->setDir (lastImageDir);
+       fd->show();
+
+       if ( fd->exec() == QDialog::Accepted )
+       {
+               // TODO selectMapBackgroundImg in QT4 use:      lastImageDir=fd->directory();
+                lastImageDir=QDir (fd->directory().path());
+               setMapBackgroundImage (fd->selectedFile());
+       }
+}      
+
+void MapEditor::setMapBackgroundImage (const QString &fn)      //FIXME missing savestate
+{
+       QColor oldcol=mapScene->backgroundBrush().color();
+       /*
+       saveState(
+               selection,
+               QString ("setMapBackgroundImage (%1)").arg(oldcol.name()),
+               selection,
+               QString ("setMapBackgroundImage (%1)").arg(col.name()),
+               QString("Set background color of map to %1").arg(col.name()));
+       */      
+       QBrush brush;
+       brush.setTextureImage (QPixmap (fn));
+       mapScene->setBackgroundBrush(brush);
+}
+
+void MapEditor::selectMapBackgroundColor()
+{
+       QColor col = QColorDialog::getColor( mapScene->backgroundBrush().color(), this );
+       if ( !col.isValid() ) return;
+       setMapBackgroundColor( col );
+}
+
+
+void MapEditor::setMapBackgroundColor(QColor col)
+{
+       QColor oldcol=mapScene->backgroundBrush().color();
+       saveState(
+               QString ("setMapBackgroundColor (\"%1\")").arg(oldcol.name()),
+               QString ("setMapBackgroundColor (\"%1\")").arg(col.name()),
+               QString("Set background color of map to %1").arg(col.name()));
+       mapScene->setBackgroundBrush(col);
+}
+
+QColor MapEditor::getMapBackgroundColor()
+{
+    return mapScene->backgroundBrush().color();
+}
+
+QColor MapEditor::getCurrentHeadingColor()
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo) return bo->getColor(); 
+       
+       QMessageBox::warning(0,tr("Warning"),tr("Can't get color of heading,\nthere's no branch selected"));
+       return Qt::black;
+}
+
+void MapEditor::colorBranch (QColor c)
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {
+               saveState(
+                       bo, 
+                       QString ("colorBranch (\"%1\")").arg(bo->getColor().name()),
+                       bo,
+                       QString ("colorBranch (\"%1\")").arg(c.name()),
+                       QString("Set color of %1 to %2").arg(getName(bo)).arg(c.name())
+               );      
+               bo->setColor(c); // color branch
+       }
+}
+
+void MapEditor::colorSubtree (QColor c)
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo) 
+       {
+               saveStateChangingPart(
+                       bo, 
+                       bo,
+                       QString ("colorSubtree (\"%1\")").arg(c.name()),
+                       QString ("Set color of %1 and childs to %2").arg(getName(bo)).arg(c.name())
+               );      
+               bo->setColorSubtree (c); // color links, color childs
+       }
+}
+
+
+void MapEditor::toggleStandardFlag(QString f)
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo) 
+       {
+               QString u,r;
+               if (bo->isSetStandardFlag(f))
+               {
+                       r="unsetFlag";
+                       u="setFlag";
+               }       
+               else
+               {
+                       u="unsetFlag";
+                       r="setFlag";
+               }       
+               saveState(
+                       bo,
+                       QString("%1 (\"%2\")").arg(u).arg(f), 
+                       bo,
+                       QString("%1 (\"%2\")").arg(r).arg(f),
+                       QString("Toggling standard flag \"%1\" of %2").arg(f).arg(getName(bo)));
+               bo->toggleStandardFlag (f,mainWindow->useFlagGroups());
+               xelection.update();
+       }
+}
+
+
+BranchObj* MapEditor::findText (QString s, bool cs)
+{
+       QTextDocument::FindFlags flags=0;
+       if (cs) flags=QTextDocument::FindCaseSensitively;
+
+       if (!itFind) 
+       {       // Nothing found or new find process
+               if (EOFind)
+                       // nothing found, start again
+                       EOFind=false;
+               itFind=model->first();
+       }       
+       bool searching=true;
+       bool foundNote=false;
+       while (searching && !EOFind)
+       {
+               if (itFind)
+               {
+                       // Searching in Note
+                       if (itFind->getNote().contains(s,cs))
+                       {
+                               if (xelection.single()!=itFind) 
+                               {
+                                       xelection.select(itFind);
+                                       ensureSelectionVisible();
+                               }
+                               if (textEditor->findText(s,flags)) 
+                               {
+                                       searching=false;
+                                       foundNote=true;
+                               }       
+                       }
+                       // Searching in Heading
+                       if (searching && itFind->getHeading().contains (s,cs) ) 
+                       {
+                               xelection.select(itFind);
+                               ensureSelectionVisible();
+                               searching=false;
+                       }
+               }       
+               if (!foundNote)
+               {
+                       itFind=model->next(itFind);
+                       if (!itFind) EOFind=true;
+               }
+       //cout <<"still searching...  "<<qPrintable( itFind->getHeading())<<endl;
+       }       
+       if (!searching)
+               return xelection.getBranch();
+       else
+               return NULL;
+}
+
+void MapEditor::findReset()
+{      // Necessary if text to find changes during a find process
+       itFind=NULL;
+       EOFind=false;
+}
+void MapEditor::setURL(const QString &url)
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {
+               QString oldurl=bo->getURL();
+               bo->setURL (url);
+               saveState (
+                       bo,
+                       QString ("setURL (\"%1\")").arg(oldurl),
+                       bo,
+                       QString ("setURL (\"%1\")").arg(url),
+                       QString ("set URL of %1 to %2").arg(getName(bo)).arg(url)
+               );
+               updateActions();
+               model->reposition();
+               xelection.update();
+               ensureSelectionVisible();
+       }
+}      
+
+void MapEditor::editURL()
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {               
+               bool ok;
+               QString text = QInputDialog::getText(
+                               "VYM", tr("Enter URL:"), QLineEdit::Normal,
+                               bo->getURL(), &ok, this );
+               if ( ok) 
+                       // user entered something and pressed OK
+                       setURL (text);
+       }
+}
+
+void MapEditor::editLocalURL()
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {               
+               QStringList filters;
+               filters <<"All files (*)";
+               filters << tr("Text","Filedialog") + " (*.txt)";
+               filters << tr("Spreadsheet","Filedialog") + " (*.odp,*.sxc)";
+               filters << tr("Textdocument","Filedialog") +" (*.odw,*.sxw)";
+               filters << tr("Images","Filedialog") + " (*.png *.bmp *.xbm *.jpg *.png *.xpm *.gif *.pnm)";
+               QFileDialog *fd=new QFileDialog( this,vymName+" - " +tr("Set URL to a local file"));
+               fd->setFilters (filters);
+               fd->setCaption(vymName+" - " +tr("Set URL to a local file"));
+               fd->setDirectory (lastFileDir);
+               if (! bo->getVymLink().isEmpty() )
+                       fd->selectFile( bo->getURL() );
+               fd->show();
+
+               if ( fd->exec() == QDialog::Accepted )
+               {
+                       lastFileDir=QDir (fd->directory().path());
+                       setURL (fd->selectedFile() );
+               }
+       }
+}
+
+QString MapEditor::getURL()
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+               return bo->getURL();
+       else
+               return "";
+}
+
+QStringList MapEditor::getURLs()
+{
+       QStringList urls;
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {               
+               bo=bo->first(); 
+               while (bo) 
+               {
+                       if (!bo->getURL().isEmpty()) urls.append( bo->getURL());
+                       bo=bo->next();
+               }       
+       }       
+       return urls;
+}
+
+
+void MapEditor::editHeading2URL()
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+               setURL (bo->getHeading());
+}      
+
+void MapEditor::editBugzilla2URL()
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {               
+               QString url= "https://bugzilla.novell.com/show_bug.cgi?id="+bo->getHeading();
+               setURL (url);
+       }
+}      
+
+void MapEditor::editFATE2URL()
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {               
+               QString url= "http://keeper.suse.de:8080/webfate/match/id?value=ID"+bo->getHeading();
+               saveState(
+                       bo,
+                       "setURL (\""+bo->getURL()+"\")",
+                       bo,
+                       "setURL (\""+url+"\")",
+                       QString("Use heading of %1 as link to FATE").arg(getName(bo))
+               );      
+               bo->setURL (url);
+               updateActions();
+       }
+}      
+
+void MapEditor::editVymLink()
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {               
+               QStringList filters;
+               filters <<"VYM map (*.vym)";
+               QFileDialog *fd=new QFileDialog( this,vymName+" - " +tr("Link to another map"));
+               fd->setFilters (filters);
+               fd->setCaption(vymName+" - " +tr("Link to another map"));
+               fd->setDirectory (lastFileDir);
+               if (! bo->getVymLink().isEmpty() )
+                       fd->selectFile( bo->getVymLink() );
+               fd->show();
+
+               QString fn;
+               if ( fd->exec() == QDialog::Accepted )
+               {
+                       lastFileDir=QDir (fd->directory().path());
+                       saveState(
+                               bo,
+                               "setVymLink (\""+bo->getVymLink()+"\")",
+                               bo,
+                               "setVymLink (\""+fd->selectedFile()+"\")",
+                               QString("Set vymlink of %1 to %2").arg(getName(bo)).arg(fd->selectedFile())
+                       );      
+                       setVymLinkInt (fd->selectedFile() );
+               }
+       }
+}
+
+void MapEditor::deleteVymLink()
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {               
+               saveState(
+                       bo,
+                       "setVymLink (\""+bo->getVymLink()+"\")",
+                       bo,
+                       "setVymLink (\"\")",
+                       QString("Unset vymlink of %1").arg(getName(bo))
+               );      
+               bo->setVymLink ("" );
+               updateActions();
+               model->reposition();
+               scene()->update();
+       }
+}
+
+void MapEditor::setHideExport(bool b)
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {
+               bo->setHideInExport (b);
+               QString u= b ? "false" : "true";
+               QString r=!b ? "false" : "true";
+               
+               saveState(
+                       bo,
+                       QString ("setHideExport (%1)").arg(u),
+                       bo,
+                       QString ("setHideExport (%1)").arg(r),
+                       QString ("Set HideExport flag of %1 to %2").arg(getName(bo)).arg (r)
+               );      
+               updateActions();
+               model->reposition();
+               xelection.update();
+               scene()->update();
+       }
+}
+
+void MapEditor::toggleHideExport()
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+               setHideExport ( !bo->hideInExport() );
+}
+
+QString MapEditor::getVymLink()
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+               return bo->getVymLink();
+       else    
+               return "";
+       
+}
+
+QStringList MapEditor::getVymLinks()
+{
+       QStringList links;
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {               
+               bo=bo->first(); 
+               while (bo) 
+               {
+                       if (!bo->getVymLink().isEmpty()) links.append( bo->getVymLink());
+                       bo=bo->next();
+               }       
+       }       
+       return links;
+}
+
+
+void MapEditor::deleteKeepChilds()
+{
+       BranchObj *bo=xelection.getBranch();
+       BranchObj *par;
+       if (bo)
+       {
+               par=(BranchObj*)(bo->getParObj());
+
+               // Don't use this on mapcenter
+               if (!par) return;
+
+               // Check if we have childs at all to keep
+               if (bo->countBranches()==0) 
+               {
+                       deleteSelection();
+                       return;
+               }
+
+               QPointF p=bo->getRelPos();
+               saveStateChangingPart(
+                       bo->getParObj(),
+                       bo,
+                       "deleteKeepChilds ()",
+                       QString("Remove %1 and keep its childs").arg(getName(bo))
+               );
+
+               QString sel=model->getSelectString(bo);
+               unselect();
+               par->removeBranchHere(bo);
+               model->reposition();
+               select (sel);
+               xelection.getBranch()->move2RelPos (p);
+               model->reposition();
+       }       
+}
+
+void MapEditor::deleteChilds()
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {               
+               saveStateChangingPart(
+                       bo, 
+                       bo,
+                       "deleteChilds ()",
+                       QString( "Remove childs of branch %1").arg(getName(bo))
+               );
+               bo->removeChilds();
+               model->reposition();
+       }       
+}
+
+void MapEditor::editMapInfo()
+{
+       ExtraInfoDialog dia;
+       dia.setMapName (getFileName() );
+       dia.setAuthor (model->getAuthor() );
+       dia.setComment(model->getComment() );
+
+       // Calc some stats
+       QString stats;
+    stats+=tr("%1 items on map\n","Info about map").arg (mapScene->items().size(),6);
+
+       uint b=0;
+       uint f=0;
+       uint n=0;
+       uint xl=0;
+       BranchObj *bo;
+       bo=model->first();
+       while (bo) 
+       {
+               if (!bo->getNote().isEmpty() ) n++;
+               f+= bo->countFloatImages();
+               b++;
+               xl+=bo->countXLinks();
+               bo=model->next(bo);
+       }
+    stats+=QString ("%1 branches\n").arg (b-1,6);
+    stats+=QString ("%1 xLinks \n").arg (xl,6);
+    stats+=QString ("%1 notes\n").arg (n,6);
+    stats+=QString ("%1 images\n").arg (f,6);
+       dia.setStats (stats);
+
+       // Finally show dialog
+       if (dia.exec() == QDialog::Accepted)
+       {
+               setMapAuthor (dia.getAuthor() );
+               setMapComment (dia.getComment() );
+       }
+}
+
+void MapEditor::ensureSelectionVisible()
+{
+       LinkableMapObj *lmo=xelection.single();
+       if (lmo) ensureVisible (lmo->getBBox() );
+       
+}
+
+void MapEditor::updateSelection()
+{
+       // Tell selection to update geometries
+       xelection.update();
+}
+
+void MapEditor::updateActions()
+{
+       // Tell mainwindow to update states of actions
+       mainWindow->updateActions();
+       // TODO maybe don't update if blockReposition is set
+}
+
+void MapEditor::updateNoteFlag()
+{
+       setChanged();
+       BranchObj *bo=xelection.getBranch();
+       if (bo) 
+       {
+               bo->updateNoteFlag();
+               mainWindow->updateActions();
+       }       
+}
+
+void MapEditor::setMapAuthor (const QString &s)
+{
+       saveState (
+               QString ("setMapAuthor (\"%1\")").arg(model->getAuthor()),
+               QString ("setMapAuthor (\"%1\")").arg(s),
+               QString ("Set author of map to \"%1\"").arg(s)
+       );
+       model->setAuthor (s);
+}
+
+void MapEditor::setMapComment (const QString &s)
+{
+       saveState (
+               QString ("setMapComment (\"%1\")").arg(model->getComment()),
+               QString ("setMapComment (\"%1\")").arg(s),
+               QString ("Set comment of map")
+       );
+       model->setComment (s);
+}
+
+void MapEditor::setMapLinkStyle (const QString & s)
+{
+       QString snow;
+       if (linkstyle==LinkableMapObj::Line)
+               snow="StyleLine";
+       else if (linkstyle==LinkableMapObj::Parabel)
+               snow="StyleParabel";
+       else if (linkstyle==LinkableMapObj::PolyLine)
+               snow="StylePolyLine";
+       else if (linkstyle==LinkableMapObj::PolyParabel)
+               snow="StyleParabel";
+
+       saveState (
+               QString("setMapLinkStyle (\"%1\")").arg(s),
+               QString("setMapLinkStyle (\"%1\")").arg(snow),
+               QString("Set map link style (\"%1\")").arg(s)
+       );      
+
+       if (s=="StyleLine")
+               linkstyle=LinkableMapObj::Line;
+       else if (s=="StyleParabel")
+               linkstyle=LinkableMapObj::Parabel;
+       else if (s=="StylePolyLine")
+               linkstyle=LinkableMapObj::PolyLine;
+       else    
+               linkstyle=LinkableMapObj::PolyParabel;
+
+       BranchObj *bo;
+       bo=model->first();
+       bo=model->next(bo);
+       while (bo) 
+       {
+               bo->setLinkStyle(bo->getDefLinkStyle());
+               bo=model->next(bo);
+       }
+       model->reposition();
+}
+
+LinkableMapObj::Style MapEditor::getMapLinkStyle ()
+{
+       return linkstyle;
+}      
+
+void MapEditor::setMapDefLinkColor(QColor c)
+{
+       defLinkColor=c;
+       BranchObj *bo;
+       bo=model->first();
+       while (bo) 
+       {
+               bo->setLinkColor();
+               bo=model->next(bo);
+       }
+       updateActions();
+}
+
+void MapEditor::setMapLinkColorHintInt()
+{
+       // called from setMapLinkColorHint(lch) or at end of parse
+       BranchObj *bo;
+       bo=model->first();
+       while (bo) 
+       {
+               bo->setLinkColor();
+               bo=model->next(bo);
+       }
+}
+
+void MapEditor::setMapLinkColorHint(LinkableMapObj::ColorHint lch)
+{
+       linkcolorhint=lch;
+       setMapLinkColorHintInt();
+}
+
+void MapEditor::toggleMapLinkColorHint()
+{
+       if (linkcolorhint==LinkableMapObj::HeadingColor)
+               linkcolorhint=LinkableMapObj::DefaultColor;
+       else    
+               linkcolorhint=LinkableMapObj::HeadingColor;
+       BranchObj *bo;
+       bo=model->first();
+       while (bo) 
+       {
+               bo->setLinkColor();
+               bo=model->next(bo);
+       }
+}
+
+LinkableMapObj::ColorHint MapEditor::getMapLinkColorHint()
+{
+       return linkcolorhint;
+}
+
+QColor MapEditor::getMapDefLinkColor()
+{
+       return defLinkColor;
+}
+
+void MapEditor::setMapDefXLinkColor(QColor col)
+{
+       defXLinkColor=col;
+}
+
+QColor MapEditor::getMapDefXLinkColor()
+{
+       return defXLinkColor;
+}
+
+void MapEditor::setMapDefXLinkWidth (int w)
+{
+       defXLinkWidth=w;
+}
+
+int MapEditor::getMapDefXLinkWidth()
+{
+       return defXLinkWidth;
+}
+
+void MapEditor::selectMapLinkColor()
+{
+       QColor col = QColorDialog::getColor( defLinkColor, this );
+       if ( !col.isValid() ) return;
+       saveState (
+               QString("setMapDefLinkColor (\"%1\")").arg(getMapDefLinkColor().name()),
+               QString("setMapDefLinkColor (\"%1\")").arg(col.name()),
+               QString("Set map link color to %1").arg(col.name())
+       );
+       setMapDefLinkColor( col );
+}
+
+void MapEditor::selectMapSelectionColor()
+{
+       QColor col = QColorDialog::getColor( defLinkColor, this );
+       setSelectionColor (col);
+}
+
+void MapEditor::setSelectionColorInt (QColor col)
+{
+       if ( !col.isValid() ) return;
+       xelection.setColor (col);
+}
+
+void MapEditor::setSelectionColor(QColor col)
+{
+       if ( !col.isValid() ) return;
+       saveState (
+               QString("setSelectionColor (%1)").arg(xelection.getColor().name()),
+               QString("setSelectionColor (%1)").arg(col.name()),
+               QString("Set color of selection box to %1").arg(col.name())
+       );
+       setSelectionColorInt (col);
+}
+
+QColor MapEditor::getSelectionColor()
+{
+       return xelection.getColor();
+}
+
+bool MapEditor::scrollBranch(BranchObj *bo)
+{
+       if (bo)
+       {
+               if (bo->isScrolled()) return false;
+               if (bo->countBranches()==0) return false;
+               if (bo->getDepth()==0) return false;
+               QString u,r;
+               r="scroll";
+               u="unscroll";
+               saveState(
+                       bo,
+                       QString ("%1 ()").arg(u),
+                       bo,
+                       QString ("%1 ()").arg(r),
+                       QString ("%1 %2").arg(r).arg(getName(bo))
+               );
+               bo->toggleScroll();
+               xelection.update();
+               scene()->update();
+               return true;
+       }       
+       return false;
+}
+
+bool MapEditor::unscrollBranch(BranchObj *bo)
+{
+       if (bo)
+       {
+               if (!bo->isScrolled()) return false;
+               if (bo->countBranches()==0) return false;
+               if (bo->getDepth()==0) return false;
+               QString u,r;
+               u="scroll";
+               r="unscroll";
+               saveState(
+                       bo,
+                       QString ("%1 ()").arg(u),
+                       bo,
+                       QString ("%1 ()").arg(r),
+                       QString ("%1 %2").arg(r).arg(getName(bo))
+               );
+               bo->toggleScroll();
+               xelection.update();
+               scene()->update();
+               return true;
+       }       
+       return false;
+}
+
+void MapEditor::toggleScroll()
+{
+       BranchObj *bo=xelection.getBranch();
+       if (xelection.type()==Selection::Branch )
+       {
+               if (bo->isScrolled())
+                       unscrollBranch (bo);
+               else
+                       scrollBranch (bo);
+       }
+}
+
+void MapEditor::unscrollChilds() 
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {
+               bo->first();
+               while (bo) 
+               {
+                       if (bo->isScrolled()) unscrollBranch (bo);
+                       bo=bo->next();
+               }
+       }       
+}
+
+FloatImageObj* MapEditor::loadFloatImageInt (QString fn)
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {
+               FloatImageObj *fio;
+               bo->addFloatImage();
+               fio=bo->getLastFloatImage();
+               fio->load(fn);
+               model->reposition();
+               scene()->update();
+               return fio;
+       }
+       return NULL;
+}      
+
+void MapEditor::loadFloatImage ()
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {
+
+                QFileDialog *fd=new QFileDialog( this);
+                fd->setMode (QFileDialog::ExistingFiles);
+                //fd->addFilter (QString (tr("Images") + " (*.png *.bmp *.xbm *.jpg *.png *.xpm *.gif *.pnm)"));
+                QStringList filters = fd->filters();
+                filters << tr("Images (*.png *.bmp *.xbm *.jpg *.png *.xpm *.gif *.pnm)");
+                fd->setFilters(filters);
+                //ImagePreview *p =new ImagePreview (fd);
+                //fd->setContentsPreviewEnabled( TRUE );
+                //fd->setContentsPreview( p, p );
+                //fd->setPreviewMode( Q3FileDialog::Contents );
+               fd->setCaption(vymName+" - " +tr("Load image"));
+               fd->setDir (lastImageDir);
+               fd->show();
+
+               if ( fd->exec() == QDialog::Accepted )
+               {
+                       // TODO loadFIO in QT4 use:     lastImageDir=fd->directory();
+                        lastImageDir=QDir (fd->directory().path());
+                       QString s;
+                       FloatImageObj *fio;
+                       for (int j=0; j<fd->selectedFiles().count(); j++)
+                       {
+                               s=fd->selectedFiles().at(j);
+                               fio=loadFloatImageInt (s);
+                               if (fio)
+                                       saveState(
+                                               (LinkableMapObj*)fio,
+                                               "delete ()",
+                                               bo, 
+                                               QString ("loadImage (%1)").arg(s ),
+                                               QString("Add image %1 to %2").arg(s).arg(getName(bo))
+                                       );
+                               else
+                                       // TODO loadFIO error handling
+                                       qWarning ("Failed to load "+s);
+                       }
+               }
+                //delete (p);
+               delete (fd);
+       }
+}
+
+void MapEditor::saveFloatImageInt  (FloatImageObj *fio, const QString &type, const QString &fn)
+{
+       fio->save (fn,type);
+}
+
+void MapEditor::saveFloatImage ()
+{
+       FloatImageObj *fio=xelection.getFloatImage();
+       if (fio)
+       {
+               QFileDialog *fd=new QFileDialog( this);
+               fd->setFilters (imageIO.getFilters());
+               fd->setCaption(vymName+" - " +tr("Save image"));
+               fd->setFileMode( QFileDialog::AnyFile );
+               fd->setDirectory (lastImageDir);
+//             fd->setSelection (fio->getOriginalFilename());
+               fd->show();
+
+               QString fn;
+               if ( fd->exec() == QDialog::Accepted && fd->selectedFiles().count()==1)
+               {
+                       fn=fd->selectedFiles().at(0);
+                       if (QFile (fn).exists() )
+                       {
+                               QMessageBox mb( vymName,
+                                       tr("The file %1 exists already.\n"
+                                       "Do you want to overwrite it?").arg(fn),
+                               QMessageBox::Warning,
+                               QMessageBox::Yes | QMessageBox::Default,
+                               QMessageBox::Cancel | QMessageBox::Escape,
+                               QMessageBox::NoButton );
+
+                               mb.setButtonText( QMessageBox::Yes, tr("Overwrite") );
+                               mb.setButtonText( QMessageBox::No, tr("Cancel"));
+                               switch( mb.exec() ) 
+                               {
+                                       case QMessageBox::Yes:
+                                               // save 
+                                               break;
+                                       case QMessageBox::Cancel:
+                                               // do nothing
+                                               delete (fd);
+                                               return;
+                                               break;
+                               }
+                       }
+                       saveFloatImageInt (fio,fd->selectedFilter(),fn );
+               }
+               delete (fd);
+       }
+}
+
+void MapEditor::setFrameType(const FrameObj::FrameType &t)
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {
+               QString s=bo->getFrameTypeName();
+               bo->setFrameType (t);
+               saveState (bo, QString("setFrameType (\"%1\")").arg(s),
+                       bo, QString ("setFrameType (\"%1\")").arg(bo->getFrameTypeName()),QString ("set type of frame to %1").arg(s));
+               model->reposition();
+               bo->updateLink();
+       }
+}
+
+void MapEditor::setFrameType(const QString &s) 
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {
+               saveState (bo, QString("setFrameType (\"%1\")").arg(bo->getFrameTypeName()),
+                       bo, QString ("setFrameType (\"%1\")").arg(s),QString ("set type of frame to %1").arg(s));
+               bo->setFrameType (s);
+               model->reposition();
+               bo->updateLink();
+       }
+}
+
+void MapEditor::setFramePenColor(const QColor &c)      
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {
+               saveState (bo, QString("setFramePenColor (\"%1\")").arg(bo->getFramePenColor().name() ),
+                       bo, QString ("setFramePenColor (\"%1\")").arg(c.name() ),QString ("set pen color of frame to %1").arg(c.name() ));
+               bo->setFramePenColor (c);
+       }       
+}
+
+void MapEditor::setFrameBrushColor(const QColor &c)    
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {
+               saveState (bo, QString("setFrameBrushColor (\"%1\")").arg(bo->getFrameBrushColor().name() ),
+                       bo, QString ("setFrameBrushColor (\"%1\")").arg(c.name() ),QString ("set brush color of frame to %1").arg(c.name() ));
+               bo->setFrameBrushColor (c);
+       }       
+}
+
+void MapEditor::setFramePadding (const int &i)
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {
+               saveState (bo, QString("setFramePadding (\"%1\")").arg(bo->getFramePadding() ),
+                       bo, QString ("setFramePadding (\"%1\")").arg(i),QString ("set brush color of frame to %1").arg(i));
+               bo->setFramePadding (i);
+               model->reposition();
+               bo->updateLink();
+       }       
+}
+
+void MapEditor::setFrameBorderWidth(const int &i)
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {
+               saveState (bo, QString("setFrameBorderWidth (\"%1\")").arg(bo->getFrameBorderWidth() ),
+                       bo, QString ("setFrameBorderWidth (\"%1\")").arg(i),QString ("set border width of frame to %1").arg(i));
+               bo->setFrameBorderWidth (i);
+               model->reposition();
+               bo->updateLink();
+       }       
+}
+
+void MapEditor::setIncludeImagesVer(bool b)    
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {
+               QString u= b ? "false" : "true";
+               QString r=!b ? "false" : "true";
+               
+               saveState(
+                       bo,
+                       QString("setIncludeImagesVertically (%1)").arg(u),
+                       bo, 
+                       QString("setIncludeImagesVertically (%1)").arg(r),
+                       QString("Include images vertically in %1").arg(getName(bo))
+               );      
+               bo->setIncludeImagesVer(b);
+               model->reposition();
+       }       
+}
+
+void MapEditor::setIncludeImagesHor(bool b)    
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {
+               QString u= b ? "false" : "true";
+               QString r=!b ? "false" : "true";
+               
+               saveState(
+                       bo,
+                       QString("setIncludeImagesHorizontally (%1)").arg(u),
+                       bo, 
+                       QString("setIncludeImagesHorizontally (%1)").arg(r),
+                       QString("Include images horizontally in %1").arg(getName(bo))
+               );      
+               bo->setIncludeImagesHor(b);
+               model->reposition();
+       }       
+}
+
+void MapEditor::setHideLinkUnselected (bool b)
+{
+       LinkableMapObj *sel=xelection.single();
+       if (sel &&
+               (xelection.type() == Selection::Branch || 
+               xelection.type() == Selection::MapCenter  ||
+               xelection.type() == Selection::FloatImage ))
+       {
+               QString u= b ? "false" : "true";
+               QString r=!b ? "false" : "true";
+               
+               saveState(
+                       sel,
+                       QString("setHideLinkUnselected (%1)").arg(u),
+                       sel, 
+                       QString("setHideLinkUnselected (%1)").arg(r),
+                       QString("Hide link of %1 if unselected").arg(getName(sel))
+               );      
+               sel->setHideLinkUnselected(b);
+       }
+}
+
+void MapEditor::importDirInt(BranchObj *dst, QDir d)
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {
+               // Traverse directories
+               d.setFilter( QDir::Dirs| QDir::Hidden | QDir::NoSymLinks );
+               QFileInfoList list = d.entryInfoList();
+               QFileInfo fi;
+
+               for (int i = 0; i < list.size(); ++i) 
+               {
+                       fi=list.at(i);
+                       if (fi.fileName() != "." && fi.fileName() != ".." )
+                       {
+                               dst->addBranch();
+                               bo=dst->getLastBranch();
+                               bo->setHeading (fi.fileName() );
+                               bo->setColor (QColor("blue"));
+                               bo->toggleScroll();
+                               if ( !d.cd(fi.fileName()) ) 
+                                       QMessageBox::critical (0,tr("Critical Import Error"),tr("Cannot find the directory %1").arg(fi.fileName()));
+                               else 
+                               {
+                                       // Recursively add subdirs
+                                       importDirInt (bo,d);
+                                       d.cdUp();
+                               }
+                       }       
+               }               
+               // Traverse files
+               d.setFilter( QDir::Files| QDir::Hidden | QDir::NoSymLinks );
+               list = d.entryInfoList();
+
+               for (int i = 0; i < list.size(); ++i) 
+               {
+                       fi=list.at(i);
+                       dst->addBranch();
+                       bo=dst->getLastBranch();
+                       bo->setHeading (fi.fileName() );
+                       bo->setColor (QColor("black"));
+                       if (fi.fileName().right(4) == ".vym" )
+                               bo->setVymLink (fi.filePath());
+               }       
+       }               
+}
+
+void MapEditor::importDirInt (const QString &s)
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {
+               saveStateChangingPart (bo,bo,QString ("importDir (\"%1\")").arg(s),QString("Import directory structure from %1").arg(s));
+
+               QDir d(s);
+               importDirInt (bo,d);
+       }
+}      
+
+void MapEditor::importDir()
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {
+               QStringList filters;
+               filters <<"VYM map (*.vym)";
+               QFileDialog *fd=new QFileDialog( this,vymName+ " - " +tr("Choose directory structure to import"));
+               fd->setMode (QFileDialog::DirectoryOnly);
+               fd->setFilters (filters);
+               fd->setCaption(vymName+" - " +tr("Choose directory structure to import"));
+               fd->show();
+
+               QString fn;
+               if ( fd->exec() == QDialog::Accepted )
+               {
+                       importDirInt (fd->selectedFile() );
+                       model->reposition();
+                       scene()->update();
+               }
+       }       
+}
+
+void MapEditor::followXLink(int i)
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {
+               bo=bo->XLinkTargetAt(i);
+               if (bo) 
+               {
+                       xelection.select(bo);
+                       ensureSelectionVisible();
+               }
+       }
+}
+
+void MapEditor::editXLink(int i)       // FIXME missing saveState
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+       {
+               XLinkObj *xlo=bo->XLinkAt(i);
+               if (xlo) 
+               {
+                       EditXLinkDialog dia;
+                       dia.setXLink (xlo);
+                       dia.setSelection(bo);
+                       if (dia.exec() == QDialog::Accepted)
+                       {
+                               if (dia.useSettingsGlobal() )
+                               {
+                                       setMapDefXLinkColor (xlo->getColor() );
+                                       setMapDefXLinkWidth (xlo->getWidth() );
+                               }
+                               if (dia.deleteXLink())
+                                       bo->deleteXLinkAt(i);
+                       }
+               }       
+       }
+}
+
+AttributeTable* MapEditor::attributeTable()
+{
+       return attrTable;
+}
+
+void MapEditor::testFunction1()
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo) model->moveAway (bo);
+       
+/* TODO Hide hidden stuff temporary, maybe add this as regular function somewhere
+       if (hidemode==HideNone)
+       {
+               setHideTmpMode (HideExport);
+               mapCenter->calcBBoxSizeWithChilds();
+               QRectF totalBBox=mapCenter->getTotalBBox();
+               QRectF mapRect=totalBBox;
+               QCanvasRectangle *frame=NULL;
+
+               cout << "  map has =("<<totalBBox.x()<<","<<totalBBox.y()<<","<<totalBBox.width()<<","<<totalBBox.height()<<")\n";
+       
+               mapRect.setRect (totalBBox.x(), totalBBox.y(), 
+                       totalBBox.width(), totalBBox.height());
+               frame=new QCanvasRectangle (mapRect,mapScene);
+               frame->setBrush (QColor(white));
+               frame->setPen (QColor(black));
+               frame->setZValue(0);
+               frame->show();    
+       }       
+       else    
+       {
+               setHideTmpMode (HideNone);
+       }       
+       cout <<"  hidemode="<<hidemode<<endl;
+       */
+}      
+       
+void MapEditor::testFunction2()
+{
+
+/*
+       // Toggle hidemode
+       if (hidemode==HideExport)
+               setHideTmpMode (HideNone);
+       else    
+               setHideTmpMode (HideExport);
+*/             
+}
+
+void MapEditor::contextMenuEvent ( QContextMenuEvent * e )
+{
+       // Lineedits are already closed by preceding
+       // mouseEvent, we don't need to close here.
+
+    QPointF p = mapToScene(e->pos());
+    LinkableMapObj* lmo=model->findMapObj(p, NULL);
+       
+    if (lmo) 
+       {       // MapObj was found
+               if (xelection.single() != lmo)
+               {
+                       // select the MapObj
+                       xelection.select(lmo);
+               }
+               // Context Menu 
+               if (xelection.getBranch() ) 
+               {
+                       // Context Menu on branch or mapcenter
+                       updateActions();
+                       branchContextMenu->popup(e->globalPos() );
+               } else
+               {
+                       if (xelection.getFloatImage() )
+                       {
+                               // Context Menu on floatimage
+                               updateActions();
+                               floatimageContextMenu->popup(e->globalPos() );
+                       }       
+               }       
+       } else 
+       { // No MapObj found, we are on the Canvas itself
+               // Context Menu on scene
+               updateActions();
+               contextMenuPos=p;
+               canvasContextMenu->popup(e->globalPos() );
+    } 
+       e->accept();
+}
+
+void MapEditor::keyPressEvent(QKeyEvent* e)
+{
+       if (e->modifiers() & Qt::ControlModifier)
+       {
+               switch (mainWindow->getModMode())
+               {
+                       case Main::ModModeColor: 
+                               setCursor (PickColorCursor);
+                               break;
+                       case Main::ModModeCopy: 
+                               setCursor (CopyCursor);
+                               break;
+                       case Main::ModModeXLink: 
+                               setCursor (XLinkCursor);
+                               break;
+                       default :
+                               setCursor (Qt::ArrowCursor);
+                               break;
+               } 
+       }       
+}
+
+void MapEditor::keyReleaseEvent(QKeyEvent* e)
+{
+       if (!(e->modifiers() & Qt::ControlModifier))
+               setCursor (Qt::ArrowCursor);
+}
+
+void MapEditor::mousePressEvent(QMouseEvent* e)
+{
+       // Ignore right clicks, these will go to context menus
+       if (e->button() == Qt::RightButton )
+       {
+               e->ignore();
+               return;
+       }
+
+       //Ignore clicks while editing heading
+       if (isSelectBlocked() ) 
+       {
+               e->ignore();
+               return;
+       }
+
+    QPointF p = mapToScene(e->pos());
+    LinkableMapObj* lmo=model->findMapObj(p, NULL);
+       
+       e->accept();
+
+       //Take care of  system flags _or_ modifier modes
+       //
+       if (lmo && (typeid(*lmo)==typeid(BranchObj) ||
+               typeid(*lmo)==typeid(MapCenterObj) ))
+       {
+               QString foname=((BranchObj*)lmo)->getSystemFlagName(p);
+               if (!foname.isEmpty())
+               {
+                       // systemFlag clicked
+                       selectInt (lmo);
+                       if (foname=="url") 
+                       {
+                               if (e->state() & Qt::ControlModifier)
+                                       mainWindow->editOpenURLTab();
+                               else    
+                                       mainWindow->editOpenURL();
+                       }       
+                       else if (foname=="vymLink")
+                       {
+                               mainWindow->editOpenVymLink();
+                               // tabWidget may change, better return now
+                               // before segfaulting...
+                       } else if (foname=="note")
+                               mainWindow->windowToggleNoteEditor();
+                       else if (foname=="hideInExport")                
+                               toggleHideExport();
+                       xelection.update();     
+                       return; 
+               } 
+       } 
+
+       // No system flag clicked, take care of modmodes (CTRL-Click)
+       if (e->state() & Qt::ControlModifier)
+       {
+               if (mainWindow->getModMode()==Main::ModModeColor)
+               {
+                               pickingColor=true;
+                               setCursor (PickColorCursor);
+                               return;
+               } 
+               if (mainWindow->getModMode()==Main::ModModeXLink)
+               {       
+                       BranchObj *bo_begin=NULL;
+                       if (lmo)
+                               bo_begin=(BranchObj*)(lmo);
+                       else    
+                               if (xelection.getBranch() ) 
+                                       bo_begin=xelection.getBranch();
+                       if (bo_begin)   
+                       {
+                               drawingLink=true;
+                               linkingObj_src=bo_begin;
+                               tmpXLink=new XLinkObj (mapScene);
+                               tmpXLink->setBegin (bo_begin);
+                               tmpXLink->setEnd   (p);
+                               tmpXLink->setColor(defXLinkColor);
+                               tmpXLink->setWidth(defXLinkWidth);
+                               tmpXLink->updateXLink();
+                               tmpXLink->setVisibility (true);
+                               return;
+                       } 
+               }
+       }       // End of modmodes
+
+    if (lmo) 
+       {       
+               // Select the clicked object
+               selectInt (lmo);
+
+               // Left Button      Move Branches
+               if (e->button() == Qt::LeftButton )
+               {
+                       //movingObj_start.setX( p.x() - selection->x() );// TODO replaced selection->lmo here   
+                       //movingObj_start.setY( p.y() - selection->y() );       
+                       movingObj_start.setX( p.x() - lmo->x() );       
+                       movingObj_start.setY( p.y() - lmo->y() );       
+                       movingObj_orgPos.setX (lmo->x() );
+                       movingObj_orgPos.setY (lmo->y() );
+                       movingObj_orgRelPos=lmo->getRelPos();
+
+                       // If modMode==copy, then we want to "move" the _new_ object around
+                       // then we need the offset from p to the _old_ selection, because of tmp
+                       if (mainWindow->getModMode()==Main::ModModeCopy &&
+                               e->state() & Qt::ControlModifier)
+                       {
+                               BranchObj *bo=xelection.getBranch();
+                               if (bo)
+                               {
+                                       copyingObj=true;
+                                       bo->addBranch ((BranchObj*)xelection.single());
+                                       unselect();
+                                       xelection.select(bo->getLastBranch());
+                                       model->reposition();
+                               }
+                       } 
+
+                       movingObj=xelection.single();   
+               } else
+                       // Middle Button    Toggle Scroll
+                       // (On Mac OS X this won't work, but we still have 
+                       // a button in the toolbar)
+                       if (e->button() == Qt::MidButton )
+                               toggleScroll();
+               updateActions();
+               xelection.update();
+       } else 
+       { // No MapObj found, we are on the scene itself
+               // Left Button      move Pos of sceneView
+               if (e->button() == Qt::LeftButton )
+               {
+                       movingObj=NULL; // move Content not Obj
+                       movingObj_start=e->globalPos();
+                       movingCont_start=QPointF (
+                               horizontalScrollBar()->value(),
+                               verticalScrollBar()->value());
+                       movingVec=QPointF(0,0);
+                       setCursor(HandOpenCursor);
+               } 
+    } 
+}
+
+void MapEditor::mouseMoveEvent(QMouseEvent* e)
+{
+    QPointF p = mapToScene(e->pos());
+       LinkableMapObj *lmosel=xelection.single();
+
+    // Move the selected MapObj
+    if ( lmosel && movingObj) 
+    {  
+               // reset cursor if we are moving and don't copy
+               if (mainWindow->getModMode()!=Main::ModModeCopy)
+                       setCursor (Qt::ArrowCursor);
+
+               // To avoid jumping of the sceneView, only 
+               // ensureSelectionVisible, if not tmp linked
+               if (!lmosel->hasParObjTmp())
+                       ensureSelectionVisible ();
+               
+               // Now move the selection, but add relative position 
+               // (movingObj_start) where selection was chosen with 
+               // mousepointer. (This avoids flickering resp. jumping 
+               // of selection back to absPos)
+               
+               // Check if we could link 
+               LinkableMapObj* lmo=model->findMapObj(p, lmosel);
+               
+
+               FloatObj *fio=xelection.getFloatImage();
+               if (fio)
+               {
+                       fio->move   (p.x() -movingObj_start.x(), p.y()-movingObj_start.y() );           
+                       fio->setRelPos();
+                       fio->updateLink(); //no need for reposition, if we update link here
+                       xelection.update();
+
+                       // Relink float to new mapcenter or branch, if shift is pressed 
+                       // Only relink, if selection really has a new parent
+                       if ( (e->modifiers()==Qt::ShiftModifier) && lmo &&
+                               ( (typeid(*lmo)==typeid(BranchObj)) ||
+                                 (typeid(*lmo)==typeid(MapCenterObj)) ) &&
+                               ( lmo != fio->getParObj())  
+                               )
+                       {
+                               if (typeid(*fio) == typeid(FloatImageObj) && 
+                               ( (typeid(*lmo)==typeid(BranchObj) ||
+                                 typeid(*lmo)==typeid(MapCenterObj)) ))  
+                               {
+
+                                       // Also save the move which was done so far
+                                       QString pold=qpointfToString(movingObj_orgRelPos);
+                                       QString pnow=qpointfToString(fio->getRelPos());
+                                       saveState(
+                                               fio,
+                                               "moveRel "+pold,
+                                               fio,
+                                               "moveRel "+pnow,
+                                               QString("Move %1 to relative position %2").arg(getName(fio)).arg(pnow));
+                                       fio->getParObj()->requestReposition();
+                                       model->reposition();
+
+                                       linkTo (model->getSelectString(lmo));
+                                       //movingObj=lmosel;
+                                       //movingObj_orgRelPos=lmosel->getRelPos();      
+
+                                       model->reposition();
+                               }       
+                       }
+               } else  
+               {       // selection != a FloatObj
+                       if (lmosel->getDepth()==0)
+                       {
+                               // Move MapCenter
+                               if (e->buttons()== Qt::LeftButton && e->modifiers()==Qt::ShiftModifier) 
+                                       ((MapCenterObj*)lmosel)->moveAll(p.x() -movingObj_start.x(), p.y()-movingObj_start.y() );               
+                               else    
+                                       lmosel->move   (p.x() -movingObj_start.x(), p.y()-movingObj_start.y() );                
+                               model->updateRelPositions();
+                       } else
+                       {       
+                               if (lmosel->getDepth()==1)
+                               {
+                                       // Move mainbranch
+                                       lmosel->move(p.x() -movingObj_start.x(), p.y()-movingObj_start.y() );           
+                                       lmosel->setRelPos();
+                               } else
+                               {
+                                       // Move ordinary branch
+                                       lmosel->move(p.x() -movingObj_start.x(), p.y()-movingObj_start.y()  );          
+                               } 
+
+                               // Maybe we can relink temporary?
+                               if (lmo && (lmo!=lmosel) && xelection.getBranch() && 
+                                        (typeid(*lmo)==typeid(BranchObj) ||
+                                         typeid(*lmo)==typeid(MapCenterObj)) ) 
+
+                               {
+                                       if (e->modifiers()==Qt::ControlModifier)
+                                       {
+                                               // Special case: CTRL to link below lmo
+                                               lmosel->setParObjTmp (lmo,p,+1);
+                                       }
+                                       else if (e->modifiers()==Qt::ShiftModifier)
+                                               lmosel->setParObjTmp (lmo,p,-1);
+                                       else
+                                               lmosel->setParObjTmp (lmo,p,0);
+                               } else  
+                               {
+                                       lmosel->unsetParObjTmp();
+                               }               
+                               // reposition subbranch
+                               lmosel->reposition();   
+                       } // depth>0
+
+                       xelection.update();
+               } // no FloatImageObj
+
+               scene()->update();
+               return;
+       } // selection && moving_obj
+               
+       // Draw a link from one branch to another
+       if (drawingLink)
+       {
+                tmpXLink->setEnd (p);
+                tmpXLink->updateXLink();
+       }        
+       
+    // Move sceneView 
+    if (!movingObj && !pickingColor &&!drawingLink && e->buttons() == Qt::LeftButton ) 
+       {
+               QPointF p=e->globalPos();
+               movingVec.setX(-p.x() + movingObj_start.x() );
+               movingVec.setY(-p.y() + movingObj_start.y() );
+               horizontalScrollBar()->setSliderPosition((int)( movingCont_start.x()+movingVec.x() ));
+               verticalScrollBar()->setSliderPosition((int)( movingCont_start.y()+movingVec.y() ) );
+    }
+}
+
+
+void MapEditor::mouseReleaseEvent(QMouseEvent* e)
+{
+    QPointF p = mapToScene(e->pos());
+       LinkableMapObj *dst;
+       LinkableMapObj *lmosel=xelection.single();
+       // Have we been picking color?
+       if (pickingColor)
+       {
+               pickingColor=false;
+               setCursor (Qt::ArrowCursor);
+               // Check if we are over another branch
+               dst=model->findMapObj(p, NULL);
+               if (dst && lmosel) 
+               {       
+                       if (e->state() & Qt::ShiftModifier)
+                               colorBranch (((BranchObj*)dst)->getColor());
+                       else    
+                               colorSubtree (((BranchObj*)dst)->getColor());
+               } 
+               return;
+       }
+
+       // Have we been drawing a link?
+       if (drawingLink)        
+       {
+               drawingLink=false;
+               // Check if we are over another branch
+               dst=model->findMapObj(p, NULL);
+               if (dst && lmosel) 
+               {       
+                       tmpXLink->setEnd ( ((BranchObj*)(dst)) );
+                       tmpXLink->updateXLink();
+                       tmpXLink->activate(); //FIXME savestate missing
+                       //saveStateComplete(QString("Activate xLink from %1 to %2").arg(getName(tmpXLink->getBegin())).arg(getName(tmpXLink->getEnd())) );      
+               } else
+               {
+                       delete(tmpXLink);
+                       tmpXLink=NULL;
+               }
+               return;
+       }
+       
+    // Have we been moving something?
+    if ( lmosel && movingObj ) 
+    {  
+               FloatImageObj *fo=xelection.getFloatImage();
+               if(fo)
+               {
+                       // Moved FloatObj. Maybe we need to reposition
+                   QString pold=qpointfToString(movingObj_orgRelPos);
+                   QString pnow=qpointfToString(fo->getRelPos());
+                       saveState(
+                               fo,
+                               "moveRel "+pold,
+                               fo,
+                               "moveRel "+pnow,
+                               QString("Move %1 to relative position %2").arg(getName(fo)).arg(pnow));
+
+                       fo->getParObj()->requestReposition();
+                       model->reposition();
+               }       
+
+               // Check if we are over another branch, but ignore 
+               // any found LMOs, which are FloatObjs
+               dst=model->findMapObj(mapToScene(e->pos() ), lmosel);
+
+               if (dst && (typeid(*dst)!=typeid(BranchObj) && typeid(*dst)!=typeid(MapCenterObj))) 
+                       dst=NULL;
+               
+               BranchObj *bo=xelection.getBranch();
+               if (bo && bo->getDepth()==0)
+               {       
+            if (movingObj_orgPos != bo->getAbsPos())
+            {
+                QString pold=qpointfToString(movingObj_orgPos);
+                QString pnow=qpointfToString(bo->getAbsPos());
+                saveState(
+                    fo,
+                    "move "+pold,
+                    fo,
+                    "move "+pnow,
+                    QString("Move mapcenter %1 to position %2").arg(getName(bo)).arg(pnow));
+            }
+               }
+       
+               if (xelection.type() == Selection::Branch )
+               {       // A branch was moved
+                       
+                       // save the position in case we link to mapcenter
+                       QPointF savePos=QPointF (lmosel->getAbsPos()  );
+
+                       // Reset the temporary drawn link to the original one
+                       lmosel->unsetParObjTmp();
+
+                       // For Redo we may need to save original selection
+                       QString preSelStr=model->getSelectString(lmosel);
+
+                       copyingObj=false;       
+                       if (dst ) 
+                       {
+                               // We have a destination, relink to that
+
+                               BranchObj* bsel=xelection.getBranch();
+                               BranchObj* bdst=(BranchObj*)dst;
+
+                               QString preParStr=model->getSelectString (bsel->getParObj());
+                               QString preNum=QString::number (bsel->getNum(),10);
+                               QString preDstParStr;
+
+                               if (e->state() & Qt::ShiftModifier && dst->getParObj())
+                               {       // Link above dst
+                                       preDstParStr=model->getSelectString (dst->getParObj());
+                                       bsel->linkTo ( (BranchObj*)(bdst->getParObj()), bdst->getNum());
+                               } else 
+                               if (e->state() & Qt::ControlModifier && dst->getParObj())
+                               {
+                                       // Link below dst
+                                       preDstParStr=model->getSelectString (dst->getParObj());
+                                       bsel->linkTo ( (BranchObj*)(bdst->getParObj()), bdst->getNum()+1);
+                               } else  
+                               {       // Append to dst
+                                       preDstParStr=model->getSelectString(dst);
+                                       bsel->linkTo (bdst,-1);
+                                       if (dst->getDepth()==0) bsel->move (savePos);
+                               } 
+                               QString postSelStr=model->getSelectString(lmosel);
+                               QString postNum=QString::number (bsel->getNum(),10);
+
+                               QString undoCom="linkTo (\""+ 
+                                       preParStr+ "\"," + preNum  +"," + 
+                                       QString ("%1,%2").arg(movingObj_orgPos.x()).arg(movingObj_orgPos.y())+ ")";
+
+                               QString redoCom="linkTo (\""+ 
+                                       preDstParStr + "\"," + postNum + "," +
+                                       QString ("%1,%2").arg(savePos.x()).arg(savePos.y())+ ")";
+
+                               saveState (
+                                       postSelStr,undoCom,
+                                       preSelStr, redoCom,
+                                       QString("Relink %1 to %2").arg(getName(bsel)).arg(getName(dst)) );
+
+                               model->reposition();    // not necessary if we undo temporary move  below
+                       } else
+                       {
+                               // No destination, undo  temporary move
+
+                               if (lmosel->getDepth()==1)
+                               {
+                                       // The select string might be different _after_ moving around.
+                                       // Therefor reposition and then use string of old selection, too
+                                       model->reposition();
+
+                    QPointF rp(lmosel->getRelPos());
+                    if (rp != movingObj_orgRelPos)
+                    {
+                        QString ps=qpointfToString(rp);
+                        saveState(
+                            model->getSelectString(lmosel), "moveRel "+qpointfToString(movingObj_orgRelPos), 
+                            preSelStr, "moveRel "+ps, 
+                            QString("Move %1 to relative position %2").arg(getName(lmosel)).arg(ps));
+                    }
+                               }
+
+                               // Draw the original link, before selection was moved around
+                               if (settings.value("/animation/use",false).toBool() && lmosel->getDepth()>1) 
+                               {
+                                       QPointF p=bo->getParObj()->getChildPos();
+                                       lmosel->setRelPos();    // calc relPos first
+                                       model->startAnimation(
+                                               lmosel->getRelPos(),
+                                               QPointF (movingObj_orgPos.x() - p.x(), movingObj_orgPos.y() - p.y() )
+                                       );      
+                               } else  
+                                       model->reposition();
+                       }
+               }
+                xelection.update();
+               // Finally resize scene, if needed
+               scene()->update();
+               movingObj=NULL;         
+
+               // Just make sure, that actions are still ok,e.g. the move branch up/down buttons...
+               updateActions();
+       } else 
+               // maybe we moved View: set old cursor
+               setCursor (Qt::ArrowCursor);
+    
+}
+
+void MapEditor::mouseDoubleClickEvent(QMouseEvent* e)
+{
+       if (isSelectBlocked() ) 
+       {
+               e->ignore();
+               return;
+       }
+
+       if (e->button() == Qt::LeftButton )
+       {
+               QPointF p = mapToScene(e->pos());
+               LinkableMapObj *lmo=model->findMapObj(p, NULL);
+               if (lmo) {      // MapObj was found
+                       // First select the MapObj than edit heading
+                       xelection.select(lmo);
+                       mainWindow->editHeading();
+               }
+       }
+}
+
+void MapEditor::resizeEvent (QResizeEvent* e)
+{
+       QGraphicsView::resizeEvent( e );
+}
+
+void MapEditor::dragEnterEvent(QDragEnterEvent *event)
+{
+       //for (unsigned int i=0;event->format(i);i++) // Debug mime type
+       //      cerr << event->format(i) << endl;
+
+       if (event->mimeData()->hasImage())
+               event->acceptProposedAction();
+       else    
+               if (event->mimeData()->hasUrls())
+                       event->acceptProposedAction();
+}
+
+void MapEditor::dragMoveEvent(QDragMoveEvent *)
+{
+}
+
+void MapEditor::dragLeaveEvent(QDragLeaveEvent *event)
+{
+       event->accept();
+}
+
+void MapEditor::dropEvent(QDropEvent *event)
+{
+       BranchObj *sel=xelection.getBranch();
+       if (sel)
+       {
+               if (debug)
+                       foreach (QString format,event->mimeData()->formats()) 
+                               cout << "MapEditor: Dropped format: "<<qPrintable (format)<<endl;
+
+
+               QList <QUrl> uris;
+               if (event->mimeData()->hasImage()) 
+               {
+                        QVariant imageData = event->mimeData()->imageData();
+                        addFloatImageInt (qvariant_cast<QPixmap>(imageData));
+               } else
+               if (event->mimeData()->hasUrls())
+                       uris=event->mimeData()->urls();
+
+               if (uris.count()>0)
+               {
+                       QStringList files;
+                       QString s;
+                       QString heading;
+                       BranchObj *bo;
+                       for (int i=0; i<uris.count();i++)
+                       {
+                               // Workaround to avoid adding empty branches
+                               if (!uris.at(i).toString().isEmpty())
+                               {
+                                       bo=sel->addBranch();
+                                       if (bo)
+                                       {
+                                               s=uris.at(i).toLocalFile();
+                                               if (!s.isEmpty()) 
+                                               {
+                                                  QString file = QDir::fromNativeSeparators(s);
+                                                  heading = QFileInfo(file).baseName();
+                                                  files.append(file);
+                                                  if (file.endsWith(".vym", false))
+                                                          bo->setVymLink(file);
+                                                  else
+                                                          bo->setURL(uris.at(i).toString());
+                                          } else 
+                                          {
+                                                  bo->setURL(uris.at(i).toString());
+                                          }
+
+                                          if (!heading.isEmpty())
+                                                  bo->setHeading(heading);
+                                          else
+                                                  bo->setHeading(uris.at(i).toString());
+                                       }
+                               }
+                       }
+                       model->reposition();
+               }
+       }       
+       event->acceptProposedAction();
+}
+
+
+void MapEditor::sendSelection()
+{
+       if (netstate!=Server) return;
+       sendData (QString("select (\"%1\")").arg(xelection.getSelectString()) );
+}
+
+void MapEditor::newServer()
+{
+       port=54321;
+       sendCounter=0;
+    tcpServer = new QTcpServer(this);
+    if (!tcpServer->listen(QHostAddress::Any,port)) {
+        QMessageBox::critical(this, "vym server",
+                              QString("Unable to start the server: %1.").arg(tcpServer->errorString()));
+        close();
+        return;
+    }
+       connect(tcpServer, SIGNAL(newConnection()), this, SLOT(newClient()));
+       netstate=Server;
+       cout<<"Server is running on port "<<tcpServer->serverPort()<<endl;
+}
+
+void MapEditor::connectToServer()
+{
+       port=54321;
+       server="salam.suse.de";
+       server="localhost";
+       clientSocket = new QTcpSocket (this);
+       clientSocket->abort();
+    clientSocket->connectToHost(server ,port);
+       connect(clientSocket, SIGNAL(readyRead()), this, SLOT(readData()));
+    connect(clientSocket, SIGNAL(error(QAbstractSocket::SocketError)),
+            this, SLOT(displayNetworkError(QAbstractSocket::SocketError)));
+       netstate=Client;                
+       cout<<"connected to "<<qPrintable (server)<<" port "<<port<<endl;
+
+       
+}
+
+void MapEditor::newClient()
+{
+    QTcpSocket *newClient = tcpServer->nextPendingConnection();
+    connect(newClient, SIGNAL(disconnected()),
+            newClient, SLOT(deleteLater()));
+
+       cout <<"ME::newClient  at "<<qPrintable( newClient->peerAddress().toString() )<<endl;
+
+       clientList.append (newClient);
+}
+
+
+void MapEditor::sendData(const QString &s)
+{
+       if (clientList.size()==0) return;
+
+       // Create bytearray to send
+       QByteArray block;
+    QDataStream out(&block, QIODevice::WriteOnly);
+    out.setVersion(QDataStream::Qt_4_0);
+
+       // Reserve some space for blocksize
+    out << (quint16)0;
+
+       // Write sendCounter
+    out << sendCounter++;
+
+       // Write data
+    out << s;
+
+       // Go back and write blocksize so far
+    out.device()->seek(0);
+    quint16 bs=(quint16)(block.size() - 2*sizeof(quint16));
+       out << bs;
+
+       if (debug)
+               cout << "ME::sendData  bs="<<bs<<"  counter="<<sendCounter<<"  s="<<qPrintable(s)<<endl;
+
+       for (int i=0; i<clientList.size(); ++i)
+       {
+               //cout << "Sending \""<<qPrintable (s)<<"\" to "<<qPrintable (clientList.at(i)->peerAddress().toString())<<endl;
+               clientList.at(i)->write (block);
+       }
+}
+
+void MapEditor::readData ()
+{
+       while (clientSocket->bytesAvailable() >=(int)sizeof(quint16) )
+       {
+               if (debug)
+                       cout <<"readData  bytesAvail="<<clientSocket->bytesAvailable();
+               quint16 recCounter;
+               quint16 blockSize;
+
+               QDataStream in(clientSocket);
+               in.setVersion(QDataStream::Qt_4_0);
+
+               in >> blockSize;
+               in >> recCounter;
+               
+               QString t;
+               in >>t;
+               if (debug)
+                       cout << "  t="<<qPrintable (t)<<endl;
+               parseAtom (t);
+       }
+       return;
+}
+
+void MapEditor::displayNetworkError(QAbstractSocket::SocketError socketError)
+{
+    switch (socketError) {
+    case QAbstractSocket::RemoteHostClosedError:
+        break;
+    case QAbstractSocket::HostNotFoundError:
+        QMessageBox::information(this, vymName +" Network client",
+                                 "The host was not found. Please check the "
+                                    "host name and port settings.");
+        break;
+    case QAbstractSocket::ConnectionRefusedError:
+        QMessageBox::information(this, vymName + " Network client",
+                                 "The connection was refused by the peer. "
+                                    "Make sure the fortune server is running, "
+                                    "and check that the host name and port "
+                                    "settings are correct.");
+        break;
+    default:
+        QMessageBox::information(this, vymName + " Network client",
+                                 QString("The following error occurred: %1.")
+                                 .arg(clientSocket->errorString()));
+    }
+}
+
+void MapEditor::autosave()
+{
+       QDateTime now=QDateTime().currentDateTime();
+       /* FIXME debug
+       cout << "ME::autosave checking "<<qPrintable(filePath)<<"...\n"; 
+       cout << "fsaved: "<<qPrintable (fileChangedTime.toString())<<endl;
+       cout << "  fnow: "<<qPrintable (QFileInfo(filePath).lastModified().toString())<<endl;
+       cout << "  time: "<<qPrintable (now.toString())<<endl;
+       cout << " zipped="<<zipped<<endl;
+       */
+       // Disable autosave, while we have gone back in history
+       int redosAvail=undoSet.readNumEntry (QString("/history/redosAvail"));
+       if (redosAvail>0) return;
+
+       // Also disable autosave for new map without filename
+       if (filePath.isEmpty()) return;
+
+
+       if (mapUnsaved &&mapChanged && settings.value ("/mapeditor/autosave/use",true).toBool() )
+       {
+               if (QFileInfo(filePath).lastModified()<=fileChangedTime) 
+                       mainWindow->fileSave (this);
+               else
+                       if (debug)
+                               cout <<"  ME::autosave  rejected, file on disk is newer than last save.\n"; 
+
+       }       
+}
+
+void MapEditor::fileChanged()
+{
+       // Check if file on disk has changed meanwhile
+       if (!filePath.isEmpty())
+       {
+               QDateTime tmod=QFileInfo (filePath).lastModified();
+               if (tmod>fileChangedTime)
+               {
+                       
+                       /* FIXME debug message, sometimes there's a glitch in the metrics...
+                       cout << "ME::fileChanged()\n" 
+                            << "  last saved:     "<<qPrintable (fileChangedTime.toString())<<endl
+                                << "  last modififed: "<<qPrintable (tmod.toString())<<endl;
+                       */       
+                       // FIXME switch to current mapeditor and finish lineedits...
+                       QMessageBox mb( vymName,
+                               tr("The file of the map  on disk has changed:\n\n"  
+                                  "   %1\n\nDo you want to reload that map with the new file?").arg(filePath),
+                               QMessageBox::Question,
+                               QMessageBox::Yes ,
+                               QMessageBox::Cancel | QMessageBox::Default,
+                               QMessageBox::NoButton );
+
+                       mb.setButtonText( QMessageBox::Yes, tr("Reload"));
+                       mb.setButtonText( QMessageBox::No, tr("Ignore"));
+                       switch( mb.exec() ) 
+                       {
+                               case QMessageBox::Yes:
+                                       // Reload map
+                                       load (filePath,NewMap,fileType);
+                       case QMessageBox::Cancel:
+                                       fileChangedTime=tmod; // allow autosave to overwrite newer file!
+                       }
+               }
+       }       
+
+}
+
+
+/*TODO not needed? void MapEditor::contentsDropEvent(QDropEvent *event) 
+{
+
+               } else if (event->provides("application/x-moz-file-promise-url") && 
+                        event->provides("application/x-moz-nativeimage")) 
+               {
+                       // Contains url to the img src in unicode16
+                       QByteArray d = event->encodedData("application/x-moz-file-promise-url");
+                       QString url = QString((const QChar*)d.data(),d.size()/2);
+                       fetchImage(url);
+                       event->accept();
+                       update=true;
+               } else if (event->provides ("text/uri-list"))
+               {       // Uris provided e.g. by konqueror
+                       Q3UriDrag::decode (event,uris);
+               } else if (event->provides ("_NETSCAPE_URL"))
+               {       // Uris provided by Mozilla
+                 QStringList l = QStringList::split("\n", event->encodedData("_NETSCAPE_URL"));
+                 uris.append(l[0]);
+                 heading = l[1];
+               } else if (event->provides("text/html")) {
+
+                 // Handels text mime types
+                 // Look like firefox allways handle text as unicode16 (2 bytes per char.)
+                 QByteArray d = event->encodedData("text/html");
+                 QString text;
+                 if (isUnicode16(d)) 
+                   text = QString((const QChar*)d.data(),d.size()/2);
+                 else 
+                   text = QString(d);
+
+                 textEditor->setText(text);
+
+                 event->accept();
+                 update=true;
+               } else if (event->provides("text/plain")) {
+                 QByteArray d = event->encodedData("text/plain");
+                 QString text;
+                 if (isUnicode16(d))
+                   text = QString((const QChar*)d.data(),d.size()/2);
+                 else 
+                   text = QString(d);
+
+                 textEditor->setText(text);
+                 
+                 event->accept();
+                 update= true;
+               }
+
+               */
+
+
+
+bool isUnicode16(const QByteArray &d) 
+{
+  // TODO: make more precise check for unicode 16.
+  // Guess unicode16 if any of second bytes are zero
+  unsigned int length = max(0,d.size()-2)/2;
+  for (unsigned int i = 0; i<length ; i++)
+    if (d.at(i*2+1)==0) return true;
+  return false;
+}
+      
+void MapEditor::addFloatImageInt (const QPixmap &img) 
+{
+       BranchObj *bo=xelection.getBranch();
+       if (bo)
+  {
+       FloatImageObj *fio=bo->addFloatImage();
+    fio->load(img);
+    fio->setOriginalFilename("No original filename (image added by dropevent)");       
+       QString s=model->getSelectString(bo);
+       saveState (PartOfMap, s, "nop ()", s, "copy ()","Copy dropped image to clipboard",fio  );
+       saveState (fio,"delete ()", bo,QString("paste(%1)").arg(curStep),"Pasting dropped image");
+    model->reposition();
+    scene()->update();
+  }
+}
+
+/*
+
+void MapEditor::imageDataFetched(const QByteArray &a, Q3NetworkOperation * / *nop* /) 
+{
+  if (!imageBuffer) imageBuffer = new QBuffer();
+  if (!imageBuffer->isOpen()) {
+    imageBuffer->open(QIODevice::WriteOnly | QIODevice::Append);
+  }
+  imageBuffer->at(imageBuffer->at()+imageBuffer->writeBlock(a));
+}
+
+
+void MapEditor::imageDataFinished(Q3NetworkOperation *nop) 
+{
+       if (nop->state()==Q3NetworkProtocol::StDone) {
+               QPixmap img(imageBuffer->buffer());
+               addFloatImageInt (img);
+       }
+
+       if (imageBuffer) {
+               imageBuffer->close();
+               if (imageBuffer) {
+                       imageBuffer->close();
+                       delete imageBuffer;
+                       imageBuffer = 0;
+               }
+       }
+}
+
+void MapEditor::fetchImage(const QString &url) 
+{
+  if (urlOperator) {
+    urlOperator->stop();
+    disconnect(urlOperator);
+    delete urlOperator;
+  }
+  
+  urlOperator = new Q3UrlOperator(url);
+  connect(urlOperator, SIGNAL(finished(Q3NetworkOperation *)), 
+         this, SLOT(imageDataFinished(Q3NetworkOperation*)));
+
+  connect(urlOperator, SIGNAL(data(const QByteArray &, Q3NetworkOperation *)),
+         this, SLOT(imageDataFetched(const QByteArray &, Q3NetworkOperation *)));
+  urlOperator->get();
+}
+*/
+
diff --git a/mapeditor.h b/mapeditor.h
new file mode 100644 (file)
index 0000000..c74b82e
--- /dev/null
@@ -0,0 +1,493 @@
+#ifndef MAPEDITOR_H
+#define MAPEDITOR_H
+
+#include <QGraphicsView>
+#include <QtNetwork>
+
+#include "attribute.h"
+#include "file.h"
+#include "misc.h"
+#include "parser.h"
+#include "ornamentedobj.h"
+#include "selection.h"
+#include "settings.h"
+#include "vymmodel.h"
+
+class VymModel;
+class Selection;
+
+/*! \brief Main widget in vym to display and edit a map */
+
+class MapEditor : public QGraphicsView, public XMLObj {
+    Q_OBJECT
+
+public:
+    /*! \brief State of the mapeditor 
+               
+               While a heading is edited, the state has to change, so
+               that e.g. no other object might get selected. This is done
+               in Main by calling setStateEditHeading
+       */
+       enum State {
+               Idle,                   //!< Idle, waiting for user event
+               EditHeading             //!< Editing heading (dont't select another branch now)
+       };
+    /*! \brief Networking states
+               
+               In Network modus we want to switch of saveState, autosave, ...
+       */
+       enum NetState {
+               Offline,                        //!< Offline
+               Client,                         //!< I am the client and connected to server
+               Server                          //!< I am the server
+       };
+    MapEditor(QWidget* parent=0);
+       ~MapEditor();
+       VymModel* getModel();
+       QGraphicsScene * getScene();
+       State getState();                                       //!< Return State of MapEditor
+       void setStateEditHeading (bool);        //!< If set to true, State will change to EditHeading
+       bool isRepositionBlocked(); //!< While load or undo there is no need to update graphicsview
+       bool isSaveStateBlocked();                      //!< block while undo/redo or while running scripts
+       void setSaveStateBlocked(bool);         //!< block saving the undo/redo state
+       bool isSelectBlocked();         //!< true, if no change of selection is possible, e.g. while editing the heading of abranch
+       
+protected:
+       /*! \brief Get name of object
+         
+         Returns heading of a branch or name of an object for use in comment
+         of undo/redo history
+       */ 
+       QString getName(const LinkableMapObj*); // Get e.g. heading or filename
+       void makeTmpDirs();             // create temporary directories
+
+       /*! This function saves all information of the map to disc.
+           saveToDir also calls the functions for all BranchObj and other objects in the map.
+               The structure of the map itself is returned as QString and passed back to Main, 
+               where saveToDir is called initially
+       */      
+    QString saveToDir (const QString &tmpdir, const QString &prefix, bool writeflags, const QPointF &offset, LinkableMapObj *saveSel);
+
+       /*! \brief Get directory, where current step in history is save
+
+               saveState creates a directory for each step in history. This function returns the
+               path of the current directory
+       */
+       QString getHistoryDir();
+
+       /*! \brief Save the current changes in map 
+
+               Two commands and selections are saved:
+
+                       - undocommand and undoselection to undo the change
+                       - redocommand and redoselection to redo the action after an undo
+
+               Additionally a comment is logged. 
+
+       */      
+    void saveState(
+               const SaveMode& savemode, 
+               const QString &undoSelection, 
+               const QString &undoCommand, 
+               const QString &redoSelection, 
+               const QString &redoCommand, 
+               const QString &comment, 
+               LinkableMapObj *saveSelection);
+       /*! Overloaded for convenience */
+    void saveStateChangingPart(
+               LinkableMapObj *undoSelection, 
+               LinkableMapObj* redoSelection, 
+               const QString &redoCommand, 
+               const QString &comment);
+       /*! Overloaded for convenience */
+    void saveStateRemovingPart(
+               LinkableMapObj *redoSelection, 
+               const QString &comment);
+       /*! Overloaded for convenience */
+    void saveState(
+               LinkableMapObj *undoSelection, 
+               const QString &undoCommand, 
+               LinkableMapObj *redoSelection, 
+               const QString &redoCommand, 
+               const QString &comment); 
+       /*! Overloaded for convenience */
+    void saveState(
+               const QString &undoSelection, 
+               const QString &undoCommand, 
+               const QString &redoSelection, 
+               const QString &redoCommand, 
+               const QString &comment) ;
+    void saveState(
+               const QString &undoCommand, 
+               const QString &redoCommand, 
+               const QString &comment) ;
+
+public:        
+
+       /* \brief Process one command and its parameters */
+    void parseAtom (const QString &atom);      
+
+       /* \brief Runs the script */
+       void runScript (QString script);
+private:
+    void addFloatImageInt(const QPixmap &img);
+
+public:
+       bool isDefault();               //!< true, if map is still the empty default map
+    bool hasChanged();         //!< true, if something has changed and is not saved yet
+       void setChanged();              //!< called from TextEditor via LinkableMapObj
+       void closeMap();                //!< Closes the map
+
+       /*! \brief Sets filepath, filename and mapname
+
+            If the filepath is "/home/tux/map.xml", then the filename will be set
+                to map.xml. The destname is needed for vymLinks, pointing to another map. 
+                The destname holds the real name of the file, after it has been compressed, e.g. "map.vym"
+       */       
+
+       /*! \brief Set File path
+
+            The destname is needed to construct the references between maps
+       */       
+       void setFilePath (QString filepath,QString destname);   
+       void setFilePath (QString);     //!< Overloaded for convenience
+       QString getFilePath (); //!< Full path e.g. "/home/tux/map.xml"
+       QString getFileName (); //!< e.g. "map.xml"
+       QString getMapName ();  //!< e.g. "map"
+       QString getDestPath (); //!< e.g. "/home/tux/map.vym"
+
+       /*! \brief Load map
+
+               The data is read from file. Depending on LoadMode the current
+               selection gets replaced by data or the data is appended.
+       */      
+    ErrorCode load (QString, const LoadMode &, const FileType& );      // newmap, import/replace selection
+public:
+       /*! \brief Save the map to file */
+    ErrorCode save(const SaveMode &);  
+       /* FIXME no needed any longer
+       void setZipped(bool);           //!< Set or unset compression of map with zip save map zipped
+       bool saveZipped();                      //!< True, if file will be saved zipped
+       */
+    void print();                              //!< Print the map
+       void setAntiAlias (bool);       //!< Set or unset antialiasing
+       void setSmoothPixmap(bool); //!< Set or unset smoothing of pixmaps
+private:
+    QPixmap getPixmap();
+       void setHideTmpMode (HideTmpMode);      // temporary hide stuff
+       HideTmpMode getHideTmpMode();           // temporary hide stuff
+public:
+       /*! Set or unset temporary hiding of objects during export  */
+       void setExportMode (bool);
+
+       /*! Export as ASCII text to file */
+       void exportASCII (QString fname="",bool askForName=true);  
+
+       /*! Save as image */
+    void exportImage (QString fname="",bool askForName=true,QString format="PNG");
+
+    /*! Export as OpenOfficeOrg presentation */
+    void exportOOPresentation(const QString &,const QString &);        
+
+       /*! Export as XHTML to directory */
+    void exportXHTML(const QString& dir="", bool askForName=true);     
+
+       /*! Export as XTML to directory */
+    void exportXML(QString dir="", bool askForName=true);
+
+    void clear();                                              //!< Clear map
+    void copy();                                               //!< Copy to clipboard
+    void redo();                                               //!< Redo last action
+       bool isRedoAvailable();                         //!< True, if redo is available
+    void undo();                                               //!< Undo last action
+       bool isUndoAvailable();                         //!< True, if undo is available
+       void gotoHistoryStep (int);                     //!< Goto a specifig step in history
+private:       
+    void addMapReplaceInt(const QString & undoSel, const QString & path);
+    void addMapInsertInt (const QString & path, int pos);
+    void pasteNoSave(const int &n);            //!< paste clipboard to branch
+public:        
+    void paste();              //!< Paste clipboard to branch and backup
+    void cut();                        //!< Cut to clipboard (and copy)
+       /*! \brief Move absolutly
+
+               Move absolutly to (x,y).
+       */      
+    void move    (const double &x, const double &y);
+       /*! \brief Move relativly
+
+               Move relativly to (x,y).
+       */      
+    void moveRel (const double &x, const double &y);
+    void moveBranchUp();       //!< Move branch up
+    void moveBranchDown();     //!< Move branch down
+       void sortChildren();    //!< Sort children lexically
+private:       
+       void linkTo(const QString &);
+public:        
+       QString getHeading (bool &ok,QPoint &p); //!< Get heading, ok if selection is branch
+       void setHeading(const QString &);               //!< Set heading of branch      
+private:
+       void setHeadingInt(const QString &);
+       void setVymLinkInt(const QString &);    // Set vymLink for selection
+       /*! \brief Add new mapcenter
+
+           Disclaimer: Still experimental, not fully supported.
+       */      
+public:        
+    BranchObj* addMapCenter();         
+
+       /*! \brief Add new branch
+
+               Depending on num the new branch is created
+
+               -3 above selection as child of selections parent
+               -2 as child of selection
+               -1 below selection as child of selections parent
+               0..n    insert at a specific position in selections parent
+               (needed for free relinking)
+       */      
+private:       
+    BranchObj* addNewBranchInt(int);           // pos allows to add above/below selection
+public:        
+       /*! \Add new branch
+               
+               Depending on num the new branch is created
+               -1 above selection
+                0 as child of selection
+                1 below selection
+       */
+    BranchObj* addNewBranch(int pos);          
+    BranchObj* addNewBranchBefore();           //!< Insert branch between selection and its parent
+    void deleteSelection();                                    //!< Delete selection
+       LinkableMapObj* getSelection();                 //!< Returns selection
+       BranchObj* getSelectedBranch();                 // returns selected branch or NULL
+       FloatImageObj* getSelectedFloatImage(); // returns selected branch or NULL
+       void unselect();                                                // before changing current noteedit
+       void reselect();                                                // after  changing current noteedit
+       bool select(const QString &);                   // Select by string
+       bool select(LinkableMapObj *lmo);               // Select by pointer
+       QString getSelectString();
+private:       
+       void selectInt(LinkableMapObj*);        
+       void selectNextBranchInt();             // Increment number of branch
+       void selectPrevBranchInt();             // Decrement number of branch
+public:        
+    void selectUpperBranch();
+    void selectLowerBranch();
+    void selectLeftBranch();
+    void selectRightBranch();
+    void selectFirstBranch();
+    void selectLastBranch();
+    void selectMapBackgroundImage();
+    void setMapBackgroundImage(const QString &);
+    void selectMapBackgroundColor();
+    void setMapBackgroundColor(QColor);
+    QColor getMapBackgroundColor();
+    QColor getCurrentHeadingColor();
+    void colorBranch(QColor);
+    void colorSubtree(QColor);
+       void toggleStandardFlag(QString);
+    BranchObj* findText(QString,bool);         // Find object
+    void findReset();                                          // Reset Find 
+       void setURL(const QString &);                   // set  URL
+       void editURL();                                                 // edit URL
+       void editLocalURL();                                    // edit URL to local file
+       QString getURL();                                               // returns URL of selection or ""
+       QStringList getURLs();                                  // returns URLs of subtree
+       void editHeading2URL();                                 // copy heading to URL
+       void editBugzilla2URL();                                // create URL to Bugzilla
+       void editFATE2URL();                                    // create URL to FATE
+       void editVymLink();                                             // edit link to another map
+       void deleteVymLink();                                   // delete link to another map
+       QString getVymLink();                                   // return path to map
+       QStringList getVymLinks();                              // return paths in subtree
+       void setHideExport(bool);                               // toggle the export flag
+       void toggleHideExport();                                // toggle the export flag
+       void deleteKeepChilds();                                // remove but keep childs
+       void deleteChilds();                                    // remove childs
+       void editMapInfo();                                             // dialog to enter author, ...
+       void ensureSelectionVisible();          
+       void updateSelection();                                 // update geometry of selection
+       void updateActions();                                   // update e.g. format buttons
+       void updateNoteFlag();                                  // when TextEditor changes
+       void setMapAuthor (const QString &);
+       void setMapComment(const QString &);
+       void setMapLinkStyle (const QString &); // Set style of link
+       LinkableMapObj::Style getMapLinkStyle ();       // requested in LMO
+       void setMapDefLinkColor(QColor);                // default color of links
+       void setMapLinkColorHintInt();                  // color of links
+       void setMapLinkColorHint(LinkableMapObj::ColorHint);// color of links
+       LinkableMapObj::ColorHint getMapLinkColorHint();
+       QColor getMapDefLinkColor();
+       void setMapDefXLinkColor(QColor);
+       QColor getMapDefXLinkColor();
+       void setMapDefXLinkWidth (int);
+       int getMapDefXLinkWidth();
+       void toggleMapLinkColorHint();                  // after changing linkStyles
+    void selectMapLinkColor();
+    void selectMapSelectionColor();
+private:       
+    void setSelectionColorInt(QColor);
+public:        
+    void setSelectionColor(QColor);
+    QColor getSelectionColor();
+       bool scrollBranch(BranchObj*);
+       bool unscrollBranch(BranchObj*);
+    void toggleScroll();
+    void unscrollChilds();
+private:       
+       FloatImageObj* loadFloatImageInt (QString);
+public:        
+       void loadFloatImage ();
+private:       
+       void saveFloatImageInt (FloatImageObj*, const QString &, const QString &);
+public:        
+       void saveFloatImage ();
+       void setFrameType(const FrameObj::FrameType &);
+       void setFrameType(const QString &);
+       void setFramePenColor (const QColor &);
+       void setFrameBrushColor (const QColor &);
+       void setFramePadding (const int &);
+       void setFrameBorderWidth (const int &);
+       void setIncludeImagesVer(bool);
+       void setIncludeImagesHor(bool);
+       void setHideLinkUnselected (bool);
+       bool getHideLinkUnselected ();
+private:       
+    void importDirInt(BranchObj *,QDir);
+    void importDirInt(const QString&);
+public:        
+    void importDir();
+       void followXLink (int);
+       void editXLink (int);
+       AttributeTable* attributeTable();
+    void testFunction1();                                      // just testing new stuff
+    void testFunction2();                                      // just testing new stuff
+                                                                                       // set /mainwindo/showTestMenu=true...
+
+protected:
+       virtual void contextMenuEvent ( QContextMenuEvent *e );
+    virtual void keyPressEvent(QKeyEvent*);
+    virtual void keyReleaseEvent(QKeyEvent*);
+    virtual void mousePressEvent(QMouseEvent*);
+    virtual void mouseMoveEvent(QMouseEvent*);
+    virtual void mouseReleaseEvent(QMouseEvent*);
+    virtual void mouseDoubleClickEvent(QMouseEvent*);
+    virtual void resizeEvent( QResizeEvent * );
+
+       void dragEnterEvent (QDragEnterEvent *);
+       void dragMoveEvent (QDragMoveEvent *);
+       void dragLeaveEvent (QDragLeaveEvent *);
+       void dropEvent (QDropEvent *);
+
+
+protected:
+       void sendSelection();
+
+public:
+       void newServer();
+       void connectToServer();
+
+private slots: 
+       void newClient();
+       void sendData(const QString &s);
+       void readData();
+       void displayNetworkError (QAbstractSocket::SocketError);
+
+       void autosave ();
+       void fileChanged();
+
+private:
+       State state;                            // State of MapEditor
+       QGraphicsScene *mapScene;
+       VymModel *model;                                        // Vym Map, includding several mapCenters
+       QTimer *autosaveTimer;
+       QTimer *fileChangedTimer;
+       QDateTime fileChangedTime;
+
+       bool adjustCanvasRequested;     // collect requests until end of user event
+       BranchObj *editingBO;           // entering Text into BO
+
+       QColor defLinkColor;            // default color for links
+       QColor defXLinkColor;           // default color for xlinks
+       int defXLinkWidth;                      // default width for xlinks
+       LinkableMapObj::ColorHint linkcolorhint;// use heading color or own color
+       LinkableMapObj::Style linkstyle;                // default style for links
+
+    QCursor HandOpenCursor;            // cursor while moving canvas view
+       QCursor PickColorCursor;        // cursor while picking color 
+       QCursor CopyCursor;                     // cursor while picking color 
+       QCursor XLinkCursor;            // cursor while picking color 
+       bool pickingColor;
+       bool drawingLink;                       // true while creating a link
+       bool copyingObj;                        // true while creating a link
+       XLinkObj* tmpXLink;
+
+       Selection xelection;    
+
+       QString latestSelection;                // select string of latest added object
+
+    MapObj* movingObj;                         // moving a MapObj
+       MapObj* linkingObj_src;                 // part of a link
+    QPointF movingObj_orgPos;          // org. pos of mouse before move
+    QPointF movingObj_orgRelPos;       // org. relative pos of mouse before move
+    QPointF movingObj_start;           // rel. pos of mouse to absPos 
+    QPointF movingCont_start;          // inital pos of moving Content or
+    QPointF movingVec;                         // how far has Content moved
+
+       QPointF contextMenuPos;                                 // position where context event was triggered
+
+    QPrinter* printer;                         // Printing
+
+    bool mapDefault;                           // Flag if map is untouched
+    bool mapChanged;                           // Flag if undo is possible
+       bool mapUnsaved;                                // Flag if map should be saved
+
+       Parser parser;                          // Parser stuff for scripting
+
+       AttributeTable *attrTable;
+
+       bool printFrame;                        // Print frame around map
+       bool printFooter;                       // Print footer below map
+
+       bool zipped;                            // should map be zipped
+       static  int mapNum;                     // unique number for Editor
+       FileType fileType;                      // type of file, e.g. vym, freemind...
+       QString fileName;                       // short name of file (for tab)
+       QString filePath;                       // path to file which will be saved
+       QString fileDir;                        // dir where file is saved
+       QString destPath;                       // path to .vym file (needed for vymlinks)
+       QString mapName;                        // fileName without ".vym"
+
+       QString tmpMapDir;                      // tmp directory with undo history
+       QString histPath;                       // Path to history file
+       SimpleSettings undoSet;         // undo/redo commands, saved in histPath
+       int stepsTotal;                         // total number of steps (undos+redos) 
+       int curStep;                            // Current step in history (ring buffer)
+       int curClipboard;                       // number of history step, which is the current clipboard
+       int redosAvail;                         // Available number of redo steps
+       int undosAvail;                         // Available number of undo steps
+       bool blockReposition;           // block while load or undo
+       bool blockSaveState;            // block while load or undo
+
+       BranchObj* itFind;                      // next object in find process
+       bool EOFind;                            // true, if search failed
+
+       QPoint exportOffset;            // set before export, used in save
+       HideTmpMode hidemode;   // true while exporting to hide some stuff
+
+       // Network connections **Experimental**
+       NetState netstate;                      // offline, client, server
+       QTcpServer *tcpServer;          // Act as server in conference mode (experimental)
+       QList <QTcpSocket*> clientList;         // List of connected clients
+       quint16 sendCounter;            // Increased with every sent command
+
+       QTcpSocket      *clientSocket;  // socket of this client
+       QString server;                         // server address of this client
+       int port;                                       // server port of this client
+       void displayClientError(QAbstractSocket::SocketError socketError);
+
+};
+#endif
+
diff --git a/mapobj.cpp b/mapobj.cpp
new file mode 100644 (file)
index 0000000..b3cfc5f
--- /dev/null
@@ -0,0 +1,131 @@
+#include "mapobj.h"
+#include "misc.h"
+
+/////////////////////////////////////////////////////////////////
+// MapObj
+/////////////////////////////////////////////////////////////////
+MapObj::MapObj ()
+{
+       //qWarning ( "Const MapObj (): Please set scene somehow!!!");
+       scene=NULL;
+    init ();
+}
+
+MapObj::MapObj (QGraphicsScene *s)
+{
+//  cout << "Const MapObj\n";
+    scene=s;
+    init ();
+}
+
+
+MapObj::MapObj (MapObj* mo)
+{
+//    cout << "CopyConst MapObj\n";
+    copy (mo);
+}
+
+MapObj::~MapObj ()
+{
+//    cout << "Destr MapObj\n";
+}
+
+void MapObj::init ()
+{
+    absPos=QPointF(0,0);
+    visible=true;
+}
+
+void MapObj::copy(MapObj* other)
+{
+//    scene=other->scene;      // already set in constr. of child, use that one...
+    absPos=other->absPos;
+       bbox.setX (other->bbox.x() );
+       bbox.setY (other->bbox.y() );
+       bbox.setSize (QSizeF(other->bbox.width(), other->bbox.height() ) );
+}
+
+QGraphicsScene* MapObj::getScene()
+{
+       return scene;
+}
+
+qreal MapObj::x() 
+{
+    return absPos.x();
+}
+
+qreal MapObj::y() 
+{
+    return absPos.y();
+}
+
+qreal MapObj::width() 
+{
+    return bbox.width();
+}
+
+qreal MapObj::height() 
+{
+    return bbox.height();
+}
+
+QPointF MapObj::getAbsPos() 
+{
+    return absPos;
+}
+
+QString MapObj::getPos()
+{
+       return qpointfToString(absPos);
+}
+
+void MapObj::move (double x, double y) 
+{
+    absPos.setX( x);
+    absPos.setY( y);
+    bbox.moveTo(QPointF(x,y));
+    clickBox.moveTo(QPointF(x,y));
+}
+
+void MapObj::move (QPointF p)
+{
+       absPos=p;
+       bbox.moveTo (p);
+       clickBox.moveTo (p);
+}
+
+void MapObj::moveBy (double x, double y) 
+{
+    MapObj::move (x+absPos.x(),y+absPos.y() );
+       bbox.moveTo (bbox.x()+x,bbox.y()+y);
+       clickBox.moveTo (clickBox.x()+x,clickBox.y()+y);
+}
+
+QRectF MapObj::getBBox()
+{
+    return bbox;
+}
+
+QRectF MapObj::getClickBox()
+{
+    return clickBox;
+}
+
+
+QSizeF MapObj::getSize()
+{
+    return bbox.size();
+}
+
+
+bool MapObj::isVisibleObj()
+{
+    return visible;
+}
+
+void MapObj::setVisibility(bool v)
+{
+    visible=v;
+}
+
diff --git a/mapobj.h b/mapobj.h
new file mode 100644 (file)
index 0000000..3c05c85
--- /dev/null
+++ b/mapobj.h
@@ -0,0 +1,54 @@
+#ifndef MAPOBJ_H
+#define MAPOBJ_H
+
+#include <QGraphicsScene>
+#include <QGraphicsItem>
+
+#include "xmlobj.h"
+
+#define Z_BBOX      0
+#define Z_XLINK    10
+#define Z_LINK     20
+#define Z_FRAME    50
+#define Z_SELBOX   60
+#define Z_FLOATIMG 65
+#define Z_ICON     80
+#define Z_TEXT    100
+
+/*! \brief Base class for all objects visible on a map
+*/
+
+class MapObj:public XMLObj {
+public:
+    MapObj ();
+    MapObj (QGraphicsScene*);
+    MapObj (MapObj*);
+    virtual ~MapObj ();
+    virtual void init ();
+    virtual void copy (MapObj*);
+       virtual QGraphicsScene* getScene();
+    virtual qreal x();
+    virtual qreal y();
+       virtual qreal width();
+       virtual qreal height();
+       virtual QPointF getAbsPos();
+       virtual QString getPos();                                       // Return position as string (x,y)
+    virtual void move (double x,double y);      // move to absolute Position
+    virtual void move (QPointF p);
+    virtual void moveBy (double x,double y);    // move to relative Position
+    virtual QRectF getBBox();                                  // returns bounding box
+    virtual QRectF getClickBox();                              // returns box to click
+    virtual QSizeF getSize();                                  // returns size of bounding box
+    virtual bool isVisibleObj();
+    virtual void setVisibility(bool);
+    virtual void positionBBox()=0;       
+       virtual void calcBBoxSize()=0;
+protected:  
+    QGraphicsScene* scene;
+    QRectF bbox;                                                                       // bounding box of MO itself
+       QRectF clickBox;                                                                // area where mouseclicks are found
+    QPointF absPos;                                                        // Position on canvas
+    bool visible;
+};
+
+#endif
diff --git a/misc.cpp b/misc.cpp
new file mode 100644 (file)
index 0000000..c3fd35b
--- /dev/null
+++ b/misc.cpp
@@ -0,0 +1,92 @@
+#include <math.h>
+
+#include <qregexp.h>
+#include <qpoint.h>
+#include <stdlib.h>
+
+#include "misc.h"
+
+QString qpointToString (const QPoint &p)
+{
+       return "(" + QString("%1").arg(p.x()) +","+ QString ("%1").arg (p.y()) +")";
+}
+
+QString qpointfToString (const QPointF &p)
+{
+       return "(" + QString("%1").arg(p.x()) +","+ QString ("%1").arg (p.y()) +")";
+}
+
+ostream &operator<< (ostream &stream, QPoint const &p)
+{ 
+       stream << "("<<p.x()<<","<<p.y()<<")";
+       return stream;
+}
+
+ostream &operator<< (ostream &stream, QPointF const &p)
+{ 
+       stream << "("<<p.x()<<","<<p.y()<<")";
+       return stream;
+}
+
+qreal getAngle(const QPointF &p)
+{      
+       // Calculate angle of vector to y-axis
+       if (p.y()==0)
+       {
+               if (p.x()>=0)
+                       return M_PI_2;
+               else
+                       return 3* M_PI_2;
+       } else
+       {
+               if (p.y()>0) 
+                       return (qreal)(M_PI  - atan ( (qreal)(p.x()) / (qreal)(p.y()) ) );
+               else    
+                       if (p.x()<0)
+                               return (qreal)( 2*M_PI - atan ( (qreal)(p.x()) / (qreal)(p.y()) ) );
+                       else    
+                               return (qreal)( - atan ( (qreal)(p.x()) / (qreal)(p.y()) ) );
+       }       
+}
+
+QPointF normalise(const QPointF &p)
+{      
+       // Calculate normalised position (fixed length) 
+
+       qreal px=p.x();
+       qreal py=p.y();
+       qreal x;
+       qreal y;
+       qreal r=150;
+
+       if (px==0)
+       {
+               x=0;
+               if (py>=0)
+                       y=r;
+               else
+                       y=-r;
+       } else
+       {
+               qreal sign;
+               qreal a;
+               if (px>0) 
+                       sign=1; 
+               else 
+                       sign=-1;
+               
+               a=atan (py / px);
+               x=cos (a) * r *sign;
+               y=sin (a) * r *sign;
+       }       
+       return QPoint ((int) (x),(int) (y));
+}
+
+
+qreal max(qreal a, qreal b)
+{
+       if (a>b)
+               return a;
+       return b;
+}
+
diff --git a/misc.h b/misc.h
new file mode 100644 (file)
index 0000000..5907361
--- /dev/null
+++ b/misc.h
@@ -0,0 +1,22 @@
+#ifndef MISC_H
+#define MISC_H
+
+#include <qpoint.h>
+#include <qdir.h>
+#include <iostream>
+
+using namespace std;
+
+
+/////////////////////////////////////////////////////////////////////////////
+QString qpointToString (const QPoint &p);
+QString qpointfToString (const QPointF &p);
+extern ostream &operator<< (ostream &stream, QPoint const &p);
+extern ostream &operator<< (ostream &stream, QPointF const &p);
+qreal getAngle(const QPointF &);
+QPointF normalise (const QPointF &);
+qreal max (qreal,qreal);
+class BranchObj;
+class MapEditor;
+
+#endif
diff --git a/mkdtemp.cpp b/mkdtemp.cpp
new file mode 100644 (file)
index 0000000..a6968d4
--- /dev/null
@@ -0,0 +1,67 @@
+#include <stdint.h>
+#include <string.h>
+#include <errno.h>
+#include <io.h>
+#include <sys/time.h>
+
+extern "C" {
+pid_t getpid (void);
+}
+
+char *
+mkdtemp(char *tmpl)
+{
+    // Implementation based on GLIBC implementation.
+
+    static const char letters[] =
+        "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
+
+    static uint64_t value;
+
+    const unsigned int ATTEMPTS_MIN = (62 * 62 * 62);
+
+    int save_errno = errno;
+
+    size_t len = strlen(tmpl);
+    if (len < 6 || strcmp(&tmpl[len - 6], "XXXXXX"))
+    {
+        errno = EINVAL;
+        return NULL;
+    }
+
+    char *XXXXXX = &tmpl[len - 6];
+
+    uint64_t random_time_bits = time(NULL);
+
+    value += (random_time_bits ^ getpid());
+
+    unsigned int count;
+    for (count = 0; count < ATTEMPTS_MIN; value += 7777, ++count)
+    {
+        uint64_t v = value;
+
+        XXXXXX[0] = letters[v % 62];
+        v /= 62;
+        XXXXXX[1] = letters[v % 62];
+        v /= 62;
+        XXXXXX[2] = letters[v % 62];
+        v /= 62;
+        XXXXXX[3] = letters[v % 62];
+        v /= 62;
+        XXXXXX[4] = letters[v % 62];
+        v /= 62;
+        XXXXXX[5] = letters[v % 62];
+
+               if (mkdir(tmpl) == 0)
+        {
+            errno = save_errno;
+                       return tmpl;
+        }
+
+               if (errno != EEXIST)
+                       return NULL;
+    }
+
+    errno = EEXIST;
+    return NULL;
+}
diff --git a/mkdtemp.h b/mkdtemp.h
new file mode 100644 (file)
index 0000000..941ad3c
--- /dev/null
+++ b/mkdtemp.h
@@ -0,0 +1,6 @@
+#ifndef MKDTEMP_H
+#define MKDTEMP_H
+
+extern char *mkdtemp(char *_template);
+
+#endif
diff --git a/noteobj.cpp b/noteobj.cpp
new file mode 100644 (file)
index 0000000..77fabbe
--- /dev/null
@@ -0,0 +1,225 @@
+#include <qfile.h>
+#include <qtextstream.h>
+#include <qmessagebox.h>
+#include <qregexp.h>
+
+#include "noteobj.h"
+
+/////////////////////////////////////////////////////////////////
+// NoteObj
+/////////////////////////////////////////////////////////////////
+
+NoteObj::NoteObj()
+{
+       clear();
+}
+
+NoteObj::NoteObj(const QString &s)
+{
+       clear();
+       note=s;
+}
+
+void NoteObj::copy (NoteObj other)
+{
+       note=other.note;
+       fonthint=other.fonthint;
+       filenamehint="";
+}
+
+void NoteObj::clear()
+{
+       note="";
+       fonthint="undef";
+       filenamehint="";
+}
+
+void NoteObj::setNote (const QString &s)
+{
+       note=s;
+}
+
+QString NoteObj::getNote()
+{
+       return note;
+}
+
+QString NoteObj::getNoteASCII()
+{
+       return getNoteASCII (QString(""),80);
+}
+
+QString NoteObj::getNoteASCII(const QString &indent, const int &width)
+{
+       QString r=note;
+
+       // Remove all <style...> ...</style>
+       QRegExp rx ("<style.*>.*</style>");
+       rx.setMinimal(true);
+       r.replace (rx,"");
+
+       // convert all "<br*>" to "\n"
+       rx.setPattern ("<br.*>");
+       r.replace (rx,"\n");
+
+       // convert all "</p>" to "\n"
+       rx.setPattern ("</p>");
+       r.replace (rx,"\n");
+       
+       // remove all remaining tags 
+       rx.setPattern ("<.*>");
+       r.replace (rx,"");
+
+       // If string starts with \n now, remove it.
+       // It would be wrong in an OOo export for example
+       while (r.at(0)=='\n') r.remove (0,1);
+       
+       // convert "&", "<" and ">"
+       rx.setPattern ("&gt;");
+       r.replace (rx,">");
+       rx.setPattern ("&lt;");
+       r.replace (rx,"<");
+       rx.setPattern ("&amp;");
+       r.replace (rx,"&");
+       rx.setPattern ("&quot;");
+       r.replace (rx,"\"");
+
+       // Indent everything
+       rx.setPattern ("^\n");
+       r.replace (rx,indent);
+       r=indent + r;   // Don't forget first line
+
+/* FIXME       wrap text at width
+       if (fonthint !="fixed")
+       {
+       }
+*/     
+       r=indent+"\n"+r+indent+"\n\n";
+       return r;
+}
+
+QString NoteObj::getNoteOpenDoc()
+{
+       // Evil hack to transform QT Richtext into
+       // something which can be used in OpenDoc format
+       // 
+       // TODO create clean XML transformation which also
+       // considers fonts, colors, ...
+
+       QString r=note;
+
+       // convert all "<br*>"
+       QRegExp re("<br.*>");
+       re.setMinimal(true);
+       r.replace (re,"<text:line-break/>");
+
+       // convert all "<p>" 
+       re.setPattern ("<p>");
+       r.replace (re,"<text:line-break/>");
+       
+       // Remove all other tags, e.g. paragraphs will be added in 
+       // templates used during export
+       re.setPattern ("</?html.*>");
+       r.replace (re,"");
+       re.setPattern ("</?head.*>");
+       r.replace (re,"");
+       re.setPattern ("</?body.*>");
+       r.replace (re,"");
+       re.setPattern ("</?meta.*>");
+       r.replace (re,"");
+       re.setPattern ("</?span.*>");
+       r.replace (re,"");
+       re.setPattern ("</?p.*>");
+       r.replace (re,"");
+
+       r="<text:span text:style-name=\"vym-notestyle\">"+r+"</text:span>";
+       return r;
+}
+
+void NoteObj::setFontHint (const QString &s)
+{
+       // only for backward compatibility (pre 1.5 )
+       fonthint=s;
+}
+
+QString NoteObj::getFontHint()
+{
+       // only for backward compatibility (pre 1.5 )
+       return fonthint;
+}
+
+void NoteObj::setFilenameHint (const QString &s)
+{
+       filenamehint=s;
+}
+
+QString NoteObj::getFilenameHint()
+{
+       return filenamehint;
+}
+
+bool NoteObj::isEmpty ()
+{
+       return note.isEmpty();
+}
+
+QString NoteObj::saveToDir ()
+{
+       QString n=note;
+
+       // Remove the doctype, which will confuse parsing 
+       // with XmlReader in Qt >= 4.4
+       QRegExp rx("<!DOCTYPE.*>");
+       rx.setMinimal(true);
+       n.replace (rx,"");
+       
+       // QTextEdit may generate fontnames with unquoted &, like
+       // in "Lucida B&H". This is invalid in XML and thus would crash
+       // the XML parser
+
+       // More invalid XML is generated with bullet lists:
+       // There are 2 <style> tags in one <li>, so we merge them here
+       int pos=0;
+       bool inbracket=false;
+       int begin_bracket=0;
+       bool inquot=false;
+       while (pos<n.length())
+       {
+               if (n.mid(pos,1)=="<") 
+               {
+                       inbracket=true;
+                       begin_bracket=pos;
+               }
+               if (n.mid(pos,1)==">") 
+               {
+                       inbracket=false;
+                       QString s=n.mid(begin_bracket,pos-begin_bracket+1);
+                       int sl=s.length();
+                       if (s.count("style=\"")>1)
+                       {
+                               rx.setPattern("style=\\s*\"(.*)\"\\s*style=\\s*\"(.*)\"");
+                               s.replace(rx,"style=\"\\1 \\2\"");
+                               n.replace (begin_bracket,sl,s);
+                               pos=pos-(sl-s.length());
+                       }       
+               }       
+               if (n.mid(pos,1)=="\"" && inbracket)
+               {
+                       if (!inquot)
+                               inquot=true;
+                       else
+                               inquot=false;
+               }
+               if (n.mid(pos,1)=="&" && inquot)
+               {
+                       // Now we are inside  <  "  "  >
+                       n.replace(pos,1,"&amp;");
+                       pos=pos+3;
+               }
+               pos++;
+       }
+
+       
+       return beginElement ("htmlnote",attribut("fonthint",fonthint)) + "\n"+ n+ "\n" +endElement ("htmlnote");
+}
+
diff --git a/noteobj.h b/noteobj.h
new file mode 100644 (file)
index 0000000..251158f
--- /dev/null
+++ b/noteobj.h
@@ -0,0 +1,37 @@
+#ifndef NOTEOBJ_H
+#define NOTEOBJ_H
+
+#include <qstring.h>
+
+class NoteObj;
+
+#include "xmlobj.h"
+
+/*! \brief The text note belonging to one OrnamentedObj */
+
+
+class NoteObj:public XMLObj
+{
+public:
+       NoteObj();
+       NoteObj(const QString&);
+       void copy (NoteObj);
+       void clear();
+       void setNote (const QString&);
+       QString getNote();
+       QString getNoteASCII();
+       QString getNoteASCII(const QString &indent, const int &width);
+       QString getNoteOpenDoc();
+       void setFontHint (const QString&);
+       QString getFontHint ();
+       void setFilenameHint (const QString&);
+       QString getFilenameHint ();
+       bool isEmpty();
+       QString saveToDir();
+
+private:
+       QString note;
+       QString fonthint;
+       QString filenamehint;
+};
+#endif
diff --git a/object_script.vym.Debug b/object_script.vym.Debug
new file mode 100644 (file)
index 0000000..00ae8fd
--- /dev/null
@@ -0,0 +1,76 @@
+INPUT(\r
+./debug\aboutdialog.o\r
+./debug\animpoint.o\r
+./debug\attribute.o\r
+./debug\attributedelegate.o\r
+./debug\attributedialog.o\r
+./debug\attributewidget.o\r
+./debug\branchobj.o\r
+./debug\branchpropwindow.o\r
+./debug\editxlinkdialog.o\r
+./debug\exportoofiledialog.o\r
+./debug\exports.o\r
+./debug\exportxhtmldialog.o\r
+./debug\extrainfodialog.o\r
+./debug\file.o\r
+./debug\findwindow.o\r
+./debug\flagobj.o\r
+./debug\flagrowobj.o\r
+./debug\floatimageobj.o\r
+./debug\floatobj.o\r
+./debug\frameobj.o\r
+./debug\geometry.o\r
+./debug\headingobj.o\r
+./debug\highlighter.o\r
+./debug\historywindow.o\r
+./debug\imageobj.o\r
+./debug\imports.o\r
+./debug\linkablemapobj.o\r
+./debug\main.o\r
+./debug\mainwindow.o\r
+./debug\mapcenterobj.o\r
+./debug\mapeditor.o\r
+./debug\mapobj.o\r
+./debug\misc.o\r
+./debug\noteobj.o\r
+./debug\options.o\r
+./debug\ornamentedobj.o\r
+./debug\parser.o\r
+./debug\process.o\r
+./debug\selection.o\r
+./debug\showtextdialog.o\r
+./debug\simplescripteditor.o\r
+./debug\texteditor.o\r
+./debug\version.o\r
+./debug\vymmodel.o\r
+./debug\xlinkobj.o\r
+./debug\xml-base.o\r
+./debug\xml-vym.o\r
+./debug\xml-freemind.o\r
+./debug\xmlobj.o\r
+./debug\xsltproc.o\r
+./debug\settings.o\r
+./debug\warningdialog.o\r
+./debug\mkdtemp.o\r
+./debug\moc_aboutdialog.o\r
+./debug\moc_attributedelegate.o\r
+./debug\moc_attributedialog.o\r
+./debug\moc_attributewidget.o\r
+./debug\moc_branchpropwindow.o\r
+./debug\moc_editxlinkdialog.o\r
+./debug\moc_exportoofiledialog.o\r
+./debug\moc_exportxhtmldialog.o\r
+./debug\moc_extrainfodialog.o\r
+./debug\moc_findwindow.o\r
+./debug\moc_highlighter.o\r
+./debug\moc_historywindow.o\r
+./debug\moc_linkablemapobj.o\r
+./debug\moc_mainwindow.o\r
+./debug\moc_mapeditor.o\r
+./debug\moc_process.o\r
+./debug\moc_showtextdialog.o\r
+./debug\moc_simplescripteditor.o\r
+./debug\moc_texteditor.o\r
+./debug\moc_vymmodel.o\r
+./debug\moc_warningdialog.o\r
+);\r
diff --git a/object_script.vym.Release b/object_script.vym.Release
new file mode 100644 (file)
index 0000000..e83c02b
--- /dev/null
@@ -0,0 +1,76 @@
+INPUT(\r
+./release\aboutdialog.o\r
+./release\animpoint.o\r
+./release\attribute.o\r
+./release\attributedelegate.o\r
+./release\attributedialog.o\r
+./release\attributewidget.o\r
+./release\branchobj.o\r
+./release\branchpropwindow.o\r
+./release\editxlinkdialog.o\r
+./release\exportoofiledialog.o\r
+./release\exports.o\r
+./release\exportxhtmldialog.o\r
+./release\extrainfodialog.o\r
+./release\file.o\r
+./release\findwindow.o\r
+./release\flagobj.o\r
+./release\flagrowobj.o\r
+./release\floatimageobj.o\r
+./release\floatobj.o\r
+./release\frameobj.o\r
+./release\geometry.o\r
+./release\headingobj.o\r
+./release\highlighter.o\r
+./release\historywindow.o\r
+./release\imageobj.o\r
+./release\imports.o\r
+./release\linkablemapobj.o\r
+./release\main.o\r
+./release\mainwindow.o\r
+./release\mapcenterobj.o\r
+./release\mapeditor.o\r
+./release\mapobj.o\r
+./release\misc.o\r
+./release\noteobj.o\r
+./release\options.o\r
+./release\ornamentedobj.o\r
+./release\parser.o\r
+./release\process.o\r
+./release\selection.o\r
+./release\showtextdialog.o\r
+./release\simplescripteditor.o\r
+./release\texteditor.o\r
+./release\version.o\r
+./release\vymmodel.o\r
+./release\xlinkobj.o\r
+./release\xml-base.o\r
+./release\xml-vym.o\r
+./release\xml-freemind.o\r
+./release\xmlobj.o\r
+./release\xsltproc.o\r
+./release\settings.o\r
+./release\warningdialog.o\r
+./release\mkdtemp.o\r
+./release\moc_aboutdialog.o\r
+./release\moc_attributedelegate.o\r
+./release\moc_attributedialog.o\r
+./release\moc_attributewidget.o\r
+./release\moc_branchpropwindow.o\r
+./release\moc_editxlinkdialog.o\r
+./release\moc_exportoofiledialog.o\r
+./release\moc_exportxhtmldialog.o\r
+./release\moc_extrainfodialog.o\r
+./release\moc_findwindow.o\r
+./release\moc_highlighter.o\r
+./release\moc_historywindow.o\r
+./release\moc_linkablemapobj.o\r
+./release\moc_mainwindow.o\r
+./release\moc_mapeditor.o\r
+./release\moc_process.o\r
+./release\moc_showtextdialog.o\r
+./release\moc_simplescripteditor.o\r
+./release\moc_texteditor.o\r
+./release\moc_vymmodel.o\r
+./release\moc_warningdialog.o\r
+);\r
diff --git a/options.cpp b/options.cpp
new file mode 100644 (file)
index 0000000..fcbdc16
--- /dev/null
@@ -0,0 +1,141 @@
+#include "options.h"
+
+#include <iostream>
+#include <QApplication>
+
+
+using namespace std;
+
+
+Option::Option()
+{
+       name="";
+       sName="";
+       lName="";
+       type=Switch;
+       sarg="";
+       active=false;
+}
+
+Option::Option (const QString &n, const Type &t, const QString &s, const QString &l)
+{
+       sName="-"+s;
+       lName="--"+l;
+       type=t;
+       name=n;
+}
+
+void Option::set(const QString &n, const Type &t, const QString &s, const QString &l)
+{
+       sName="-"+s;
+       lName="--"+l;
+       type=t;
+       name=n;
+}
+
+QString Option::getName () { return name; }
+QString Option::getShort () { return sName; }
+QString Option::getLong() { return lName; }
+Option::Type Option::getType() { return type; }
+void Option::setArg(const QString& s) { sarg=s; }
+QString Option::getArg() { return sarg; }      
+void Option::setActive() { active=true; }      
+bool Option::isActive() { return active; }
+
+///////////////////////////////////////////////////////////////
+Options::Options() {}  
+
+int Options::parse()
+{
+       QStringList arglist=qApp->arguments();
+
+       // Get program name
+       progname=arglist.first();
+       arglist.pop_front();
+
+       // Work through rest of options
+       bool isFile;
+       for (int i=0; i< arglist.size(); ++i)
+       {
+               isFile=true;
+               if (arglist[i].left(1)=="-")
+               {
+                       // Compare given option to all defined options
+                       for (int j=0; j < optlist.size(); ++j)
+                       {
+                               if (arglist.at(i)==optlist.value(j).getShort() || 
+                                       arglist.at(i)==optlist.value(j).getLong())
+                               {       
+                                       optlist[j].setActive();
+                                       isFile=false;
+                                       if (optlist[j].getType()==Option::String)
+                                       {
+                                               i++;
+                                               if (i==arglist.size())
+                                               {
+                                                       qWarning ("Error: argument to option missing");
+                                                       return 1;
+                                               }
+                                               optlist[j].setArg (arglist[i]);
+                                               isFile=false;
+                                       }
+                                       break;
+                               } 
+                       }
+                       if (isFile)
+                       {
+                               qWarning("Error: Unknown argument ");
+                               return 1;
+                       }
+               } else
+                       filelist.append (arglist[i]);
+       }
+       return 0;
+}
+
+void Options::add (Option o)
+{
+       optlist.append (o);
+}
+
+void Options::add (const QString &n, const Option::Type &t=Option::Switch, const QString &s="", const QString &l="")
+{
+       Option o;
+       o.set (n,t,s,l);
+       optlist.append (o);
+}
+
+void Options::setHelpText (const QString &s)
+{
+       helptext=s;
+}
+       
+QString Options::getHelpText ()
+{
+       return helptext;
+}
+
+QString Options::getProgramName()
+{
+       return progname;
+}
+
+QStringList Options::getFileList ()
+{
+       return filelist;
+}
+
+bool Options::isOn(const QString &s)
+{
+       for (int i=0; i<optlist.size(); ++i)
+               if (optlist[i].getName()==s && optlist[i].isActive() )
+                       return true;
+       return false;
+}
+
+QString Options::getArg(const QString &s)
+{
+       for (int i=0; i<optlist.size(); ++i)
+               if (optlist[i].getName()==s) return optlist[i].getArg();
+       return QString();
+}
diff --git a/options.h b/options.h
new file mode 100644 (file)
index 0000000..36979f8
--- /dev/null
+++ b/options.h
@@ -0,0 +1,60 @@
+#ifndef OPTIONS_H
+#define OPTIONS_H
+
+#include <QStringList>
+
+/*! \brief A single option which is listed in Options */
+class Option
+{
+public:
+       /*! Types of options */
+       enum Type  {
+               Switch, //!< No paramater
+               String  //!< Parameter is a string
+       };
+
+       Option();
+       Option(const QString &, const Type &, const QString &, const QString &);
+       void set (const QString &, const Type &, const QString &, const QString &);
+       QString getName();
+       QString getShort();
+       QString getLong();
+       Type getType();
+       void setArg(const QString &);
+       QString getArg();
+       void setActive();
+       bool isActive();
+private:
+       QString name;
+       Type type;
+       QString sName;
+       QString lName;
+       QString sarg;
+       bool active;
+};
+
+
+/*! \brief Simple class to deal with command line options */
+
+class Options
+{
+public:
+       Options();
+       int parse();
+       void add (Option );
+       void add (const QString &,const Option::Type &, const QString &, const QString&);
+       void setHelpText(const QString&);
+       QString getHelpText();
+       QString getProgramName();
+       QStringList getFileList();
+       bool isOn (const QString &);
+       QString getArg (const QString &);
+
+private:
+       QString progname;
+       QString helptext;
+       QStringList filelist;
+    QList <Option> optlist;
+};
+
+#endif
diff --git a/ornamentedobj.cpp b/ornamentedobj.cpp
new file mode 100644 (file)
index 0000000..6eae417
--- /dev/null
@@ -0,0 +1,511 @@
+#include <typeinfo> 
+
+#include "ornamentedobj.h"
+#include "texteditor.h"
+#include "mapeditor.h"
+#include "linkablemapobj.h"
+
+extern TextEditor *textEditor;
+extern FlagRowObj *systemFlagsDefault;
+extern FlagRowObj *standardFlagsDefault;
+
+
+/////////////////////////////////////////////////////////////////
+// OrnamentedObj
+/////////////////////////////////////////////////////////////////
+
+OrnamentedObj::OrnamentedObj():LinkableMapObj()
+{
+  //  cout << "Const OrnamentedObj ()\n";
+    init ();
+}
+
+OrnamentedObj::OrnamentedObj(QGraphicsScene* s) :LinkableMapObj(s)
+{
+//    cout << "Const OrnamentedObj (s)\n";
+    init ();
+}
+
+OrnamentedObj::OrnamentedObj (OrnamentedObj* lmo) : LinkableMapObj (lmo->scene)
+{
+    copy (lmo);
+}
+
+OrnamentedObj::~OrnamentedObj()
+{
+    delete heading;
+       delete systemFlags;
+       delete standardFlags;
+       delete frame;
+}
+
+
+void OrnamentedObj::init ()
+{
+       heading = new HeadingObj(scene);
+       heading->move (absPos.x(), absPos.y());
+
+       note.setNote("");
+       note.setFontHint (textEditor->getFontHintDefault() );
+       isNoteInEditor=false;
+
+       systemFlags=new FlagRowObj(scene);
+       systemFlags->clone(systemFlagsDefault);
+       systemFlags->setName ("systemFlags");
+       
+       standardFlags=new FlagRowObj(scene);
+       standardFlags->clone(standardFlagsDefault);
+       standardFlags->setName ("standardFlags");
+
+       attributes.clear();
+
+       frame = new FrameObj (scene);
+
+       hideExport=false;
+       hidden=false;
+
+       url="";
+       vymLink="";
+       
+}
+
+void OrnamentedObj::copy (OrnamentedObj* other)
+{
+    LinkableMapObj::copy(other);
+       heading->copy(other->heading);
+    setColor   (other->heading->getColor());   
+
+       note.copy (other->note);
+       systemFlags->copy (other->systemFlags);
+       standardFlags->copy (other->standardFlags);
+
+       ornamentsBBox=other->ornamentsBBox;
+
+       hideExport=other->hideExport;
+       url=other->url;
+       vymLink=other->vymLink;
+}
+
+QString OrnamentedObj::getHeading()
+{
+    return heading->text();
+}
+
+void OrnamentedObj::setLinkColor()
+{
+       if (mapEditor->getMapLinkColorHint()==HeadingColor)
+               LinkableMapObj::setLinkColor (heading->getColor());
+       else    
+               LinkableMapObj::setLinkColor (mapEditor->getMapDefLinkColor());
+}
+
+void OrnamentedObj::setColor (QColor col)
+{
+    heading->setColor(col);
+       setLinkColor();
+}
+
+QColor OrnamentedObj::getColor ()
+{
+    return heading->getColor();
+}
+
+FrameObj::FrameType OrnamentedObj::getFrameType()
+{
+       return frame->getFrameType();
+}
+
+QString OrnamentedObj::getFrameTypeName()
+{
+       return frame->getFrameTypeName();
+}
+
+void OrnamentedObj::setFrameType(const FrameObj::FrameType &t)
+{
+       frame->setFrameType(t);
+       if (t == FrameObj::NoFrame)
+               linkpos=LinkableMapObj::Bottom;
+       else    
+               linkpos=LinkableMapObj::Middle;
+
+       calcBBoxSize();
+       positionBBox();
+       requestReposition();
+}
+
+void OrnamentedObj::setFrameType(const QString &t)
+{
+       frame->setFrameType(t);
+       if (frame->getFrameType() == FrameObj::NoFrame)
+               linkpos=LinkableMapObj::Bottom;
+       else    
+               linkpos=LinkableMapObj::Middle;
+
+       calcBBoxSize();
+       positionBBox();
+       requestReposition();
+}
+
+void OrnamentedObj::setFramePadding (const int &i)
+{
+       frame->setPadding (i);
+       calcBBoxSize();
+       positionBBox();
+       requestReposition();
+}
+
+int OrnamentedObj::getFramePadding ()
+{
+       return frame->getPadding();
+}
+
+void OrnamentedObj::setFrameBorderWidth (const int &i)
+{
+       frame->setBorderWidth(i);
+       calcBBoxSize();
+       positionBBox();
+       requestReposition();
+}
+
+int OrnamentedObj::getFrameBorderWidth()
+{
+       return frame->getBorderWidth();
+}
+
+void OrnamentedObj::setFramePenColor(QColor col)
+{
+       frame->setPenColor (col);
+}
+
+QColor OrnamentedObj::getFramePenColor()
+{
+       return frame->getPenColor ();
+}
+
+void OrnamentedObj::setFrameBrushColor(QColor col)
+{
+       frame->setBrushColor (col);
+}
+
+QColor OrnamentedObj::getFrameBrushColor()
+{
+       return frame->getBrushColor ();
+}
+
+void OrnamentedObj::positionContents()
+{
+       double d=frame->getPadding()/2;
+       double x=absPos.x();
+       double y=absPos.y();
+
+       double ox,oy;   // Offset due to padding
+
+       ox=leftPad + d;
+       oy=topPad + d;
+       
+       systemFlags-> move (ox +x , oy + y );
+
+       // vertical align heading to bottom
+    heading->move (ox + x + systemFlags->getBBox().width(),
+                                  oy + y + ornamentsBBox.height() - heading->getHeight() 
+                                       );
+       standardFlags->move (ox +x + heading->getWidth() + systemFlags->getBBox().width() , oy + y );
+
+       ornamentsBBox.moveTopLeft ( QPointF ((int)(ox+x),(int)(oy+y)));
+       clickBox.moveTopLeft (QPointF ((int)(ox + x), (int)(oy + y)));
+}
+
+void OrnamentedObj::move (double x, double y)
+{
+       MapObj::move (x,y);
+       positionContents();
+       updateLink();
+       requestReposition();
+}
+
+void OrnamentedObj::move (QPointF p)
+{
+       move (p.x(), p.y());
+}      
+
+void OrnamentedObj::moveBy (double x, double y)
+{
+
+       MapObj::moveBy (x,y);
+    frame->moveBy (x,y);
+    systemFlags->moveBy (x,y);
+    standardFlags->moveBy (x,y);
+    heading->moveBy (x,y);
+       updateLink();
+       requestReposition();
+}
+
+void OrnamentedObj::moveBy (QPointF p)
+{
+       moveBy (p.x(), p.y());
+}      
+
+void OrnamentedObj::move2RelPos(double x, double y)
+{
+       setRelPos (QPointF(x,y));
+       if (parObj)
+       {
+               QPointF p=parObj->getChildPos();
+               move (p.x()+x, p.y() +y);
+       }
+}
+
+void OrnamentedObj::move2RelPos(QPointF p)
+{
+       move2RelPos (p.x(),p.y());
+}
+
+void OrnamentedObj::setNote(QString s)
+{
+       note.setNote(s);
+       updateNoteFlag();
+}
+
+void OrnamentedObj::setNote(NoteObj n)
+{
+       note=n;
+       updateNoteFlag();
+}
+
+QString OrnamentedObj::getNote()
+{
+    return note.getNote();
+}
+
+QString OrnamentedObj::getNoteASCII(const QString &indent, const int &width)
+{
+    return note.getNoteASCII(indent,width);
+}
+
+QString OrnamentedObj::getNoteASCII()
+{
+    return note.getNoteASCII();
+}
+
+QString OrnamentedObj::getNoteOpenDoc()
+{
+    return note.getNoteOpenDoc();
+}
+
+void OrnamentedObj::setURL(QString s)
+{
+       url=s;
+       if (!url.isEmpty())
+               systemFlags->activate("url");
+       else    
+               systemFlags->deactivate("url");
+       calcBBoxSize();                 // recalculate bbox
+    positionBBox();                    // rearrange contents
+       forceReposition();
+}
+
+QString OrnamentedObj::getURL()
+{
+       return url;
+}
+
+void OrnamentedObj::setVymLink(QString s)
+{
+       if (!s.isEmpty())
+       {
+               // We need the relative (from loading) 
+               // or absolute path (from User event)
+               // and build the absolute path.
+               // Note: If we have relative, use path of
+               // current map to build absolute path
+               QDir d(s);
+               if (!d.path().startsWith ("/"))
+               {
+                       QString p=mapEditor->getDestPath();
+                       int i=p.findRev("/",-1);
+                       d.setPath(p.left(i)+"/"+s);
+                       d.convertToAbs();
+               }
+               vymLink=d.path();
+               systemFlags->activate("vymLink");
+       }       
+       else    
+       {
+               systemFlags->deactivate("vymLink");
+               vymLink="";
+       }       
+       calcBBoxSize();                 // recalculate bbox
+    positionBBox();                    // rearrange contents
+       forceReposition();
+}
+
+QString OrnamentedObj::getVymLink()
+{
+       return vymLink;
+}
+
+
+void OrnamentedObj::setAttributes (const QList <Attribute> &al)
+{
+       attributes=al;
+}
+
+QList <Attribute> OrnamentedObj::getAttributes()
+{
+       return attributes;
+}
+
+void OrnamentedObj::clearStandardFlags()
+{
+       standardFlags->deactivateAll();
+       calcBBoxSize();
+       positionBBox();
+       move (absPos.x(), absPos.y() );
+       forceReposition();
+}
+
+void OrnamentedObj::toggleStandardFlag(QString f, bool exclusive)
+{
+       standardFlags->toggle(f,exclusive);
+       calcBBoxSize();
+       positionBBox();
+       move (absPos.x(), absPos.y() );
+       forceReposition();
+}
+
+void OrnamentedObj::activateStandardFlag(QString f)
+{
+       standardFlags->activate(f);
+       calcBBoxSize();
+       positionBBox();
+       move (absPos.x(), absPos.y() );
+       forceReposition();
+}
+
+void OrnamentedObj::deactivateStandardFlag(QString f)
+{
+       standardFlags->deactivate(f);
+       calcBBoxSize();
+       positionBBox();
+       move (absPos.x(), absPos.y() );
+       forceReposition();
+}
+
+bool OrnamentedObj::isSetStandardFlag (QString f)
+{
+       return standardFlags->isActive(f);
+}
+
+QString OrnamentedObj::getSystemFlagName(const QPointF &p)
+{
+       return systemFlags->getFlagName(p);     
+}
+
+bool OrnamentedObj::isActiveFlag (const QString & fname)
+{
+       if (standardFlags->isActive (fname) ) return true;
+       return false;
+}
+
+void OrnamentedObj::getNoteFromTextEditor ()
+{
+       note.setFilenameHint (textEditor->getFilename());
+       note.setFontHint (textEditor->getFontHint() );
+       setNote( textEditor->getText() );
+}
+
+void OrnamentedObj::updateNoteFlag()
+{
+       bool noteEmpty;
+       if (isNoteInEditor)
+               noteEmpty=textEditor->isEmpty();
+       else    
+               noteEmpty=note.isEmpty();
+
+       if (!noteEmpty)
+       {       
+               if (systemFlags->isActive ("note")) return;
+               systemFlags->activate("note");
+       }       
+       else            
+       {       
+               if (!systemFlags->isActive ("note")) return;
+               systemFlags->deactivate("note");
+       }       
+       mapEditor->setChanged();
+       calcBBoxSize();
+       positionBBox(); 
+       move (absPos.x(), absPos.y() );
+       forceReposition();
+       
+}      
+
+void OrnamentedObj::updateFlagsToolbar()
+{
+       standardFlags->updateToolbar();
+}
+
+void OrnamentedObj::setHideInExport(bool b)
+{
+       if (parObj)
+       {
+               // Don't allow to MapCenter to be hidden
+               hideExport=b;
+               if (b)
+                       systemFlags->activate("hideInExport");
+               else    
+                       systemFlags->deactivate("hideInExport");
+               calcBBoxSize();
+               positionBBox();
+               requestReposition();    
+       }
+}      
+
+bool OrnamentedObj::hideInExport()
+{
+       return hideExport;
+}      
+
+bool OrnamentedObj::isHidden()
+{
+       return hidden;
+}      
+
+QString OrnamentedObj::getOrnXMLAttr()
+{
+       QString posAttr;
+
+       if (depth==0)
+               posAttr=                
+                       attribut("absPosX",QString().setNum(absPos.x())) +
+                       attribut("absPosY",QString().setNum(absPos.y())); 
+       else
+       {
+               if (depth==1 || typeid (*this)==typeid (FloatImageObj))
+               {
+                       if (relPos.x()==0 && relPos.y()==0)
+                               setRelPos();
+                       posAttr=
+                               attribut("relPosX",QString().setNum(relPos.x())) +
+                               attribut("relPosY",QString().setNum(relPos.y())); 
+               } else
+                       posAttr="";
+       }       
+
+       QString urlAttr;
+       if (!url.isEmpty())
+               urlAttr=attribut ("url",url);
+
+       QString vymLinkAttr;
+       if (!vymLink.isEmpty())
+               vymLinkAttr=attribut ("vymLink",convertToRel(mapEditor->getDestPath(),vymLink) );
+
+       QString hideExpAttr;
+       if (hideExport)
+               hideExpAttr= attribut("hideInExport","true");
+       else    
+               hideExpAttr="";
+
+       return posAttr +urlAttr +vymLinkAttr +getLinkAttr() +hideExpAttr;
+}
+
diff --git a/ornamentedobj.h b/ornamentedobj.h
new file mode 100644 (file)
index 0000000..6b5ff53
--- /dev/null
@@ -0,0 +1,103 @@
+#ifndef ORNAMENTEDOBJ_H
+#define ORNAMENTEDOBJ_H
+
+#include "attribute.h"
+#include "frameobj.h"
+#include "linkablemapobj.h"
+
+/*! \brief Adds various ornaments and data to the class LinkableMapObj
+
+The ornaments are:
+       - frame
+       - note
+       - references
+               - URL
+               -vymLink
+       - flags
+               - standard flags
+               - system flags
+       - attributes (key/value pairs)  
+ */
+
+class OrnamentedObj:public LinkableMapObj {
+public:        
+    OrnamentedObj ();
+    OrnamentedObj (QGraphicsScene*);
+    OrnamentedObj (OrnamentedObj*);
+    ~OrnamentedObj ();
+    virtual void init ();
+    virtual void copy (OrnamentedObj*);
+
+    virtual QString getHeading();                      //!< returns the heading        
+       virtual void setLinkColor();                    // sets color according to colorhint, overloaded
+       virtual void setColor(QColor);                  // set the color of text and link
+       QColor getColor ();                                             // get color of heading
+
+       virtual FrameObj::FrameType getFrameType ();
+       virtual QString getFrameTypeName ();
+       virtual void setFrameType (const FrameObj::FrameType &);
+       virtual void setFrameType (const QString &);
+       virtual void setFramePadding (const int &);
+       virtual int  getFramePadding ();
+       virtual void setFrameBorderWidth(const int &);
+       virtual int  getFrameBorderWidth ();
+       virtual void setFramePenColor (QColor);
+       virtual QColor getFramePenColor ();
+       virtual void setFrameBrushColor (QColor);
+       virtual QColor getFrameBrushColor ();
+
+    virtual void positionContents();
+    virtual void move   (double,double);
+    virtual void move   (QPointF);
+    virtual void moveBy (double,double);
+    virtual void moveBy (QPointF);
+    virtual void move2RelPos (QPointF);                // move relativly to parent^
+    virtual void move2RelPos (double,double);
+    virtual void setNote(QString);                     // set note
+    virtual void setNote(NoteObj);                     // set note
+    virtual QString getNote();                         // returns note (HTML)
+    virtual QString getNoteASCII(const QString &indent, const int &width); // returns note     (ASCII)
+    virtual QString getNoteASCII();                    // returns note (ASCII)
+    virtual QString getNoteOpenDoc();          // returns note (OpenDoc)
+
+    virtual void setURL (QString);
+    virtual QString getURL ();
+
+    virtual void setVymLink (QString);
+    virtual QString getVymLink ();
+
+       virtual void setAttributes (const QList <Attribute> &al);
+       virtual QList <Attribute> getAttributes ();
+
+       virtual void clearStandardFlags();
+       virtual void toggleStandardFlag(QString, bool exclusive=false);
+       virtual void activateStandardFlag(QString);
+       virtual void deactivateStandardFlag(QString);
+       virtual bool isSetStandardFlag(QString);
+       virtual QString getSystemFlagName (const QPointF &p);
+       virtual bool isActiveFlag(const QString&);      // check if flag is set
+       virtual void updateNoteFlag();
+       virtual void getNoteFromTextEditor ();
+       virtual void updateFlagsToolbar();
+       virtual void setHideInExport(bool);             // set export of object (and childs)
+       virtual bool hideInExport();
+       virtual bool isHidden ();
+       virtual QString getOrnXMLAttr();                // get attributes for saveToDir
+
+protected:
+    HeadingObj *heading;                       // Heading
+       NoteObj note;                                   // Notes
+       bool isNoteInEditor;                    // true if TextEditor has this note
+       FlagRowObj *systemFlags;                // System Flags
+       FlagRowObj *standardFlags;              // Standard Flags
+       FrameObj *frame;                                // frame around object
+       QRectF ornamentsBBox;                   // bbox of flags and heading
+       QString url;                                    // url to external doc
+       QString vymLink;                                // path to another map
+       QList <Attribute> attributes;   // List with attributes
+
+       bool hideExport;                                // hide in exports if set
+       bool hidden;                                    // true if temporary hidden
+};
+
+#endif
diff --git a/parser.cpp b/parser.cpp
new file mode 100644 (file)
index 0000000..523ac12
--- /dev/null
@@ -0,0 +1,349 @@
+#include "parser.h"
+
+#include <QRegExp>
+#include <iostream>
+
+using namespace std;
+
+Parser::Parser()
+{
+       initParser();
+}
+
+void Parser::initParser()
+{
+       initAtom();
+       current=-1;
+}
+
+void Parser::initAtom()
+{
+       atom="";
+       com="";
+       paramList.clear();
+       resetError();
+}
+
+void Parser::parseAtom (QString s)
+{
+       initAtom();
+       atom=s;
+       QRegExp re;
+       int pos;
+
+       // Strip WS at beginning
+       re.setPattern ("\\w");
+       re.setMinimal (true);
+       pos=re.search (atom);
+       if (pos>=0)
+               s=s.right(s.length()-pos);
+
+       // Get command
+       re.setPattern ("\\b(.*)(\\s|\\()");
+       pos=re.search (s);
+       if (pos>=0)
+               com=re.cap(1);
+
+       // Get parameters
+       paramList.clear();
+       re.setPattern ("\\((.*)\\)");
+       pos=re.search (s);
+       //cout << "  s="<<qPrintable(s)<<endl;
+       //cout << "com="<<qPrintable(com)<<"  pos="<<pos<<endl<<endl;
+       if (pos>=0)
+       {
+               QString s=re.cap(1);
+               QString a;
+               bool inquote=false;
+               pos=0;
+               if (!s.isEmpty())
+               {
+                       while (pos<s.length())
+                       {
+                               if (s.at(pos)=='\"') 
+                               {
+                                       if (inquote)
+                                               inquote=false;
+                                       else    
+                                               inquote=true;
+                               }
+
+                               if (s.at(pos)==',' && !inquote)
+                               {
+                                       a=s.left(pos);
+                                       paramList.append(a);
+                                       s=s.right(s.length()-pos-1);
+                                       pos=0;
+                               } else
+                                       pos++;
+                               
+                       }
+                       paramList.append (s);
+               }       
+       }       
+}
+
+QString Parser::getAtom()
+{
+       return atom;
+}
+
+QString Parser::getCommand()
+{
+       return com;
+}
+
+QStringList Parser::getParameters()
+{
+       return paramList;
+}
+
+int Parser::parCount()
+{
+       return paramList.count();
+}
+
+
+QString Parser::errorMessage()
+{
+       QString l;
+       switch (errLevel)
+       {
+               case NoError: l="No Error";
+               case Warning: l="Warning";
+               case Aborted: l="Aborted";
+       }
+       return QString ("Error Level: %1\n    Command: %2\nDescription: %3")
+               .arg(l).arg(com).arg(errDescription);
+}
+
+QString Parser::errorDescription()
+{
+       return errDescription;
+}
+
+ErrorLevel Parser::errorLevel()
+{
+       return errLevel;
+}
+
+void Parser::setError(ErrorLevel level, const QString &description)
+{
+       errDescription=description;
+       errLevel=level;
+}
+
+void Parser::resetError ()
+{
+       errMessage="";
+       errDescription="";
+       errLevel=NoError;
+}
+
+
+bool Parser::checkParCount (QList <int> plist)
+{
+       QStringList expList;
+       QString expected;
+       for (int i=0; i<plist.count();i++)
+       {
+               if (checkParCount (plist[i])) 
+               {
+                       resetError();
+                       return true;
+               }
+               expList.append(QString().setNum(plist[i]));
+       }       
+       expected=expList.join(",");     
+       errDescription=QString("Wrong number of parameters: Expected %1, but found %2").arg(expected).arg(paramList.count());
+       return false;
+}
+
+bool Parser::checkParCount (const int &expected)
+{
+       if (paramList.count()!=expected)
+       {
+               errLevel=Aborted;
+               errDescription=QString("Wrong number of parameters: Expected %1, but found %2").arg(expected).arg(paramList.count());
+               return false;
+       } 
+       return true;    
+}
+
+bool Parser::checkParIsInt(const int &index)
+{
+       bool ok;
+       if (index > paramList.count())
+       {
+               errLevel=Aborted;
+               errDescription=QString("Parameter index %1 is outside of parameter list").arg(index);
+               return false;
+       } else
+       {
+               paramList[index].toInt (&ok, 10);
+               if (!ok)
+               {
+                       errLevel=Aborted;
+                       errDescription=QString("Parameter %1 is not an integer").arg(index);
+                       return false;
+               } 
+       }       
+       return true;
+}
+
+bool Parser::checkParIsDouble(const int &index)
+{
+       bool ok;
+       if (index > paramList.count())
+       {
+               errLevel=Aborted;
+               errDescription=QString("Parameter index %1 is outside of parameter list").arg(index);
+               return false;
+       } else
+       {
+               paramList[index].toDouble (&ok);
+               if (!ok)
+               {
+                       errLevel=Aborted;
+                       errDescription=QString("Parameter %1 is not double").arg(index);
+                       return false;
+               } 
+       }       
+       return true;
+}
+
+int Parser::parInt (bool &ok,const uint &index)
+{
+       if (checkParIsInt (index))
+               return paramList[index].toInt (&ok, 10);
+       ok=false;
+       return 0;
+}
+
+QString Parser::parString (bool &ok,const int &index)
+{
+       // return the string at index, this could be also stored in
+       // a variable later
+       QString r;
+       QRegExp re("\"(.*)\"");
+       int pos=re.search (paramList[index]);
+       if (pos>=0)
+               r=re.cap (1);
+       else    
+               r="";
+       ok=true;
+       return r;
+}
+
+bool Parser::parBool (bool &ok,const int &index)
+{
+       // return the bool at index, this could be also stored in
+       // a variable later
+       QString r;
+       ok=true;
+       QString p=paramList[index];
+       if (p=="true" || p=="1")
+               return true;
+       else if (p=="false" || p=="0")
+               return false;
+       ok=false;
+       return ok;
+}
+
+QColor Parser::parColor(bool &ok,const int &index)
+{
+       // return the QColor at index
+       ok=false;
+       QString r;
+       QColor c;
+       QRegExp re("\"(.*)\"");
+       int pos=re.search (paramList[index]);
+       if (pos>=0)
+       {
+               r=re.cap (1);
+               c.setNamedColor(r);
+               ok=c.isValid();
+       }       
+       return c;
+}
+
+double Parser::parDouble (bool &ok,const int &index)
+{
+       if (checkParIsDouble (index))
+               return paramList[index].toDouble (&ok);
+       ok=false;
+       return 0;
+}
+
+void Parser::setScript(const QString &s)
+{
+       script=s;
+}      
+
+QString Parser::getScript()
+{
+       return script;
+}      
+
+void Parser::runScript()
+{
+       current=0;
+}      
+
+bool Parser::next()
+{
+       int start=current;
+       if (current<0) runScript();
+       if (current>=script.length()-1) return false;
+
+       bool inBracket=false;
+       while (true)
+       {
+               //cout <<"current="<<current<< "   start="<<start<<"  length="<<script.length()<<endl;
+
+               // Check if we are inside a string
+               if (script.at(current)=='"')
+               {
+                       if (inBracket)
+                               inBracket=false;
+                       else    
+                               inBracket=true;
+               }
+
+               // Check if we are in a comment
+               if (!inBracket && script.at(current)=='#')
+               {
+                       while (script.at(current)!='\n')
+                       {
+                               current++;
+                               if (current>=script.length()) 
+                                       return false;
+                       }
+                       start=current;
+               }
+
+               // Check for end of atom
+               if (!inBracket && script.at(current)==';')
+               {
+                       atom=script.mid(start,current-start);
+                       current++;
+                       return true;
+               }
+               
+               // Check for end of script
+               if (current==script.length() )
+               {
+                       if (inBracket)
+                       {
+                               setError (Aborted,"Runaway string");
+                               return false;
+                       } else
+                       {
+                               atom=script.mid(start);
+                               return true;
+                       }
+               }
+               current++;
+       }
+}      
+
diff --git a/parser.h b/parser.h
new file mode 100644 (file)
index 0000000..c10c73f
--- /dev/null
+++ b/parser.h
@@ -0,0 +1,55 @@
+#ifndef PARSER_H
+#define PARSER_H
+
+#include <QColor>
+#include <QStringList>
+
+enum ErrorLevel {NoError,Warning,Aborted};
+
+class Parser
+{
+public:
+       Parser();
+       void parseAtom (QString input);
+       QString getAtom();
+       QString getCommand();
+       QStringList getParameters();
+       int parCount();
+       QString errorMessage();
+       QString errorDescription();
+       ErrorLevel errorLevel();
+       void setError (ErrorLevel level,const QString &description);
+       void resetError();
+       bool checkParCount (QList <int> plist);
+       bool checkParCount (const int &index);
+       bool checkParIsInt (const int &index);
+       bool checkParIsDouble (const int &index);
+       int parInt (bool &,const uint &index);
+       QString parString(bool &ok,const int &index);
+       bool parBool (bool &ok, const int &index);
+       QColor parColor (bool &ok, const int &index);
+       double parDouble (bool &ok, const int &index);
+
+       void setScript (const QString &);
+       QString getScript();
+       void runScript();
+       bool next();
+
+
+private:
+       void initParser();
+       void initAtom();
+
+       QString input;
+       QString atom;
+       QString com;
+       QStringList paramList;
+       int current;
+       QString script;
+
+       QString errMessage;
+       QString errDescription;
+       ErrorLevel errLevel;
+};
+
+#endif
diff --git a/process.cpp b/process.cpp
new file mode 100644 (file)
index 0000000..27566dd
--- /dev/null
@@ -0,0 +1,43 @@
+#include "process.h"
+
+/////////////////////////////////////////////////////////////////
+// Process
+/////////////////////////////////////////////////////////////////
+Process::Process()
+{
+       connect( this, SIGNAL(readyReadStandardError()),
+                        this, SLOT(readProcErrout()) );
+       connect( this, SIGNAL(readyReadStandardOutput()),
+                        this, SLOT(readProcStdout()) );
+       clear();                 
+}
+
+Process::~Process()
+{
+}
+
+void Process::clear()
+{
+       errOut="";
+       stdOut="";
+}
+
+void Process::readProcErrout()
+{
+       errOut+=readAllStandardError();
+}
+
+void Process::readProcStdout()
+{
+       stdOut+=readAllStandardOutput();
+}
+
+QString Process::getErrout()
+{
+       return errOut;
+}
+
+QString Process::getStdout()
+{
+       return stdOut;
+}
diff --git a/process.h b/process.h
new file mode 100644 (file)
index 0000000..870e8c4
--- /dev/null
+++ b/process.h
@@ -0,0 +1,30 @@
+#ifndef PROCESS_H
+#define PROCESS_H
+
+#include <QProcess>
+#include <QString>
+
+
+using namespace std;
+
+class Process:public QProcess
+{
+       Q_OBJECT
+public:
+    Process ();
+       ~Process ();
+       void clear();
+       QString getErrout();
+       QString getStdout();
+       
+
+public slots:
+       virtual void readProcErrout();
+       virtual void readProcStdout();
+
+private:
+       QString errOut;
+       QString stdOut;
+};
+
+#endif
diff --git a/qtc-gdbmacros/LGPL_EXCEPTION.TXT b/qtc-gdbmacros/LGPL_EXCEPTION.TXT
new file mode 100644 (file)
index 0000000..1c68ba7
--- /dev/null
@@ -0,0 +1,3 @@
+Nokia Qt LGPL Exception version 1.0\r
+\r
+As a special exception to the GNU Lesser General Public License version 2.1, the object code form of a "work that uses the Library" may incorporate material from a header file that is part of the Library.  You may distribute such object code under terms of your choice, provided that the incorporated material (i) does not exceed more than 5% of the total size of the Library;  and (ii) is limited to numerical parameters, data structure layouts, accessors, macros, inline functions and templates.
\ No newline at end of file
diff --git a/qtc-gdbmacros/LICENSE.LGPL b/qtc-gdbmacros/LICENSE.LGPL
new file mode 100644 (file)
index 0000000..53afb04
--- /dev/null
@@ -0,0 +1,504 @@
+                 GNU LESSER GENERAL PUBLIC LICENSE\r
+                      Version 2.1, February 1999\r
+\r
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.\r
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\r
+ Everyone is permitted to copy and distribute verbatim copies\r
+ of this license document, but changing it is not allowed.\r
+\r
+[This is the first released version of the Lesser GPL.  It also counts\r
+ as the successor of the GNU Library Public License, version 2, hence\r
+ the version number 2.1.]\r
+\r
+                           Preamble\r
+\r
+  The licenses for most software are designed to take away your\r
+freedom to share and change it.  By contrast, the GNU General Public\r
+Licenses are intended to guarantee your freedom to share and change\r
+free software--to make sure the software is free for all its users.\r
+\r
+  This license, the Lesser General Public License, applies to some\r
+specially designated software packages--typically libraries--of the\r
+Free Software Foundation and other authors who decide to use it.  You\r
+can use it too, but we suggest you first think carefully about whether\r
+this license or the ordinary General Public License is the better\r
+strategy to use in any particular case, based on the explanations below.\r
+\r
+  When we speak of free software, we are referring to freedom of use,\r
+not price.  Our General Public Licenses are designed to make sure that\r
+you have the freedom to distribute copies of free software (and charge\r
+for this service if you wish); that you receive source code or can get\r
+it if you want it; that you can change the software and use pieces of\r
+it in new free programs; and that you are informed that you can do\r
+these things.\r
+\r
+  To protect your rights, we need to make restrictions that forbid\r
+distributors to deny you these rights or to ask you to surrender these\r
+rights.  These restrictions translate to certain responsibilities for\r
+you if you distribute copies of the library or if you modify it.\r
+\r
+  For example, if you distribute copies of the library, whether gratis\r
+or for a fee, you must give the recipients all the rights that we gave\r
+you.  You must make sure that they, too, receive or can get the source\r
+code.  If you link other code with the library, you must provide\r
+complete object files to the recipients, so that they can relink them\r
+with the library after making changes to the library and recompiling\r
+it.  And you must show them these terms so they know their rights.\r
+\r
+  We protect your rights with a two-step method: (1) we copyright the\r
+library, and (2) we offer you this license, which gives you legal\r
+permission to copy, distribute and/or modify the library.\r
+\r
+  To protect each distributor, we want to make it very clear that\r
+there is no warranty for the free library.  Also, if the library is\r
+modified by someone else and passed on, the recipients should know\r
+that what they have is not the original version, so that the original\r
+author's reputation will not be affected by problems that might be\r
+introduced by others.\r
+\f\r
+  Finally, software patents pose a constant threat to the existence of\r
+any free program.  We wish to make sure that a company cannot\r
+effectively restrict the users of a free program by obtaining a\r
+restrictive license from a patent holder.  Therefore, we insist that\r
+any patent license obtained for a version of the library must be\r
+consistent with the full freedom of use specified in this license.\r
+\r
+  Most GNU software, including some libraries, is covered by the\r
+ordinary GNU General Public License.  This license, the GNU Lesser\r
+General Public License, applies to certain designated libraries, and\r
+is quite different from the ordinary General Public License.  We use\r
+this license for certain libraries in order to permit linking those\r
+libraries into non-free programs.\r
+\r
+  When a program is linked with a library, whether statically or using\r
+a shared library, the combination of the two is legally speaking a\r
+combined work, a derivative of the original library.  The ordinary\r
+General Public License therefore permits such linking only if the\r
+entire combination fits its criteria of freedom.  The Lesser General\r
+Public License permits more lax criteria for linking other code with\r
+the library.\r
+\r
+  We call this license the "Lesser" General Public License because it\r
+does Less to protect the user's freedom than the ordinary General\r
+Public License.  It also provides other free software developers Less\r
+of an advantage over competing non-free programs.  These disadvantages\r
+are the reason we use the ordinary General Public License for many\r
+libraries.  However, the Lesser license provides advantages in certain\r
+special circumstances.\r
+\r
+  For example, on rare occasions, there may be a special need to\r
+encourage the widest possible use of a certain library, so that it becomes\r
+a de-facto standard.  To achieve this, non-free programs must be\r
+allowed to use the library.  A more frequent case is that a free\r
+library does the same job as widely used non-free libraries.  In this\r
+case, there is little to gain by limiting the free library to free\r
+software only, so we use the Lesser General Public License.\r
+\r
+  In other cases, permission to use a particular library in non-free\r
+programs enables a greater number of people to use a large body of\r
+free software.  For example, permission to use the GNU C Library in\r
+non-free programs enables many more people to use the whole GNU\r
+operating system, as well as its variant, the GNU/Linux operating\r
+system.\r
+\r
+  Although the Lesser General Public License is Less protective of the\r
+users' freedom, it does ensure that the user of a program that is\r
+linked with the Library has the freedom and the wherewithal to run\r
+that program using a modified version of the Library.\r
+\r
+  The precise terms and conditions for copying, distribution and\r
+modification follow.  Pay close attention to the difference between a\r
+"work based on the library" and a "work that uses the library".  The\r
+former contains code derived from the library, whereas the latter must\r
+be combined with the library in order to run.\r
+\f\r
+                 GNU LESSER GENERAL PUBLIC LICENSE\r
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\r
+\r
+  0. This License Agreement applies to any software library or other\r
+program which contains a notice placed by the copyright holder or\r
+other authorized party saying it may be distributed under the terms of\r
+this Lesser General Public License (also called "this License").\r
+Each licensee is addressed as "you".\r
+\r
+  A "library" means a collection of software functions and/or data\r
+prepared so as to be conveniently linked with application programs\r
+(which use some of those functions and data) to form executables.\r
+\r
+  The "Library", below, refers to any such software library or work\r
+which has been distributed under these terms.  A "work based on the\r
+Library" means either the Library or any derivative work under\r
+copyright law: that is to say, a work containing the Library or a\r
+portion of it, either verbatim or with modifications and/or translated\r
+straightforwardly into another language.  (Hereinafter, translation is\r
+included without limitation in the term "modification".)\r
+\r
+  "Source code" for a work means the preferred form of the work for\r
+making modifications to it.  For a library, complete source code means\r
+all the source code for all modules it contains, plus any associated\r
+interface definition files, plus the scripts used to control compilation\r
+and installation of the library.\r
+\r
+  Activities other than copying, distribution and modification are not\r
+covered by this License; they are outside its scope.  The act of\r
+running a program using the Library is not restricted, and output from\r
+such a program is covered only if its contents constitute a work based\r
+on the Library (independent of the use of the Library in a tool for\r
+writing it).  Whether that is true depends on what the Library does\r
+and what the program that uses the Library does.\r
+\r
+  1. You may copy and distribute verbatim copies of the Library's\r
+complete source code as you receive it, in any medium, provided that\r
+you conspicuously and appropriately publish on each copy an\r
+appropriate copyright notice and disclaimer of warranty; keep intact\r
+all the notices that refer to this License and to the absence of any\r
+warranty; and distribute a copy of this License along with the\r
+Library.\r
+\r
+  You may charge a fee for the physical act of transferring a copy,\r
+and you may at your option offer warranty protection in exchange for a\r
+fee.\r
+\f\r
+  2. You may modify your copy or copies of the Library or any portion\r
+of it, thus forming a work based on the Library, and copy and\r
+distribute such modifications or work under the terms of Section 1\r
+above, provided that you also meet all of these conditions:\r
+\r
+    a) The modified work must itself be a software library.\r
+\r
+    b) You must cause the files modified to carry prominent notices\r
+    stating that you changed the files and the date of any change.\r
+\r
+    c) You must cause the whole of the work to be licensed at no\r
+    charge to all third parties under the terms of this License.\r
+\r
+    d) If a facility in the modified Library refers to a function or a\r
+    table of data to be supplied by an application program that uses\r
+    the facility, other than as an argument passed when the facility\r
+    is invoked, then you must make a good faith effort to ensure that,\r
+    in the event an application does not supply such function or\r
+    table, the facility still operates, and performs whatever part of\r
+    its purpose remains meaningful.\r
+\r
+    (For example, a function in a library to compute square roots has\r
+    a purpose that is entirely well-defined independent of the\r
+    application.  Therefore, Subsection 2d requires that any\r
+    application-supplied function or table used by this function must\r
+    be optional: if the application does not supply it, the square\r
+    root function must still compute square roots.)\r
+\r
+These requirements apply to the modified work as a whole.  If\r
+identifiable sections of that work are not derived from the Library,\r
+and can be reasonably considered independent and separate works in\r
+themselves, then this License, and its terms, do not apply to those\r
+sections when you distribute them as separate works.  But when you\r
+distribute the same sections as part of a whole which is a work based\r
+on the Library, the distribution of the whole must be on the terms of\r
+this License, whose permissions for other licensees extend to the\r
+entire whole, and thus to each and every part regardless of who wrote\r
+it.\r
+\r
+Thus, it is not the intent of this section to claim rights or contest\r
+your rights to work written entirely by you; rather, the intent is to\r
+exercise the right to control the distribution of derivative or\r
+collective works based on the Library.\r
+\r
+In addition, mere aggregation of another work not based on the Library\r
+with the Library (or with a work based on the Library) on a volume of\r
+a storage or distribution medium does not bring the other work under\r
+the scope of this License.\r
+\r
+  3. You may opt to apply the terms of the ordinary GNU General Public\r
+License instead of this License to a given copy of the Library.  To do\r
+this, you must alter all the notices that refer to this License, so\r
+that they refer to the ordinary GNU General Public License, version 2,\r
+instead of to this License.  (If a newer version than version 2 of the\r
+ordinary GNU General Public License has appeared, then you can specify\r
+that version instead if you wish.)  Do not make any other change in\r
+these notices.\r
+\f\r
+  Once this change is made in a given copy, it is irreversible for\r
+that copy, so the ordinary GNU General Public License applies to all\r
+subsequent copies and derivative works made from that copy.\r
+\r
+  This option is useful when you wish to copy part of the code of\r
+the Library into a program that is not a library.\r
+\r
+  4. You may copy and distribute the Library (or a portion or\r
+derivative of it, under Section 2) in object code or executable form\r
+under the terms of Sections 1 and 2 above provided that you accompany\r
+it with the complete corresponding machine-readable source code, which\r
+must be distributed under the terms of Sections 1 and 2 above on a\r
+medium customarily used for software interchange.\r
+\r
+  If distribution of object code is made by offering access to copy\r
+from a designated place, then offering equivalent access to copy the\r
+source code from the same place satisfies the requirement to\r
+distribute the source code, even though third parties are not\r
+compelled to copy the source along with the object code.\r
+\r
+  5. A program that contains no derivative of any portion of the\r
+Library, but is designed to work with the Library by being compiled or\r
+linked with it, is called a "work that uses the Library".  Such a\r
+work, in isolation, is not a derivative work of the Library, and\r
+therefore falls outside the scope of this License.\r
+\r
+  However, linking a "work that uses the Library" with the Library\r
+creates an executable that is a derivative of the Library (because it\r
+contains portions of the Library), rather than a "work that uses the\r
+library".  The executable is therefore covered by this License.\r
+Section 6 states terms for distribution of such executables.\r
+\r
+  When a "work that uses the Library" uses material from a header file\r
+that is part of the Library, the object code for the work may be a\r
+derivative work of the Library even though the source code is not.\r
+Whether this is true is especially significant if the work can be\r
+linked without the Library, or if the work is itself a library.  The\r
+threshold for this to be true is not precisely defined by law.\r
+\r
+  If such an object file uses only numerical parameters, data\r
+structure layouts and accessors, and small macros and small inline\r
+functions (ten lines or less in length), then the use of the object\r
+file is unrestricted, regardless of whether it is legally a derivative\r
+work.  (Executables containing this object code plus portions of the\r
+Library will still fall under Section 6.)\r
+\r
+  Otherwise, if the work is a derivative of the Library, you may\r
+distribute the object code for the work under the terms of Section 6.\r
+Any executables containing that work also fall under Section 6,\r
+whether or not they are linked directly with the Library itself.\r
+\f\r
+  6. As an exception to the Sections above, you may also combine or\r
+link a "work that uses the Library" with the Library to produce a\r
+work containing portions of the Library, and distribute that work\r
+under terms of your choice, provided that the terms permit\r
+modification of the work for the customer's own use and reverse\r
+engineering for debugging such modifications.\r
+\r
+  You must give prominent notice with each copy of the work that the\r
+Library is used in it and that the Library and its use are covered by\r
+this License.  You must supply a copy of this License.  If the work\r
+during execution displays copyright notices, you must include the\r
+copyright notice for the Library among them, as well as a reference\r
+directing the user to the copy of this License.  Also, you must do one\r
+of these things:\r
+\r
+    a) Accompany the work with the complete corresponding\r
+    machine-readable source code for the Library including whatever\r
+    changes were used in the work (which must be distributed under\r
+    Sections 1 and 2 above); and, if the work is an executable linked\r
+    with the Library, with the complete machine-readable "work that\r
+    uses the Library", as object code and/or source code, so that the\r
+    user can modify the Library and then relink to produce a modified\r
+    executable containing the modified Library.  (It is understood\r
+    that the user who changes the contents of definitions files in the\r
+    Library will not necessarily be able to recompile the application\r
+    to use the modified definitions.)\r
+\r
+    b) Use a suitable shared library mechanism for linking with the\r
+    Library.  A suitable mechanism is one that (1) uses at run time a\r
+    copy of the library already present on the user's computer system,\r
+    rather than copying library functions into the executable, and (2)\r
+    will operate properly with a modified version of the library, if\r
+    the user installs one, as long as the modified version is\r
+    interface-compatible with the version that the work was made with.\r
+\r
+    c) Accompany the work with a written offer, valid for at\r
+    least three years, to give the same user the materials\r
+    specified in Subsection 6a, above, for a charge no more\r
+    than the cost of performing this distribution.\r
+\r
+    d) If distribution of the work is made by offering access to copy\r
+    from a designated place, offer equivalent access to copy the above\r
+    specified materials from the same place.\r
+\r
+    e) Verify that the user has already received a copy of these\r
+    materials or that you have already sent this user a copy.\r
+\r
+  For an executable, the required form of the "work that uses the\r
+Library" must include any data and utility programs needed for\r
+reproducing the executable from it.  However, as a special exception,\r
+the materials to be distributed need not include anything that is\r
+normally distributed (in either source or binary form) with the major\r
+components (compiler, kernel, and so on) of the operating system on\r
+which the executable runs, unless that component itself accompanies\r
+the executable.\r
+\r
+  It may happen that this requirement contradicts the license\r
+restrictions of other proprietary libraries that do not normally\r
+accompany the operating system.  Such a contradiction means you cannot\r
+use both them and the Library together in an executable that you\r
+distribute.\r
+\f\r
+  7. You may place library facilities that are a work based on the\r
+Library side-by-side in a single library together with other library\r
+facilities not covered by this License, and distribute such a combined\r
+library, provided that the separate distribution of the work based on\r
+the Library and of the other library facilities is otherwise\r
+permitted, and provided that you do these two things:\r
+\r
+    a) Accompany the combined library with a copy of the same work\r
+    based on the Library, uncombined with any other library\r
+    facilities.  This must be distributed under the terms of the\r
+    Sections above.\r
+\r
+    b) Give prominent notice with the combined library of the fact\r
+    that part of it is a work based on the Library, and explaining\r
+    where to find the accompanying uncombined form of the same work.\r
+\r
+  8. You may not copy, modify, sublicense, link with, or distribute\r
+the Library except as expressly provided under this License.  Any\r
+attempt otherwise to copy, modify, sublicense, link with, or\r
+distribute the Library is void, and will automatically terminate your\r
+rights under this License.  However, parties who have received copies,\r
+or rights, from you under this License will not have their licenses\r
+terminated so long as such parties remain in full compliance.\r
+\r
+  9. You are not required to accept this License, since you have not\r
+signed it.  However, nothing else grants you permission to modify or\r
+distribute the Library or its derivative works.  These actions are\r
+prohibited by law if you do not accept this License.  Therefore, by\r
+modifying or distributing the Library (or any work based on the\r
+Library), you indicate your acceptance of this License to do so, and\r
+all its terms and conditions for copying, distributing or modifying\r
+the Library or works based on it.\r
+\r
+  10. Each time you redistribute the Library (or any work based on the\r
+Library), the recipient automatically receives a license from the\r
+original licensor to copy, distribute, link with or modify the Library\r
+subject to these terms and conditions.  You may not impose any further\r
+restrictions on the recipients' exercise of the rights granted herein.\r
+You are not responsible for enforcing compliance by third parties with\r
+this License.\r
+\f\r
+  11. If, as a consequence of a court judgment or allegation of patent\r
+infringement or for any other reason (not limited to patent issues),\r
+conditions are imposed on you (whether by court order, agreement or\r
+otherwise) that contradict the conditions of this License, they do not\r
+excuse you from the conditions of this License.  If you cannot\r
+distribute so as to satisfy simultaneously your obligations under this\r
+License and any other pertinent obligations, then as a consequence you\r
+may not distribute the Library at all.  For example, if a patent\r
+license would not permit royalty-free redistribution of the Library by\r
+all those who receive copies directly or indirectly through you, then\r
+the only way you could satisfy both it and this License would be to\r
+refrain entirely from distribution of the Library.\r
+\r
+If any portion of this section is held invalid or unenforceable under any\r
+particular circumstance, the balance of the section is intended to apply,\r
+and the section as a whole is intended to apply in other circumstances.\r
+\r
+It is not the purpose of this section to induce you to infringe any\r
+patents or other property right claims or to contest validity of any\r
+such claims; this section has the sole purpose of protecting the\r
+integrity of the free software distribution system which is\r
+implemented by public license practices.  Many people have made\r
+generous contributions to the wide range of software distributed\r
+through that system in reliance on consistent application of that\r
+system; it is up to the author/donor to decide if he or she is willing\r
+to distribute software through any other system and a licensee cannot\r
+impose that choice.\r
+\r
+This section is intended to make thoroughly clear what is believed to\r
+be a consequence of the rest of this License.\r
+\r
+  12. If the distribution and/or use of the Library is restricted in\r
+certain countries either by patents or by copyrighted interfaces, the\r
+original copyright holder who places the Library under this License may add\r
+an explicit geographical distribution limitation excluding those countries,\r
+so that distribution is permitted only in or among countries not thus\r
+excluded.  In such case, this License incorporates the limitation as if\r
+written in the body of this License.\r
+\r
+  13. The Free Software Foundation may publish revised and/or new\r
+versions of the Lesser General Public License from time to time.\r
+Such new versions will be similar in spirit to the present version,\r
+but may differ in detail to address new problems or concerns.\r
+\r
+Each version is given a distinguishing version number.  If the Library\r
+specifies a version number of this License which applies to it and\r
+"any later version", you have the option of following the terms and\r
+conditions either of that version or of any later version published by\r
+the Free Software Foundation.  If the Library does not specify a\r
+license version number, you may choose any version ever published by\r
+the Free Software Foundation.\r
+\f\r
+  14. If you wish to incorporate parts of the Library into other free\r
+programs whose distribution conditions are incompatible with these,\r
+write to the author to ask for permission.  For software which is\r
+copyrighted by the Free Software Foundation, write to the Free\r
+Software Foundation; we sometimes make exceptions for this.  Our\r
+decision will be guided by the two goals of preserving the free status\r
+of all derivatives of our free software and of promoting the sharing\r
+and reuse of software generally.\r
+\r
+                           NO WARRANTY\r
+\r
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\r
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\r
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\r
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY\r
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\r
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\r
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\r
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\r
+\r
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\r
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\r
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\r
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\r
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\r
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\r
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\r
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\r
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+DAMAGES.\r
+\r
+                    END OF TERMS AND CONDITIONS\r
+\f\r
+           How to Apply These Terms to Your New Libraries\r
+\r
+  If you develop a new library, and you want it to be of the greatest\r
+possible use to the public, we recommend making it free software that\r
+everyone can redistribute and change.  You can do so by permitting\r
+redistribution under these terms (or, alternatively, under the terms of the\r
+ordinary General Public License).\r
+\r
+  To apply these terms, attach the following notices to the library.  It is\r
+safest to attach them to the start of each source file to most effectively\r
+convey the exclusion of warranty; and each file should have at least the\r
+"copyright" line and a pointer to where the full notice is found.\r
+\r
+    <one line to give the library's name and a brief idea of what it does.>\r
+    Copyright (C) <year>  <name of author>\r
+\r
+    This library is free software; you can redistribute it and/or\r
+    modify it under the terms of the GNU Lesser General Public\r
+    License as published by the Free Software Foundation; either\r
+    version 2.1 of the License, or (at your option) any later version.\r
+\r
+    This library is distributed in the hope that it will be useful,\r
+    but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
+    Lesser General Public License for more details.\r
+\r
+    You should have received a copy of the GNU Lesser General Public\r
+    License along with this library; if not, write to the Free Software\r
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\r
+\r
+Also add information on how to contact you by electronic and paper mail.\r
+\r
+You should also get your employer (if you work as a programmer) or your\r
+school, if any, to sign a "copyright disclaimer" for the library, if\r
+necessary.  Here is a sample; alter the names:\r
+\r
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the\r
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.\r
+\r
+  <signature of Ty Coon>, 1 April 1990\r
+  Ty Coon, President of Vice\r
+\r
+That's all there is to it!\r
+\r
+\r
diff --git a/qtc-gdbmacros/Makefile b/qtc-gdbmacros/Makefile
new file mode 100644 (file)
index 0000000..5eb6efa
--- /dev/null
@@ -0,0 +1,142 @@
+#############################################################################\r
+# Makefile for building: gdbmacros\r
+# Generated by qmake (2.01a) (Qt 4.5.0) on: sáb 24. out 08:26:39 2009\r
+# Project:  gdbmacros.pro\r
+# Template: lib\r
+# Command: c:\Qt\2009.01\qt\bin\qmake.exe -spec ..\..\Qt\2009.01\qt\mkspecs\win32-g++ -win32 -o Makefile gdbmacros.pro\r
+#############################################################################\r
+\r
+first: debug\r
+install: debug-install\r
+uninstall: debug-uninstall\r
+MAKEFILE      = Makefile\r
+QMAKE         = c:\Qt\2009.01\qt\bin\qmake.exe\r
+DEL_FILE      = del\r
+CHK_DIR_EXISTS= if not exist\r
+MKDIR         = mkdir\r
+COPY          = copy /y\r
+COPY_FILE     = $(COPY)\r
+COPY_DIR      = xcopy /s /q /y /i\r
+INSTALL_FILE  = $(COPY_FILE)\r
+INSTALL_PROGRAM = $(COPY_FILE)\r
+INSTALL_DIR   = $(COPY_DIR)\r
+DEL_FILE      = del\r
+SYMLINK       = \r
+DEL_DIR       = rmdir\r
+MOVE          = move\r
+CHK_DIR_EXISTS= if not exist\r
+MKDIR         = mkdir\r
+SUBTARGETS    =  \\r
+               debug \\r
+               release\r
+\r
+debug: $(MAKEFILE).Debug FORCE\r
+       $(MAKE) -f $(MAKEFILE).Debug\r
+debug-make_default: $(MAKEFILE).Debug FORCE\r
+       $(MAKE) -f $(MAKEFILE).Debug \r
+debug-make_first: $(MAKEFILE).Debug FORCE\r
+       $(MAKE) -f $(MAKEFILE).Debug first\r
+debug-all: $(MAKEFILE).Debug FORCE\r
+       $(MAKE) -f $(MAKEFILE).Debug all\r
+debug-clean: $(MAKEFILE).Debug FORCE\r
+       $(MAKE) -f $(MAKEFILE).Debug clean\r
+debug-distclean: $(MAKEFILE).Debug FORCE\r
+       $(MAKE) -f $(MAKEFILE).Debug distclean\r
+debug-install: $(MAKEFILE).Debug FORCE\r
+       $(MAKE) -f $(MAKEFILE).Debug install\r
+debug-uninstall: $(MAKEFILE).Debug FORCE\r
+       $(MAKE) -f $(MAKEFILE).Debug uninstall\r
+release: $(MAKEFILE).Release FORCE\r
+       $(MAKE) -f $(MAKEFILE).Release\r
+release-make_default: $(MAKEFILE).Release FORCE\r
+       $(MAKE) -f $(MAKEFILE).Release \r
+release-make_first: $(MAKEFILE).Release FORCE\r
+       $(MAKE) -f $(MAKEFILE).Release first\r
+release-all: $(MAKEFILE).Release FORCE\r
+       $(MAKE) -f $(MAKEFILE).Release all\r
+release-clean: $(MAKEFILE).Release FORCE\r
+       $(MAKE) -f $(MAKEFILE).Release clean\r
+release-distclean: $(MAKEFILE).Release FORCE\r
+       $(MAKE) -f $(MAKEFILE).Release distclean\r
+release-install: $(MAKEFILE).Release FORCE\r
+       $(MAKE) -f $(MAKEFILE).Release install\r
+release-uninstall: $(MAKEFILE).Release FORCE\r
+       $(MAKE) -f $(MAKEFILE).Release uninstall\r
+\r
+Makefile: gdbmacros.pro  ../../Qt/2009.01/qt/mkspecs/win32-g++/qmake.conf ../../Qt/2009.01/qt/mkspecs/qconfig.pri \\r
+               ../../Qt/2009.01/qt/mkspecs/features/qt_functions.prf \\r
+               ../../Qt/2009.01/qt/mkspecs/features/qt_config.prf \\r
+               ../../Qt/2009.01/qt/mkspecs/features/exclusive_builds.prf \\r
+               ../../Qt/2009.01/qt/mkspecs/features/default_pre.prf \\r
+               ../../Qt/2009.01/qt/mkspecs/features/win32/default_pre.prf \\r
+               ../../Qt/2009.01/qt/mkspecs/features/debug.prf \\r
+               ../../Qt/2009.01/qt/mkspecs/features/debug_and_release.prf \\r
+               ../../Qt/2009.01/qt/mkspecs/features/default_post.prf \\r
+               ../../Qt/2009.01/qt/mkspecs/features/win32/default_post.prf \\r
+               ../../Qt/2009.01/qt/mkspecs/features/shared.prf \\r
+               ../../Qt/2009.01/qt/mkspecs/features/dll.prf \\r
+               ../../Qt/2009.01/qt/mkspecs/features/win32/rtti.prf \\r
+               ../../Qt/2009.01/qt/mkspecs/features/win32/exceptions.prf \\r
+               ../../Qt/2009.01/qt/mkspecs/features/win32/stl.prf \\r
+               ../../Qt/2009.01/qt/mkspecs/features/warn_on.prf \\r
+               ../../Qt/2009.01/qt/mkspecs/features/qt.prf \\r
+               ../../Qt/2009.01/qt/mkspecs/features/win32/thread.prf \\r
+               ../../Qt/2009.01/qt/mkspecs/features/moc.prf \\r
+               ../../Qt/2009.01/qt/mkspecs/features/win32/windows.prf \\r
+               ../../Qt/2009.01/qt/mkspecs/features/resources.prf \\r
+               ../../Qt/2009.01/qt/mkspecs/features/uic.prf \\r
+               ../../Qt/2009.01/qt/mkspecs/features/yacc.prf \\r
+               ../../Qt/2009.01/qt/mkspecs/features/lex.prf\r
+       $(QMAKE) -spec ..\..\Qt\2009.01\qt\mkspecs\win32-g++ -win32 -o Makefile gdbmacros.pro\r
+..\..\Qt\2009.01\qt\mkspecs\qconfig.pri:\r
+..\..\Qt\2009.01\qt\mkspecs\features\qt_functions.prf:\r
+..\..\Qt\2009.01\qt\mkspecs\features\qt_config.prf:\r
+..\..\Qt\2009.01\qt\mkspecs\features\exclusive_builds.prf:\r
+..\..\Qt\2009.01\qt\mkspecs\features\default_pre.prf:\r
+..\..\Qt\2009.01\qt\mkspecs\features\win32\default_pre.prf:\r
+..\..\Qt\2009.01\qt\mkspecs\features\debug.prf:\r
+..\..\Qt\2009.01\qt\mkspecs\features\debug_and_release.prf:\r
+..\..\Qt\2009.01\qt\mkspecs\features\default_post.prf:\r
+..\..\Qt\2009.01\qt\mkspecs\features\win32\default_post.prf:\r
+..\..\Qt\2009.01\qt\mkspecs\features\shared.prf:\r
+..\..\Qt\2009.01\qt\mkspecs\features\dll.prf:\r
+..\..\Qt\2009.01\qt\mkspecs\features\win32\rtti.prf:\r
+..\..\Qt\2009.01\qt\mkspecs\features\win32\exceptions.prf:\r
+..\..\Qt\2009.01\qt\mkspecs\features\win32\stl.prf:\r
+..\..\Qt\2009.01\qt\mkspecs\features\warn_on.prf:\r
+..\..\Qt\2009.01\qt\mkspecs\features\qt.prf:\r
+..\..\Qt\2009.01\qt\mkspecs\features\win32\thread.prf:\r
+..\..\Qt\2009.01\qt\mkspecs\features\moc.prf:\r
+..\..\Qt\2009.01\qt\mkspecs\features\win32\windows.prf:\r
+..\..\Qt\2009.01\qt\mkspecs\features\resources.prf:\r
+..\..\Qt\2009.01\qt\mkspecs\features\uic.prf:\r
+..\..\Qt\2009.01\qt\mkspecs\features\yacc.prf:\r
+..\..\Qt\2009.01\qt\mkspecs\features\lex.prf:\r
+qmake: qmake_all FORCE\r
+       @$(QMAKE) -spec ..\..\Qt\2009.01\qt\mkspecs\win32-g++ -win32 -o Makefile gdbmacros.pro\r
+\r
+qmake_all: FORCE\r
+\r
+make_default: debug-make_default release-make_default FORCE\r
+make_first: debug-make_first release-make_first FORCE\r
+all: debug-all release-all FORCE\r
+clean: debug-clean release-clean FORCE\r
+       -$(DEL_FILE) libgdbmacros.a\r
+distclean: debug-distclean release-distclean FORCE\r
+       -$(DEL_FILE) Makefile\r
+\r
+debug-mocclean: $(MAKEFILE).Debug\r
+       $(MAKE) -f $(MAKEFILE).Debug mocclean\r
+release-mocclean: $(MAKEFILE).Release\r
+       $(MAKE) -f $(MAKEFILE).Release mocclean\r
+mocclean: debug-mocclean release-mocclean\r
+\r
+debug-mocables: $(MAKEFILE).Debug\r
+       $(MAKE) -f $(MAKEFILE).Debug mocables\r
+release-mocables: $(MAKEFILE).Release\r
+       $(MAKE) -f $(MAKEFILE).Release mocables\r
+mocables: debug-mocables release-mocables\r
+FORCE:\r
+\r
+$(MAKEFILE).Debug: Makefile\r
+$(MAKEFILE).Release: Makefile\r
diff --git a/qtc-gdbmacros/Makefile.Debug b/qtc-gdbmacros/Makefile.Debug
new file mode 100644 (file)
index 0000000..840e266
--- /dev/null
@@ -0,0 +1,127 @@
+#############################################################################\r
+# Makefile for building: gdbmacros\r
+# Generated by qmake (2.01a) (Qt 4.5.0) on: sáb 24. out 08:26:39 2009\r
+# Project:  gdbmacros.pro\r
+# Template: lib\r
+#############################################################################\r
+\r
+####### Compiler, tools and options\r
+\r
+CC            = gcc\r
+CXX           = g++\r
+DEFINES       = -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT\r
+CFLAGS        = -g -Wall $(DEFINES)\r
+CXXFLAGS      = -g -frtti -fexceptions -mthreads -Wall $(DEFINES)\r
+INCPATH       = -I"..\..\Qt\2009.01\qt\include\QtCore" -I"..\..\Qt\2009.01\qt\include\QtGui" -I"..\..\Qt\2009.01\qt\include" -I"..\..\Qt\2009.01\qt\include\ActiveQt" -I"debug" -I"." -I"..\..\Qt\2009.01\qt\mkspecs\win32-g++"\r
+LINK        =        g++\r
+LFLAGS        =        -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -shared -mthreads -Wl -Wl,--out-implib,debug\libgdbmacros.a\r
+LIBS        =        -L"c:\Qt\2009.01\qt\lib" -lQtGuid4 -lQtCored4\r
+QMAKE         = c:\Qt\2009.01\qt\bin\qmake.exe\r
+IDC           = c:\Qt\2009.01\qt\bin\idc.exe\r
+IDL           = midl\r
+ZIP           = zip -r -9\r
+DEF_FILE      = \r
+RES_FILE      = \r
+COPY          = copy /y\r
+COPY_FILE     = $(COPY)\r
+COPY_DIR      = xcopy /s /q /y /i\r
+DEL_FILE      = del\r
+DEL_DIR       = rmdir\r
+MOVE          = move\r
+CHK_DIR_EXISTS= if not exist\r
+MKDIR         = mkdir\r
+INSTALL_FILE    = $(COPY_FILE)\r
+INSTALL_PROGRAM = $(COPY_FILE)\r
+INSTALL_DIR     = $(COPY_DIR)\r
+\r
+####### Output directory\r
+\r
+OBJECTS_DIR   = debug\r
+\r
+####### Files\r
+\r
+SOURCES       = gdbmacros.cpp \r
+OBJECTS       = debug/gdbmacros.o\r
+DIST          = \r
+QMAKE_TARGET  = gdbmacros\r
+DESTDIR        = debug\ #avoid trailing-slash linebreak\r
+TARGET         = gdbmacros.dll\r
+DESTDIR_TARGET = debug\gdbmacros.dll\r
+\r
+####### Implicit rules\r
+\r
+.SUFFIXES: .cpp .cc .cxx .c\r
+\r
+.cpp.o:\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<\r
+\r
+.cc.o:\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<\r
+\r
+.cxx.o:\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<\r
+\r
+.c.o:\r
+       $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<\r
+\r
+####### Build rules\r
+\r
+first: all\r
+all: Makefile.Debug  $(DESTDIR_TARGET)\r
+\r
+$(DESTDIR_TARGET):  $(OBJECTS) \r
+       $(LINK) $(LFLAGS) -o $(DESTDIR_TARGET) $(OBJECTS)  $(LIBS)\r
+\r
+\r
+qmake:  FORCE\r
+       @$(QMAKE) -spec ..\..\Qt\2009.01\qt\mkspecs\win32-g++ -win32 -o Makefile.Debug gdbmacros.pro\r
+\r
+dist:\r
+       $(ZIP) gdbmacros.zip $(SOURCES) $(DIST) gdbmacros.pro ..\..\Qt\2009.01\qt\mkspecs\qconfig.pri ..\..\Qt\2009.01\qt\mkspecs\features\qt_functions.prf ..\..\Qt\2009.01\qt\mkspecs\features\qt_config.prf ..\..\Qt\2009.01\qt\mkspecs\features\exclusive_builds.prf ..\..\Qt\2009.01\qt\mkspecs\features\default_pre.prf ..\..\Qt\2009.01\qt\mkspecs\features\win32\default_pre.prf ..\..\Qt\2009.01\qt\mkspecs\features\debug.prf ..\..\Qt\2009.01\qt\mkspecs\features\debug_and_release.prf ..\..\Qt\2009.01\qt\mkspecs\features\default_post.prf ..\..\Qt\2009.01\qt\mkspecs\features\win32\default_post.prf ..\..\Qt\2009.01\qt\mkspecs\features\build_pass.prf ..\..\Qt\2009.01\qt\mkspecs\features\shared.prf ..\..\Qt\2009.01\qt\mkspecs\features\dll.prf ..\..\Qt\2009.01\qt\mkspecs\features\win32\rtti.prf ..\..\Qt\2009.01\qt\mkspecs\features\win32\exceptions.prf ..\..\Qt\2009.01\qt\mkspecs\features\win32\stl.prf ..\..\Qt\2009.01\qt\mkspecs\features\warn_on.prf ..\..\Qt\2009.01\qt\mkspecs\features\qt.prf ..\..\Qt\2009.01\qt\mkspecs\features\win32\thread.prf ..\..\Qt\2009.01\qt\mkspecs\features\moc.prf ..\..\Qt\2009.01\qt\mkspecs\features\win32\windows.prf ..\..\Qt\2009.01\qt\mkspecs\features\resources.prf ..\..\Qt\2009.01\qt\mkspecs\features\uic.prf ..\..\Qt\2009.01\qt\mkspecs\features\yacc.prf ..\..\Qt\2009.01\qt\mkspecs\features\lex.prf  HEADERS RESOURCES IMAGES SOURCES OBJECTIVE_SOURCES FORMS YACCSOURCES YACCSOURCES LEXSOURCES \r
+\r
+clean: compiler_clean \r
+       -$(DEL_FILE) debug\gdbmacros.o\r
+       -$(DEL_FILE) debug\libgdbmacros.a\r
+\r
+distclean: clean\r
+       -$(DEL_FILE) $(DESTDIR_TARGET)\r
+       -$(DEL_FILE) Makefile.Debug\r
+\r
+mocclean: compiler_moc_header_clean compiler_moc_source_clean\r
+\r
+mocables: compiler_moc_header_make_all compiler_moc_source_make_all\r
+\r
+compiler_moc_header_make_all:\r
+compiler_moc_header_clean:\r
+compiler_rcc_make_all:\r
+compiler_rcc_clean:\r
+compiler_image_collection_make_all: qmake_image_collection.cpp\r
+compiler_image_collection_clean:\r
+       -$(DEL_FILE) qmake_image_collection.cpp\r
+compiler_moc_source_make_all:\r
+compiler_moc_source_clean:\r
+compiler_uic_make_all:\r
+compiler_uic_clean:\r
+compiler_yacc_decl_make_all:\r
+compiler_yacc_decl_clean:\r
+compiler_yacc_impl_make_all:\r
+compiler_yacc_impl_clean:\r
+compiler_lex_make_all:\r
+compiler_lex_clean:\r
+compiler_clean: \r
+\r
+\r
+\r
+####### Compile\r
+\r
+debug/gdbmacros.o: gdbmacros.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\gdbmacros.o gdbmacros.cpp\r
+\r
+####### Install\r
+\r
+install:   FORCE\r
+\r
+uninstall:   FORCE\r
+\r
+FORCE:\r
+\r
diff --git a/qtc-gdbmacros/Makefile.Release b/qtc-gdbmacros/Makefile.Release
new file mode 100644 (file)
index 0000000..2bd23ea
--- /dev/null
@@ -0,0 +1,127 @@
+#############################################################################\r
+# Makefile for building: gdbmacros\r
+# Generated by qmake (2.01a) (Qt 4.5.0) on: sáb 24. out 08:26:39 2009\r
+# Project:  gdbmacros.pro\r
+# Template: lib\r
+#############################################################################\r
+\r
+####### Compiler, tools and options\r
+\r
+CC            = gcc\r
+CXX           = g++\r
+DEFINES       = -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT\r
+CFLAGS        = -O2 -Wall $(DEFINES)\r
+CXXFLAGS      = -O2 -frtti -fexceptions -mthreads -Wall $(DEFINES)\r
+INCPATH       = -I"..\..\Qt\2009.01\qt\include\QtCore" -I"..\..\Qt\2009.01\qt\include\QtGui" -I"..\..\Qt\2009.01\qt\include" -I"..\..\Qt\2009.01\qt\include\ActiveQt" -I"release" -I"." -I"..\..\Qt\2009.01\qt\mkspecs\win32-g++"\r
+LINK        =        g++\r
+LFLAGS        =        -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -shared -mthreads -Wl -Wl,--out-implib,release\libgdbmacros.a\r
+LIBS        =        -L"c:\Qt\2009.01\qt\lib" -lQtGui4 -lQtCore4\r
+QMAKE         = c:\Qt\2009.01\qt\bin\qmake.exe\r
+IDC           = c:\Qt\2009.01\qt\bin\idc.exe\r
+IDL           = midl\r
+ZIP           = zip -r -9\r
+DEF_FILE      = \r
+RES_FILE      = \r
+COPY          = copy /y\r
+COPY_FILE     = $(COPY)\r
+COPY_DIR      = xcopy /s /q /y /i\r
+DEL_FILE      = del\r
+DEL_DIR       = rmdir\r
+MOVE          = move\r
+CHK_DIR_EXISTS= if not exist\r
+MKDIR         = mkdir\r
+INSTALL_FILE    = $(COPY_FILE)\r
+INSTALL_PROGRAM = $(COPY_FILE)\r
+INSTALL_DIR     = $(COPY_DIR)\r
+\r
+####### Output directory\r
+\r
+OBJECTS_DIR   = release\r
+\r
+####### Files\r
+\r
+SOURCES       = gdbmacros.cpp \r
+OBJECTS       = release/gdbmacros.o\r
+DIST          = \r
+QMAKE_TARGET  = gdbmacros\r
+DESTDIR        = release\ #avoid trailing-slash linebreak\r
+TARGET         = gdbmacros.dll\r
+DESTDIR_TARGET = release\gdbmacros.dll\r
+\r
+####### Implicit rules\r
+\r
+.SUFFIXES: .cpp .cc .cxx .c\r
+\r
+.cpp.o:\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<\r
+\r
+.cc.o:\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<\r
+\r
+.cxx.o:\r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<\r
+\r
+.c.o:\r
+       $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<\r
+\r
+####### Build rules\r
+\r
+first: all\r
+all: Makefile.Release  $(DESTDIR_TARGET)\r
+\r
+$(DESTDIR_TARGET):  $(OBJECTS) \r
+       $(LINK) $(LFLAGS) -o $(DESTDIR_TARGET) $(OBJECTS)  $(LIBS)\r
+\r
+\r
+qmake:  FORCE\r
+       @$(QMAKE) -spec ..\..\Qt\2009.01\qt\mkspecs\win32-g++ -win32 -o Makefile.Release gdbmacros.pro\r
+\r
+dist:\r
+       $(ZIP) gdbmacros.zip $(SOURCES) $(DIST) gdbmacros.pro ..\..\Qt\2009.01\qt\mkspecs\qconfig.pri ..\..\Qt\2009.01\qt\mkspecs\features\qt_functions.prf ..\..\Qt\2009.01\qt\mkspecs\features\qt_config.prf ..\..\Qt\2009.01\qt\mkspecs\features\exclusive_builds.prf ..\..\Qt\2009.01\qt\mkspecs\features\default_pre.prf ..\..\Qt\2009.01\qt\mkspecs\features\win32\default_pre.prf ..\..\Qt\2009.01\qt\mkspecs\features\release.prf ..\..\Qt\2009.01\qt\mkspecs\features\debug_and_release.prf ..\..\Qt\2009.01\qt\mkspecs\features\default_post.prf ..\..\Qt\2009.01\qt\mkspecs\features\win32\default_post.prf ..\..\Qt\2009.01\qt\mkspecs\features\build_pass.prf ..\..\Qt\2009.01\qt\mkspecs\features\shared.prf ..\..\Qt\2009.01\qt\mkspecs\features\dll.prf ..\..\Qt\2009.01\qt\mkspecs\features\win32\rtti.prf ..\..\Qt\2009.01\qt\mkspecs\features\win32\exceptions.prf ..\..\Qt\2009.01\qt\mkspecs\features\win32\stl.prf ..\..\Qt\2009.01\qt\mkspecs\features\warn_on.prf ..\..\Qt\2009.01\qt\mkspecs\features\qt.prf ..\..\Qt\2009.01\qt\mkspecs\features\win32\thread.prf ..\..\Qt\2009.01\qt\mkspecs\features\moc.prf ..\..\Qt\2009.01\qt\mkspecs\features\win32\windows.prf ..\..\Qt\2009.01\qt\mkspecs\features\resources.prf ..\..\Qt\2009.01\qt\mkspecs\features\uic.prf ..\..\Qt\2009.01\qt\mkspecs\features\yacc.prf ..\..\Qt\2009.01\qt\mkspecs\features\lex.prf  HEADERS RESOURCES IMAGES SOURCES OBJECTIVE_SOURCES FORMS YACCSOURCES YACCSOURCES LEXSOURCES \r
+\r
+clean: compiler_clean \r
+       -$(DEL_FILE) release\gdbmacros.o\r
+       -$(DEL_FILE) release\libgdbmacros.a\r
+\r
+distclean: clean\r
+       -$(DEL_FILE) $(DESTDIR_TARGET)\r
+       -$(DEL_FILE) Makefile.Release\r
+\r
+mocclean: compiler_moc_header_clean compiler_moc_source_clean\r
+\r
+mocables: compiler_moc_header_make_all compiler_moc_source_make_all\r
+\r
+compiler_moc_header_make_all:\r
+compiler_moc_header_clean:\r
+compiler_rcc_make_all:\r
+compiler_rcc_clean:\r
+compiler_image_collection_make_all: qmake_image_collection.cpp\r
+compiler_image_collection_clean:\r
+       -$(DEL_FILE) qmake_image_collection.cpp\r
+compiler_moc_source_make_all:\r
+compiler_moc_source_clean:\r
+compiler_uic_make_all:\r
+compiler_uic_clean:\r
+compiler_yacc_decl_make_all:\r
+compiler_yacc_decl_clean:\r
+compiler_yacc_impl_make_all:\r
+compiler_yacc_impl_clean:\r
+compiler_lex_make_all:\r
+compiler_lex_clean:\r
+compiler_clean: \r
+\r
+\r
+\r
+####### Compile\r
+\r
+release/gdbmacros.o: gdbmacros.cpp \r
+       $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\gdbmacros.o gdbmacros.cpp\r
+\r
+####### Install\r
+\r
+install:   FORCE\r
+\r
+uninstall:   FORCE\r
+\r
+FORCE:\r
+\r
diff --git a/qtc-gdbmacros/debug/gdbmacros.dll b/qtc-gdbmacros/debug/gdbmacros.dll
new file mode 100644 (file)
index 0000000..753a794
Binary files /dev/null and b/qtc-gdbmacros/debug/gdbmacros.dll differ
diff --git a/qtc-gdbmacros/debug/gdbmacros.o b/qtc-gdbmacros/debug/gdbmacros.o
new file mode 100644 (file)
index 0000000..d9bcd6a
Binary files /dev/null and b/qtc-gdbmacros/debug/gdbmacros.o differ
diff --git a/qtc-gdbmacros/debug/libgdbmacros.a b/qtc-gdbmacros/debug/libgdbmacros.a
new file mode 100644 (file)
index 0000000..4767072
Binary files /dev/null and b/qtc-gdbmacros/debug/libgdbmacros.a differ
diff --git a/qtc-gdbmacros/gdbmacros.cpp b/qtc-gdbmacros/gdbmacros.cpp
new file mode 100644 (file)
index 0000000..bd681a6
--- /dev/null
@@ -0,0 +1,2567 @@
+/**************************************************************************\r
+**\r
+** This file is part of Qt Creator\r
+**\r
+** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).\r
+**\r
+** Contact:  Qt Software Information (qt-info@nokia.com)\r
+**\r
+** Commercial Usage\r
+**\r
+** Licensees holding valid Qt Commercial licenses may use this file in\r
+** accordance with the Qt Commercial License Agreement provided with the\r
+** Software or, alternatively, in accordance with the terms contained in\r
+** a written agreement between you and Nokia.\r
+**\r
+** GNU Lesser General Public License Usage\r
+**\r
+** Alternatively, this file may be used under the terms of the GNU Lesser\r
+** General Public License version 2.1 as published by the Free Software\r
+** Foundation and appearing in the file LICENSE.LGPL included in the\r
+** packaging of this file.  Please review the following information to\r
+** ensure the GNU Lesser General Public License version 2.1 requirements\r
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\r
+**\r
+** If you are unsure which license is appropriate for your use, please\r
+** contact the sales department at qt-sales@nokia.com.\r
+**\r
+**************************************************************************/\r
+\r
+#include <qglobal.h>\r
+\r
+// this relies on contents copied from qobject_p.h\r
+#define PRIVATE_OBJECT_ALLOWED 1\r
+\r
+#include <QtCore/QDateTime>\r
+#include <QtCore/QDebug>\r
+#include <QtCore/QDir>\r
+#include <QtCore/QFile>\r
+#include <QtCore/QFileInfo>\r
+#include <QtCore/QHash>\r
+#include <QtCore/QLinkedList>\r
+#include <QtCore/QLocale>\r
+#include <QtCore/QMap>\r
+#include <QtCore/QMetaObject>\r
+#include <QtCore/QMetaProperty>\r
+#include <QtCore/QModelIndex>\r
+#include <QtCore/QObject>\r
+#include <QtCore/QPointer>\r
+#include <QtCore/QString>\r
+#include <QtCore/QTextCodec>\r
+#include <QtCore/QVector>\r
+\r
+int qtGhVersion = QT_VERSION;\r
+\r
+#ifdef QT_GUI_LIB\r
+#   include <QtGui/QPixmap>\r
+#   include <QtGui/QImage>\r
+#endif\r
+\r
+#include <list>\r
+#include <map>\r
+#include <string>\r
+#include <vector>\r
+\r
+#include <ctype.h>\r
+#include <stdio.h>\r
+#include <unistd.h>\r
+\r
+/*!\r
+  \class QDumper\r
+  \brief Helper class for producing "nice" output in Qt Creator's debugger.\r
+\r
+  \internal\r
+\r
+  The whole "custom dumper" implementation is currently far less modular\r
+  than it could be. But as the code is still in a flux, making it nicer\r
+  from a pure archtectural point of view seems still be a waste of resources.\r
+\r
+  Some hints:\r
+\r
+  New dumpers for non-templated classes should be mentioned in\r
+  \c{qDumpObjectData440()} in the  \c{protocolVersion == 1} branch.\r
+\r
+  Templated classes need extra support on the IDE level\r
+  (see plugins/debugger/gdbengine.cpp) and should not be mentiond in\r
+  \c{qDumpObjectData440()}.\r
+\r
+  In any case, dumper processesing should end up in \r
+  \c{handleProtocolVersion2and3()} and needs an entry in the bis switch there.\r
+\r
+  Next step is to create a suitable \c{static void qDumpFoo(QDumper &d)}\r
+  function. At the bare minimum it should contain something like:\r
+\r
+\r
+  \c{\r
+    const Foo &foo = *reinterpret_cast<const Foo *>(d.data);\r
+\r
+    P(d, "value", ...);\r
+    P(d, "type", "Foo");\r
+    P(d, "numchild", "0");\r
+  }\r
+\r
+\r
+  'P(d, name, value)' roughly expands to:\r
+        d << (name) << "=\"" << value << "\"";\r
+\r
+  Useful (i.e. understood by the IDE) names include:\r
+\r
+  \list\r
+    \o "name" shows up in the first column in the Locals&Watchers view.\r
+    \o "value" shows up in the second column.\r
+    \o "valueencoded" should be set to "1" if the value is base64 encoded.\r
+        Always base64-encode values that might use unprintable or otherwise\r
+        "confuse" the protocol (like spaces and quotes). [A-Za-z0-9] is "safe".\r
+        A value of "3" is used for base64-encoded UCS4, "2" denotes \r
+        base64-encoded UTF16.\r
+    \o "numchild" return the number of children in the view. Effectively, only\r
+        0 and != 0 will be used, so don't try too hard to get the number right.\r
+  \endlist\r
+\r
+  If the current item has children, it might be queried to produce information\r
+  about thes children. In this case the dumper should use something like\r
+\r
+  \c{\r
+    if (d.dumpChildren) {\r
+        d << ",children=[";\r
+   }\r
+\r
+  */\r
+\r
+#undef NS\r
+#ifdef QT_NAMESPACE\r
+#   define STRINGIFY0(s) #s\r
+#   define STRINGIFY1(s) STRINGIFY0(s)\r
+#   define NS STRINGIFY1(QT_NAMESPACE) "::"\r
+#   define NSX "'" STRINGIFY1(QT_NAMESPACE) "::"\r
+#   define NSY "'"\r
+#else\r
+#   define NS ""\r
+#   define NSX ""\r
+#   define NSY ""\r
+#endif\r
+\r
+\r
+#if PRIVATE_OBJECT_ALLOWED\r
+\r
+#if defined(QT_BEGIN_NAMESPACE)\r
+QT_BEGIN_NAMESPACE\r
+#endif\r
+\r
+class QVariant;\r
+class QThreadData;\r
+class QObjectConnectionListVector;\r
+\r
+class QObjectPrivate : public QObjectData\r
+{\r
+    Q_DECLARE_PUBLIC(QObject)\r
+\r
+public:\r
+    QObjectPrivate() {}\r
+    virtual ~QObjectPrivate() {}\r
+\r
+    // preserve binary compatibility with code compiled without Qt 3 support\r
+    QList<QObject *> pendingChildInsertedEvents; // unused\r
+\r
+    // id of the thread that owns the object\r
+    QThreadData *threadData;\r
+\r
+    struct Sender\r
+    {\r
+        QObject *sender;\r
+        int signal;\r
+        int ref;\r
+    };\r
+\r
+    Sender *currentSender; // object currently activating the object\r
+    QObject *currentChildBeingDeleted;\r
+\r
+    QList<QPointer<QObject> > eventFilters;\r
+\r
+    struct ExtraData;\r
+    ExtraData *extraData;\r
+    mutable quint32 connectedSignals;\r
+\r
+    QString objectName;\r
+\r
+    struct Connection\r
+    {\r
+        QObject *receiver;\r
+        int method;\r
+        uint connectionType : 3; // 0 == auto, 1 == direct, 2 == queued, 4 == blocking\r
+        QBasicAtomicPointer<int> argumentTypes;\r
+    };\r
+    typedef QList<Connection> ConnectionList;\r
+\r
+    QObjectConnectionListVector *connectionLists;\r
+    QList<Sender> senders;\r
+    int *deleteWatch;\r
+};\r
+\r
+#if defined(QT_BEGIN_NAMESPACE)\r
+QT_END_NAMESPACE\r
+#endif\r
+\r
+#endif // PRIVATE_OBJECT_ALLOWED\r
+\r
+\r
+// this can be mangled typenames of nested templates, each char-by-char\r
+// comma-separated integer list\r
+static char qDumpInBuffer[10000];\r
+static char qDumpOutBuffer[100000];\r
+//static char qDumpSize[20];\r
+\r
+namespace {\r
+\r
+static bool isPointerType(const QByteArray &type)\r
+{\r
+    return type.endsWith("*") || type.endsWith("* const");\r
+}\r
+\r
+static QByteArray stripPointerType(QByteArray type)\r
+{\r
+    if (type.endsWith("*"))\r
+        type.chop(1);\r
+    if (type.endsWith("* const"))\r
+        type.chop(7);\r
+    if (type.endsWith(' '))\r
+        type.chop(1);\r
+    return type;\r
+}\r
+\r
+// This is used to abort evaluation of custom data dumpers in a "coordinated"\r
+// way. Abortion will happen anyway when we try to access a non-initialized\r
+// non-trivial object, so there is no way to prevent this from occuring at all\r
+// conceptionally.  Gdb will catch SIGSEGV and return to the calling frame.\r
+// This is just fine provided we only _read_ memory in the custom handlers\r
+// below.\r
+\r
+volatile int qProvokeSegFaultHelper;\r
+\r
+static const void *addOffset(const void *p, int offset)\r
+{\r
+    return offset + reinterpret_cast<const char *>(p);\r
+}\r
+\r
+static const void *skipvtable(const void *p)\r
+{\r
+    return sizeof(void*) + reinterpret_cast<const char *>(p);\r
+}\r
+\r
+static const void *deref(const void *p)\r
+{\r
+    return *reinterpret_cast<const char* const*>(p);\r
+}\r
+\r
+static const void *dfunc(const void *p)\r
+{\r
+    return deref(skipvtable(p));\r
+}\r
+\r
+static bool isEqual(const char *s, const char *t)\r
+{\r
+    return qstrcmp(s, t) == 0;\r
+}\r
+\r
+static bool startsWith(const char *s, const char *t)\r
+{\r
+    return qstrncmp(s, t, strlen(t)) == 0;\r
+}\r
+\r
+// provoke segfault when address is not readable\r
+#define qCheckAccess(d) do { qProvokeSegFaultHelper = *(char*)d; } while (0)\r
+#define qCheckPointer(d) do { if (d) qProvokeSegFaultHelper = *(char*)d; } while (0)\r
+// provoke segfault unconditionally\r
+#define qCheck(b) do { if (!(b)) qProvokeSegFaultHelper = *(char*)0; } while (0)\r
+\r
+const char *stripNamespace(const char *type)\r
+{\r
+    static const size_t nslen = strlen(NS);\r
+    return startsWith(type, NS) ? type + nslen : type;\r
+}\r
+\r
+static bool isSimpleType(const char *type)\r
+{\r
+    switch (type[0]) {\r
+        case 'c':\r
+            return isEqual(type, "char");\r
+        case 'd':\r
+            return isEqual(type, "double");\r
+        case 'f':\r
+            return isEqual(type, "float");\r
+        case 'i':\r
+            return isEqual(type, "int");\r
+        case 'l':\r
+            return isEqual(type, "long") || startsWith(type, "long ");\r
+        case 's':\r
+            return isEqual(type, "short") || isEqual(type, "signed")\r
+                || startsWith(type, "signed ");\r
+        case 'u':\r
+            return isEqual(type, "unsigned") || startsWith(type, "unsigned ");\r
+    }\r
+    return false;\r
+}\r
+\r
+#if 0\r
+static bool isStringType(const char *type)\r
+{\r
+    return isEqual(type, NS"QString")\r
+        || isEqual(type, NS"QByteArray")\r
+        || isEqual(type, "std::string")\r
+        || isEqual(type, "std::wstring")\r
+        || isEqual(type, "wstring");\r
+}\r
+#endif\r
+\r
+static bool isMovableType(const char *type)\r
+{\r
+    if (isPointerType(type))\r
+        return true;\r
+\r
+    if (isSimpleType(type))\r
+        return true;\r
+\r
+    type = stripNamespace(type);\r
+\r
+    switch (type[1]) {  \r
+        case 'B':\r
+            return isEqual(type, "QBrush")\r
+                || isEqual(type, "QBitArray")\r
+                || isEqual(type, "QByteArray") ;\r
+        case 'C':\r
+            return isEqual(type, "QCustomTypeInfo");\r
+        case 'D':\r
+            return isEqual(type, "QDate")\r
+                || isEqual(type, "QDateTime");\r
+        case 'F':\r
+            return isEqual(type, "QFileInfo")\r
+                || isEqual(type, "QFixed")\r
+                || isEqual(type, "QFixedPoint")\r
+                || isEqual(type, "QFixedSize");\r
+        case 'H':\r
+            return isEqual(type, "QHashDummyValue");\r
+        case 'I':\r
+            return isEqual(type, "QIcon")\r
+                || isEqual(type, "QImage");\r
+        case 'L':\r
+            return isEqual(type, "QLine")\r
+                || isEqual(type, "QLineF")\r
+                || isEqual(type, "QLocal");\r
+        case 'M':\r
+            return isEqual(type, "QMatrix")\r
+                || isEqual(type, "QModelIndex");\r
+        case 'P':\r
+            return isEqual(type, "QPoint")\r
+                || isEqual(type, "QPointF")\r
+                || isEqual(type, "QPen")\r
+                || isEqual(type, "QPersistentModelIndex");\r
+        case 'R':\r
+            return isEqual(type, "QResourceRoot")\r
+                || isEqual(type, "QRect")\r
+                || isEqual(type, "QRectF")\r
+                || isEqual(type, "QRegExp");\r
+        case 'S':\r
+            return isEqual(type, "QSize")\r
+                || isEqual(type, "QSizeF")\r
+                || isEqual(type, "QString");\r
+        case 'T':\r
+            return isEqual(type, "QTime")\r
+                || isEqual(type, "QTextBlock");\r
+        case 'U':\r
+            return isEqual(type, "QUrl");\r
+        case 'V':\r
+            return isEqual(type, "QVariant");\r
+        case 'X':\r
+            return isEqual(type, "QXmlStreamAttribute")\r
+                || isEqual(type, "QXmlStreamNamespaceDeclaration")\r
+                || isEqual(type, "QXmlStreamNotationDeclaration")\r
+                || isEqual(type, "QXmlStreamEntityDeclaration");\r
+    }\r
+    return false;\r
+}\r
+\r
+struct QDumper\r
+{\r
+    explicit QDumper();\r
+    ~QDumper();\r
+    void checkFill();\r
+    QDumper &operator<<(long c);\r
+    QDumper &operator<<(int i);\r
+    QDumper &operator<<(double d);\r
+    QDumper &operator<<(float d);\r
+    QDumper &operator<<(unsigned long c);\r
+    QDumper &operator<<(unsigned int i);\r
+    QDumper &operator<<(const void *p);\r
+    QDumper &operator<<(qulonglong c);\r
+    QDumper &operator<<(const char *str);\r
+    QDumper &operator<<(const QByteArray &ba);\r
+    QDumper &operator<<(const QString &str);\r
+    void put(char c);\r
+    void addCommaIfNeeded();\r
+    void putBase64Encoded(const char *buf, int n);\r
+    void putEllipsis();\r
+    void disarm();\r
+\r
+    void beginHash(); // start of data hash output\r
+    void endHash(); // start of data hash output\r
+\r
+    // the dumper arguments\r
+    int protocolVersion;   // dumper protocol version\r
+    int token;             // some token to show on success\r
+    const char *outertype; // object type\r
+    const char *iname;     // object name used for display\r
+    const char *exp;       // object expression\r
+    const char *innertype; // 'inner type' for class templates\r
+    const void *data;      // pointer to raw data\r
+    bool dumpChildren;     // do we want to see children?\r
+\r
+    // handling of nested templates\r
+    void setupTemplateParameters();\r
+    enum { maxTemplateParameters = 10 };\r
+    const char *templateParameters[maxTemplateParameters + 1];\r
+    int templateParametersCount;\r
+\r
+    // internal state\r
+    bool success;          // are we finished?\r
+    bool full;\r
+    int pos;\r
+\r
+    int extraInt[4];\r
+};\r
+\r
+\r
+QDumper::QDumper()\r
+{\r
+    success = false;\r
+    full = false;\r
+    qDumpOutBuffer[0] = 'f'; // marks output as 'wrong' \r
+    pos = 1;\r
+}\r
+\r
+QDumper::~QDumper()\r
+{\r
+    qDumpOutBuffer[pos++] = '\0';\r
+    if (success)\r
+        qDumpOutBuffer[0] = (full ? '+' : 't');\r
+}\r
+\r
+void QDumper::setupTemplateParameters()\r
+{\r
+    char *s = const_cast<char *>(innertype);\r
+\r
+    templateParametersCount = 1;\r
+    templateParameters[0] = s;\r
+    for (int i = 1; i != maxTemplateParameters + 1; ++i)\r
+        templateParameters[i] = 0;\r
+\r
+    while (*s) {\r
+        while (*s && *s != '@')\r
+            ++s;\r
+        if (*s) {\r
+            *s = '\0';\r
+            ++s;\r
+            templateParameters[templateParametersCount++] = s;\r
+        }\r
+    }\r
+}\r
+\r
+QDumper &QDumper::operator<<(unsigned long long c)\r
+{\r
+    checkFill();\r
+    pos += sprintf(qDumpOutBuffer + pos, "%llu", c);\r
+    return *this;\r
+}\r
+\r
+QDumper &QDumper::operator<<(unsigned long c)\r
+{\r
+    checkFill();\r
+    pos += sprintf(qDumpOutBuffer + pos, "%lu", c);\r
+    return *this;\r
+}\r
+\r
+QDumper &QDumper::operator<<(float d)\r
+{\r
+    checkFill();\r
+    pos += sprintf(qDumpOutBuffer + pos, "%f", d);\r
+    return *this;\r
+}\r
+\r
+QDumper &QDumper::operator<<(double d)\r
+{\r
+    checkFill();\r
+    pos += sprintf(qDumpOutBuffer + pos, "%f", d);\r
+    return *this;\r
+}\r
+\r
+QDumper &QDumper::operator<<(unsigned int i)\r
+{\r
+    checkFill();\r
+    pos += sprintf(qDumpOutBuffer + pos, "%u", i);\r
+    return *this;\r
+}\r
+\r
+QDumper &QDumper::operator<<(long c)\r
+{\r
+    checkFill();\r
+    pos += sprintf(qDumpOutBuffer + pos, "%ld", c);\r
+    return *this;\r
+}\r
+\r
+QDumper &QDumper::operator<<(int i)\r
+{\r
+    checkFill();\r
+    pos += sprintf(qDumpOutBuffer + pos, "%d", i);\r
+    return *this;\r
+}\r
+\r
+QDumper &QDumper::operator<<(const void *p)\r
+{\r
+    static char buf[100];\r
+    if (p) {\r
+        sprintf(buf, "%p", p);\r
+        // we get a '0x' prefix only on some implementations.\r
+        // if it isn't there, write it out manually.\r
+        if (buf[1] != 'x') {\r
+            put('0');\r
+            put('x');\r
+        }\r
+        *this << buf;\r
+    } else {\r
+        *this << "<null>";\r
+    }\r
+    return *this;\r
+}\r
+\r
+void QDumper::checkFill()\r
+{\r
+    if (pos >= int(sizeof(qDumpOutBuffer)) - 100)\r
+        full = true;\r
+}\r
+\r
+void QDumper::put(char c)\r
+{\r
+    checkFill();\r
+    if (!full)\r
+        qDumpOutBuffer[pos++] = c;\r
+}\r
+\r
+void QDumper::addCommaIfNeeded()\r
+{\r
+    if (pos == 0)\r
+        return;\r
+    char c = qDumpOutBuffer[pos - 1];\r
+    if (c == '}' || c == '"' || c == ']')\r
+        put(',');\r
+}\r
+\r
+void QDumper::putBase64Encoded(const char *buf, int n)\r
+{\r
+    const char alphabet[] = "ABCDEFGH" "IJKLMNOP" "QRSTUVWX" "YZabcdef"\r
+                            "ghijklmn" "opqrstuv" "wxyz0123" "456789+/";\r
+    const char padchar = '=';\r
+    int padlen = 0;\r
+\r
+    //int tmpsize = ((n * 4) / 3) + 3;\r
+\r
+    int i = 0;\r
+    while (i < n) {\r
+        int chunk = 0;\r
+        chunk |= int(uchar(buf[i++])) << 16;\r
+        if (i == n) {\r
+            padlen = 2;\r
+        } else {\r
+            chunk |= int(uchar(buf[i++])) << 8;\r
+            if (i == n)\r
+                padlen = 1;\r
+            else\r
+                chunk |= int(uchar(buf[i++]));\r
+        }\r
+\r
+        int j = (chunk & 0x00fc0000) >> 18;\r
+        int k = (chunk & 0x0003f000) >> 12;\r
+        int l = (chunk & 0x00000fc0) >> 6;\r
+        int m = (chunk & 0x0000003f);\r
+        put(alphabet[j]);\r
+        put(alphabet[k]);\r
+        put(padlen > 1 ? padchar : alphabet[l]);\r
+        put(padlen > 0 ? padchar : alphabet[m]);\r
+    }\r
+}\r
+\r
+QDumper &QDumper::operator<<(const char *str)\r
+{\r
+    if (!str)\r
+        return *this << "<null>";\r
+    while (*str)\r
+        put(*(str++));\r
+    return *this;\r
+}\r
+\r
+QDumper &QDumper::operator<<(const QByteArray &ba)\r
+{\r
+    putBase64Encoded(ba.constData(), ba.size());\r
+    return *this;\r
+}\r
+\r
+QDumper &QDumper::operator<<(const QString &str)\r
+{\r
+    QByteArray ba = str.toUtf8();\r
+    putBase64Encoded(ba.constData(), ba.size());\r
+    return *this;\r
+}\r
+\r
+void QDumper::disarm()\r
+{\r
+    success = true;\r
+}\r
+\r
+void QDumper::beginHash()\r
+{\r
+    addCommaIfNeeded();\r
+    put('{');\r
+}\r
+\r
+void QDumper::endHash()\r
+{\r
+    put('}');\r
+}\r
+\r
+void QDumper::putEllipsis()\r
+{\r
+    addCommaIfNeeded();\r
+    *this << "{name=\"<incomplete>\",value=\"\",type=\"" << innertype << "\"}";\r
+}\r
+\r
+//\r
+// Some helpers to keep the dumper code short\r
+//\r
+\r
+// dump property=value pair\r
+#undef P\r
+#define P(dumper,name,value) \\r
+    do { \\r
+        dumper.addCommaIfNeeded(); \\r
+        dumper << (name) << "=\"" << value << "\""; \\r
+    } while (0)\r
+\r
+// simple string property\r
+#undef S\r
+#define S(dumper, name, value) \\r
+    dumper.beginHash(); \\r
+    P(dumper, "name", name); \\r
+    P(dumper, "value", value); \\r
+    P(dumper, "type", NS"QString"); \\r
+    P(dumper, "numchild", "0"); \\r
+    P(dumper, "valueencoded", "1"); \\r
+    dumper.endHash();\r
+\r
+// simple integer property\r
+#undef I\r
+#define I(dumper, name, value) \\r
+    dumper.beginHash(); \\r
+    P(dumper, "name", name); \\r
+    P(dumper, "value", value); \\r
+    P(dumper, "type", "int"); \\r
+    P(dumper, "numchild", "0"); \\r
+    dumper.endHash();\r
+\r
+// simple boolean property\r
+#undef BL\r
+#define BL(dumper, name, value) \\r
+    dumper.beginHash(); \\r
+    P(dumper, "name", name); \\r
+    P(dumper, "value", (value ? "true" : "false")); \\r
+    P(dumper, "type", "bool"); \\r
+    P(dumper, "numchild", "0"); \\r
+    dumper.endHash();\r
+\r
+\r
+// a single QChar\r
+#undef QC\r
+#define QC(dumper, name, value) \\r
+    dumper.beginHash(); \\r
+    P(dumper, "name", name); \\r
+    P(dumper, "value", QString(QLatin1String("'%1' (%2, 0x%3)")) \\r
+        .arg(value).arg(value.unicode()).arg(value.unicode(), 0, 16)); \\r
+    P(dumper, "valueencoded", "1"); \\r
+    P(dumper, "type", NS"QChar"); \\r
+    P(dumper, "numchild", "0"); \\r
+    dumper.endHash();\r
+\r
+#undef TT\r
+#define TT(type, value) \\r
+    "<tr><td>" << type << "</td><td> : </td><td>" << value << "</td></tr>"\r
+\r
+static void qDumpUnknown(QDumper &d)\r
+{\r
+    P(d, "iname", d.iname);\r
+    P(d, "addr", d.data);\r
+    P(d, "value", "<internal error>");\r
+    P(d, "type", d.outertype);\r
+    P(d, "numchild", "0");\r
+    d.disarm();\r
+}\r
+\r
+static void qDumpInnerValueHelper(QDumper &d, const char *type, const void *addr,\r
+    const char *field = "value")\r
+{\r
+    type = stripNamespace(type);\r
+    switch (type[1]) {\r
+        case 'l':\r
+            if (isEqual(type, "float"))\r
+                P(d, field, *(float*)addr);\r
+            return;\r
+        case 'n':\r
+            if (isEqual(type, "int"))\r
+                P(d, field, *(int*)addr);\r
+            else if (isEqual(type, "unsigned"))\r
+                P(d, field, *(unsigned int*)addr);\r
+            else if (isEqual(type, "unsigned int"))\r
+                P(d, field, *(unsigned int*)addr);\r
+            else if (isEqual(type, "unsigned long"))\r
+                P(d, field, *(unsigned long*)addr);\r
+            else if (isEqual(type, "unsigned long long"))\r
+                P(d, field, *(qulonglong*)addr);\r
+            return;\r
+        case 'o':\r
+            if (isEqual(type, "bool"))\r
+                switch (*(bool*)addr) {\r
+                    case 0: P(d, field, "false"); break;\r
+                    case 1: P(d, field, "true"); break;\r
+                    default: P(d, field, *(bool*)addr); break;\r
+                }\r
+            else if (isEqual(type, "double"))\r
+                P(d, field, *(double*)addr);\r
+            else if (isEqual(type, "long"))\r
+                P(d, field, *(long*)addr);\r
+            else if (isEqual(type, "long long"))\r
+                P(d, field, *(qulonglong*)addr);\r
+            return;\r
+        case 'B':\r
+            if (isEqual(type, "QByteArray")) {\r
+                d.addCommaIfNeeded();\r
+                d << field << "encoded=\"1\",";\r
+                P(d, field, *(QByteArray*)addr);\r
+            }\r
+            return;\r
+        case 'L':\r
+            if (startsWith(type, "QList<")) {\r
+                const QListData *ldata = reinterpret_cast<const QListData*>(addr);\r
+                P(d, "value", "<" << ldata->size() << " items>");\r
+                P(d, "valuedisabled", "true");\r
+                P(d, "numchild", ldata->size());\r
+            }\r
+            return;\r
+        case 'O':\r
+            if (isEqual(type, "QObject *")) {\r
+                if (addr) {\r
+                    const QObject *ob = reinterpret_cast<const QObject *>(addr);\r
+                    P(d, "addr", ob);\r
+                    P(d, "value", ob->objectName());\r
+                    P(d, "valueencoded", "1");\r
+                    P(d, "type", NS"QObject");\r
+                    P(d, "displayedtype", ob->metaObject()->className());\r
+                } else {\r
+                    P(d, "value", "0x0");\r
+                    P(d, "type", NS"QObject *");\r
+                }\r
+            }\r
+            return;\r
+        case 'S':\r
+            if (isEqual(type, "QString")) {\r
+                d.addCommaIfNeeded();\r
+                d << field << "encoded=\"1\",";\r
+                P(d, field, *(QString*)addr);\r
+            }\r
+            return;\r
+        default:\r
+            return;\r
+    }\r
+}\r
+\r
+static void qDumpInnerValue(QDumper &d, const char *type, const void *addr)\r
+{\r
+    P(d, "addr", addr);\r
+    P(d, "type", type);\r
+\r
+    if (!type[0])\r
+        return;\r
+\r
+    qDumpInnerValueHelper(d, type, addr);\r
+}\r
+\r
+\r
+static void qDumpInnerValueOrPointer(QDumper &d,\r
+    const char *type, const char *strippedtype, const void *addr)\r
+{\r
+    if (strippedtype) {\r
+        if (deref(addr)) {\r
+            P(d, "addr", deref(addr));\r
+            P(d, "type", strippedtype);\r
+            qDumpInnerValueHelper(d, strippedtype, deref(addr));\r
+        } else {\r
+            P(d, "addr", addr);\r
+            P(d, "type", strippedtype);\r
+            P(d, "value", "<null>");\r
+            P(d, "numchild", "0");\r
+        }\r
+    } else {\r
+        P(d, "addr", addr);\r
+        P(d, "type", type);\r
+        qDumpInnerValueHelper(d, type, addr);\r
+    }\r
+}\r
+\r
+//////////////////////////////////////////////////////////////////////////////\r
+\r
+static void qDumpQByteArray(QDumper &d)\r
+{\r
+    const QByteArray &ba = *reinterpret_cast<const QByteArray *>(d.data);\r
+\r
+    if (!ba.isEmpty()) {\r
+        qCheckAccess(ba.constData());\r
+        qCheckAccess(ba.constData() + ba.size());\r
+    }\r
+\r
+    if (ba.size() <= 100)\r
+        P(d, "value", ba);\r
+    else\r
+        P(d, "value", ba.left(100) << " <size: " << ba.size() << ", cut...>");\r
+    P(d, "valueencoded", "1");\r
+    P(d, "type", NS"QByteArray");\r
+    P(d, "numchild", ba.size());\r
+    P(d, "childtype", "char");\r
+    P(d, "childnumchild", "0");\r
+    if (d.dumpChildren) {\r
+        d << ",children=[";\r
+        char buf[20];\r
+        for (int i = 0; i != ba.size(); ++i) {\r
+            unsigned char c = ba.at(i);\r
+            unsigned char u = (isprint(c) && c != '\'' && c != '"') ? c : '?';\r
+            sprintf(buf, "%02x  (%u '%c')", c, c, u);\r
+            d.beginHash();\r
+            P(d, "name", i);\r
+            P(d, "value", buf);\r
+            d.endHash();\r
+        }\r
+        d << "]";\r
+    }\r
+    d.disarm();\r
+}\r
+\r
+static void qDumpQDateTime(QDumper &d)\r
+{\r
+#ifdef QT_NO_DATESTRING\r
+    qDumpUnknown(d);\r
+#else\r
+    const QDateTime &date = *reinterpret_cast<const QDateTime *>(d.data);\r
+    if (date.isNull()) {\r
+        P(d, "value", "(null)");\r
+    } else {\r
+        P(d, "value", date.toString());\r
+        P(d, "valueencoded", "1");\r
+    }\r
+    P(d, "type", NS"QDateTime");\r
+    P(d, "numchild", "3");\r
+    if (d.dumpChildren) {\r
+        d << ",children=[";\r
+        BL(d, "isNull", date.isNull());\r
+        I(d, "toTime_t", (long)date.toTime_t());\r
+        S(d, "toString", date.toString());\r
+        S(d, "toString_(ISO)", date.toString(Qt::ISODate));\r
+        S(d, "toString_(SystemLocale)", date.toString(Qt::SystemLocaleDate));\r
+        S(d, "toString_(Locale)", date.toString(Qt::LocaleDate));\r
+        S(d, "toString", date.toString());\r
+\r
+        #if 0\r
+        d.beginHash();\r
+        P(d, "name", "toUTC");\r
+        P(d, "exp", "(("NSX"QDateTime"NSY"*)" << d.data << ")"\r
+                    "->toTimeSpec('"NS"Qt::UTC')");\r
+        P(d, "type", NS"QDateTime");\r
+        P(d, "numchild", "1");\r
+        d.endHash();\r
+        #endif\r
+\r
+        #if 0\r
+        d.beginHash();\r
+        P(d, "name", "toLocalTime");\r
+        P(d, "exp", "(("NSX"QDateTime"NSY"*)" << d.data << ")"\r
+                    "->toTimeSpec('"NS"Qt::LocalTime')");\r
+        P(d, "type", NS"QDateTime");\r
+        P(d, "numchild", "1");\r
+        d.endHash();\r
+        #endif\r
+\r
+        d << "]";\r
+    }\r
+    d.disarm();\r
+#endif // ifdef QT_NO_DATESTRING\r
+}\r
+\r
+static void qDumpQDir(QDumper &d)\r
+{\r
+    const QDir &dir = *reinterpret_cast<const QDir *>(d.data);\r
+    P(d, "value", dir.path());\r
+    P(d, "valueencoded", "1");\r
+    P(d, "type", NS"QDir");\r
+    P(d, "numchild", "3");\r
+    if (d.dumpChildren) {\r
+        d << ",children=[";\r
+        S(d, "absolutePath", dir.absolutePath());\r
+        S(d, "canonicalPath", dir.canonicalPath());\r
+        d << "]";\r
+    }\r
+    d.disarm();\r
+}\r
+\r
+static void qDumpQFile(QDumper &d)\r
+{\r
+    const QFile &file = *reinterpret_cast<const QFile *>(d.data);\r
+    P(d, "value", file.fileName());\r
+    P(d, "valueencoded", "1");\r
+    P(d, "type", NS"QFile");\r
+    P(d, "numchild", "2");\r
+    if (d.dumpChildren) {\r
+        d << ",children=[";\r
+        S(d, "fileName", file.fileName());\r
+        BL(d, "exists", file.exists());\r
+        d << "]";\r
+    }\r
+    d.disarm();\r
+}\r
+\r
+static void qDumpQFileInfo(QDumper &d)\r
+{\r
+    const QFileInfo &info = *reinterpret_cast<const QFileInfo *>(d.data);\r
+    P(d, "value", info.filePath());\r
+    P(d, "valueencoded", "1");\r
+    P(d, "type", NS"QFileInfo");\r
+    P(d, "numchild", "3");\r
+    if (d.dumpChildren) {\r
+        d << ",children=[";\r
+        S(d, "absolutePath", info.absolutePath());\r
+        S(d, "absoluteFilePath", info.absoluteFilePath());\r
+        S(d, "canonicalPath", info.canonicalPath());\r
+        S(d, "canonicalFilePath", info.canonicalFilePath());\r
+        S(d, "completeBaseName", info.completeBaseName());\r
+        S(d, "completeSuffix", info.completeSuffix());\r
+        S(d, "baseName", info.baseName());\r
+#ifdef Q_OS_MACX\r
+        BL(d, "isBundle", info.isBundle());\r
+        S(d, "bundleName", info.bundleName());\r
+#endif\r
+        S(d, "completeSuffix", info.completeSuffix());\r
+        S(d, "fileName", info.fileName());\r
+        S(d, "filePath", info.filePath());\r
+        S(d, "group", info.group());\r
+        S(d, "owner", info.owner());\r
+        S(d, "path", info.path());\r
+\r
+        I(d, "groupid", (long)info.groupId());\r
+        I(d, "ownerid", (long)info.ownerId());\r
+        //QFile::Permissions permissions () const\r
+        I(d, "permissions", info.permissions());\r
+\r
+        //QDir absoluteDir () const\r
+        //QDir dir () const\r
+\r
+        BL(d, "caching", info.caching());\r
+        BL(d, "exists", info.exists());\r
+        BL(d, "isAbsolute", info.isAbsolute());\r
+        BL(d, "isDir", info.isDir());\r
+        BL(d, "isExecutable", info.isExecutable());\r
+        BL(d, "isFile", info.isFile());\r
+        BL(d, "isHidden", info.isHidden());\r
+        BL(d, "isReadable", info.isReadable());\r
+        BL(d, "isRelative", info.isRelative());\r
+        BL(d, "isRoot", info.isRoot());\r
+        BL(d, "isSymLink", info.isSymLink());\r
+        BL(d, "isWritable", info.isWritable());\r
+\r
+        d.beginHash();\r
+        P(d, "name", "created");\r
+        P(d, "value", info.created().toString());\r
+        P(d, "valueencoded", "1");\r
+        P(d, "exp", "(("NSX"QFileInfo"NSY"*)" << d.data << ")->created()");\r
+        P(d, "type", NS"QDateTime");\r
+        P(d, "numchild", "1");\r
+        d.endHash();\r
+\r
+        d.beginHash();\r
+        P(d, "name", "lastModified");\r
+        P(d, "value", info.lastModified().toString());\r
+        P(d, "valueencoded", "1");\r
+        P(d, "exp", "(("NSX"QFileInfo"NSY"*)" << d.data << ")->lastModified()");\r
+        P(d, "type", NS"QDateTime");\r
+        P(d, "numchild", "1");\r
+        d.endHash();\r
+\r
+        d.beginHash();\r
+        P(d, "name", "lastRead");\r
+        P(d, "value", info.lastRead().toString());\r
+        P(d, "valueencoded", "1");\r
+        P(d, "exp", "(("NSX"QFileInfo"NSY"*)" << d.data << ")->lastRead()");\r
+        P(d, "type", NS"QDateTime");\r
+        P(d, "numchild", "1");\r
+        d.endHash();\r
+\r
+        d << "]";\r
+    }\r
+    d.disarm();\r
+}\r
+\r
+bool isOptimizedIntKey(const char *keyType)\r
+{\r
+    return isEqual(keyType, "int")\r
+#if defined(Q_BYTE_ORDER) && Q_BYTE_ORDER == Q_LITTLE_ENDIAN\r
+        || isEqual(keyType, "short")\r
+        || isEqual(keyType, "ushort")\r
+#endif\r
+        || isEqual(keyType, "uint");\r
+}\r
+\r
+int hashOffset(bool optimizedIntKey, bool forKey, unsigned keySize, unsigned valueSize)\r
+{\r
+    // int-key optimization, small value\r
+    struct NodeOS { void *next; uint k; uint  v; } nodeOS;\r
+    // int-key optimiatzion, large value\r
+    struct NodeOL { void *next; uint k; void *v; } nodeOL;\r
+    // no optimization, small value\r
+    struct NodeNS { void *next; uint h; uint  k; uint  v; } nodeNS;\r
+    // no optimization, large value\r
+    struct NodeNL { void *next; uint h; uint  k; void *v; } nodeNL;\r
+    // complex key\r
+    struct NodeL  { void *next; uint h; void *k; void *v; } nodeL;\r
+\r
+    if (forKey) {\r
+        // offsetof(...,...) not yet in Standard C++\r
+        const ulong nodeOSk ( (char *)&nodeOS.k - (char *)&nodeOS );\r
+        const ulong nodeOLk ( (char *)&nodeOL.k - (char *)&nodeOL );\r
+        const ulong nodeNSk ( (char *)&nodeNS.k - (char *)&nodeNS );\r
+        const ulong nodeNLk ( (char *)&nodeNL.k - (char *)&nodeNL );\r
+        const ulong nodeLk  ( (char *)&nodeL.k  - (char *)&nodeL );\r
+        if (optimizedIntKey)\r
+            return valueSize > sizeof(int) ? nodeOLk : nodeOSk;\r
+        if (keySize > sizeof(int))\r
+            return nodeLk;\r
+        return valueSize > sizeof(int) ? nodeNLk : nodeNSk;\r
+    } else {\r
+        const ulong nodeOSv ( (char *)&nodeOS.v - (char *)&nodeOS );\r
+        const ulong nodeOLv ( (char *)&nodeOL.v - (char *)&nodeOL );\r
+        const ulong nodeNSv ( (char *)&nodeNS.v - (char *)&nodeNS );\r
+        const ulong nodeNLv ( (char *)&nodeNL.v - (char *)&nodeNL );\r
+        const ulong nodeLv  ( (char *)&nodeL.v  - (char *)&nodeL );\r
+        if (optimizedIntKey)\r
+            return valueSize > sizeof(int) ? nodeOLv : nodeOSv;\r
+        if (keySize > sizeof(int))\r
+            return nodeLv;\r
+        return valueSize > sizeof(int) ? nodeNLv : nodeNSv;\r
+    }\r
+}\r
+\r
+\r
+static void qDumpQHash(QDumper &d)\r
+{\r
+    QHashData *h = *reinterpret_cast<QHashData *const*>(d.data);\r
+    const char *keyType   = d.templateParameters[0];\r
+    const char *valueType = d.templateParameters[1];\r
+\r
+    qCheckPointer(h->fakeNext);\r
+    qCheckPointer(h->buckets);\r
+\r
+    unsigned keySize = d.extraInt[0];\r
+    unsigned valueSize = d.extraInt[1];\r
+\r
+    int n = h->size;\r
+\r
+    if (n < 0)\r
+        qCheck(false);\r
+    if (n > 0) {\r
+        qCheckPointer(h->fakeNext);\r
+        qCheckPointer(*h->buckets);\r
+    }\r
+\r
+    P(d, "value", "<" << n << " items>");\r
+    P(d, "numchild", n);\r
+    if (d.dumpChildren) {\r
+        if (n > 1000)\r
+            n = 1000;\r
+        bool isSimpleKey = isSimpleType(keyType);\r
+        bool isSimpleValue = isSimpleType(valueType);\r
+        bool opt = isOptimizedIntKey(keyType);\r
+        int keyOffset = hashOffset(opt, true, keySize, valueSize);\r
+        int valueOffset = hashOffset(opt, false, keySize, valueSize);\r
+\r
+        P(d, "extra", "isSimpleKey: " << isSimpleKey\r
+            << " isSimpleValue: " << isSimpleValue\r
+            << " valueType: '" << isSimpleValue\r
+            << " keySize: " << keyOffset << " valueOffset: " << valueOffset\r
+            << " opt: " << opt);\r
+\r
+        QHashData::Node *node = h->firstNode();\r
+        QHashData::Node *end = reinterpret_cast<QHashData::Node *>(h);\r
+        int i = 0;\r
+\r
+        d << ",children=[";\r
+        while (node != end) {\r
+            d.beginHash();\r
+                P(d, "name", i);\r
+                qDumpInnerValueHelper(d, keyType, addOffset(node, keyOffset), "key");\r
+                qDumpInnerValueHelper(d, valueType, addOffset(node, valueOffset));\r
+                if (isSimpleKey && isSimpleValue) {\r
+                    P(d, "type", valueType);\r
+                    P(d, "addr", addOffset(node, valueOffset));\r
+                } else {\r
+                    P(d, "exp", "*('"NS"QHashNode<" << keyType << ","\r
+                        << valueType << " >'*)" << node);\r
+                    P(d, "type", "'"NS"QHashNode<" << keyType << ","\r
+                        << valueType << " >'");\r
+                }\r
+            d.endHash();\r
+            ++i;\r
+            node = QHashData::nextNode(node);\r
+        }\r
+        d << "]";\r
+    }\r
+    d.disarm();\r
+}\r
+\r
+static void qDumpQHashNode(QDumper &d)\r
+{\r
+    const QHashData *h = reinterpret_cast<const QHashData *>(d.data);\r
+    const char *keyType   = d.templateParameters[0];\r
+    const char *valueType = d.templateParameters[1];\r
+\r
+    unsigned keySize = d.extraInt[0];\r
+    unsigned valueSize = d.extraInt[1];\r
+    bool opt = isOptimizedIntKey(keyType);\r
+    int keyOffset = hashOffset(opt, true, keySize, valueSize);\r
+    int valueOffset = hashOffset(opt, false, keySize, valueSize);\r
+    if (isSimpleType(valueType)) \r
+        qDumpInnerValueHelper(d, valueType, addOffset(h, valueOffset));\r
+    else\r
+        P(d, "value", "");\r
+\r
+    P(d, "numchild", 2);\r
+    if (d.dumpChildren) {\r
+        // there is a hash specialization in cast the key are integers or shorts\r
+        d << ",children=[";\r
+        d.beginHash();\r
+            P(d, "name", "key");\r
+            P(d, "type", keyType);\r
+            P(d, "addr", addOffset(h, keyOffset));\r
+        d.endHash();\r
+        d.beginHash();\r
+            P(d, "name", "value");\r
+            P(d, "type", valueType);\r
+            P(d, "addr", addOffset(h, valueOffset));\r
+        d.endHash();\r
+        d << "]";\r
+    }\r
+    d.disarm();\r
+}\r
+\r
+static void qDumpQImage(QDumper &d)\r
+{\r
+#ifdef QT_GUI_LIB\r
+    const QImage &im = *reinterpret_cast<const QImage *>(d.data);\r
+    P(d, "value", "(" << im.width() << "x" << im.height() << ")");\r
+    P(d, "type", NS"QImage");\r
+    P(d, "numchild", "0");\r
+    d.disarm();\r
+#else\r
+    Q_UNUSED(d);\r
+#endif\r
+}\r
+\r
+static void qDumpQList(QDumper &d)\r
+{\r
+    // This uses the knowledge that QList<T> has only a single member\r
+    // of type  union { QListData p; QListData::Data *d; };\r
+    const QListData &ldata = *reinterpret_cast<const QListData*>(d.data);\r
+    const QListData::Data *pdata =\r
+        *reinterpret_cast<const QListData::Data* const*>(d.data);\r
+    int nn = ldata.size();\r
+    if (nn < 0)\r
+        qCheck(false);\r
+    if (nn > 0) {\r
+        qCheckAccess(ldata.d->array);\r
+        //qCheckAccess(ldata.d->array[0]);\r
+        //qCheckAccess(ldata.d->array[nn - 1]);\r
+#if QT_VERSION >= 0x040400\r
+        if (ldata.d->ref._q_value <= 0)\r
+            qCheck(false);\r
+#endif\r
+    }\r
+\r
+    int n = nn;\r
+    P(d, "value", "<" << n << " items>");\r
+    P(d, "valuedisabled", "true");\r
+    P(d, "numchild", n);\r
+    P(d, "childtype", d.innertype);\r
+    if (d.dumpChildren) {\r
+        unsigned innerSize = d.extraInt[0];\r
+        bool innerTypeIsPointer = isPointerType(d.innertype);\r
+        QByteArray strippedInnerType = stripPointerType(d.innertype);\r
+\r
+        // The exact condition here is:\r
+        //  QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic\r
+        // but this data is available neither in the compiled binary nor\r
+        // in the frontend.\r
+        // So as first approximation only do the 'isLarge' check:\r
+        bool isInternal = innerSize <= int(sizeof(void*))\r
+            && isMovableType(d.innertype);\r
+\r
+        P(d, "internal", (int)isInternal);\r
+        P(d, "childtype", d.innertype);\r
+        if (n > 1000)\r
+            n = 1000;\r
+        d << ",children=[";\r
+        for (int i = 0; i != n; ++i) {\r
+            d.beginHash();\r
+            P(d, "name", i);\r
+            if (innerTypeIsPointer) {\r
+                void *p = ldata.d->array + i + pdata->begin;\r
+                if (p) {\r
+                    //P(d, "value","@" << p);\r
+                    qDumpInnerValue(d, strippedInnerType.data(), deref(p));\r
+                } else {\r
+                    P(d, "value", "<null>");\r
+                    P(d, "numchild", "0");\r
+                }\r
+            } else {\r
+                void *p = ldata.d->array + i + pdata->begin;\r
+                if (isInternal) {\r
+                    //qDumpInnerValue(d, d.innertype, p);\r
+                    P(d, "addr", p);\r
+                    qDumpInnerValueHelper(d, d.innertype, p);\r
+                } else {\r
+                    //qDumpInnerValue(d, d.innertype, deref(p));\r
+                    P(d, "addr", deref(p));\r
+                    qDumpInnerValueHelper(d, d.innertype, deref(p));\r
+                }\r
+            }\r
+            d.endHash();\r
+        }\r
+        if (n < nn)\r
+            d.putEllipsis();\r
+        d << "]";\r
+    }\r
+    d.disarm();\r
+}\r
+\r
+static void qDumpQLinkedList(QDumper &d)\r
+{\r
+    // This uses the knowledge that QLinkedList<T> has only a single member\r
+    // of type  union { QLinkedListData *d; QLinkedListNode<T> *e; };\r
+    const QLinkedListData *ldata =\r
+        reinterpret_cast<const QLinkedListData*>(deref(d.data));\r
+    int nn = ldata->size;\r
+    if (nn < 0)\r
+        qCheck(false);\r
+\r
+    int n = nn;\r
+    P(d, "value", "<" << n << " items>");\r
+    P(d, "valuedisabled", "true");\r
+    P(d, "numchild", n);\r
+    P(d, "childtype", d.innertype);\r
+    if (d.dumpChildren) {\r
+        //unsigned innerSize = d.extraInt[0];\r
+        //bool innerTypeIsPointer = isPointerType(d.innertype);\r
+        QByteArray strippedInnerType = stripPointerType(d.innertype);\r
+        const char *stripped =\r
+            isPointerType(d.innertype) ? strippedInnerType.data() : 0;\r
+\r
+        P(d, "childtype", d.innertype);\r
+        if (n > 1000)\r
+            n = 1000;\r
+        d << ",children=[";\r
+        const void *p = deref(ldata);\r
+        for (int i = 0; i != n; ++i) {\r
+            d.beginHash();\r
+            P(d, "name", i);\r
+            const void *addr = addOffset(p, 2 * sizeof(void*));\r
+            qDumpInnerValueOrPointer(d, d.innertype, stripped, addr);\r
+            p = deref(p);\r
+            d.endHash();\r
+        }\r
+        if (n < nn)\r
+            d.putEllipsis();\r
+        d << "]";\r
+    }\r
+    d.disarm();\r
+}\r
+\r
+static void qDumpQLocale(QDumper &d)\r
+{\r
+    const QLocale &locale = *reinterpret_cast<const QLocale *>(d.data);\r
+    P(d, "value", locale.name());\r
+    P(d, "valueencoded", "1");\r
+    P(d, "type", NS"QLocale");\r
+    P(d, "numchild", "8");\r
+    if (d.dumpChildren) {\r
+        d << ",children=[";\r
+\r
+        d.beginHash();\r
+        P(d, "name", "country");\r
+        P(d, "exp",  "(("NSX"QLocale"NSY"*)" << d.data << ")->country()");\r
+        d.endHash();\r
+\r
+        d.beginHash();\r
+        P(d, "name", "language");\r
+        P(d, "exp",  "(("NSX"QLocale"NSY"*)" << d.data << ")->language()");\r
+        d.endHash();\r
+\r
+        d.beginHash();\r
+        P(d, "name", "measurementSystem");\r
+        P(d, "exp",  "(("NSX"QLocale"NSY"*)" << d.data << ")->measurementSystem()");\r
+        d.endHash();\r
+\r
+        d.beginHash();\r
+        P(d, "name", "numberOptions");\r
+        P(d, "exp",  "(("NSX"QLocale"NSY"*)" << d.data << ")->numberOptions()");\r
+        d.endHash();\r
+\r
+        S(d, "timeFormat_(short)", locale.timeFormat(QLocale::ShortFormat));\r
+        S(d, "timeFormat_(long)", locale.timeFormat(QLocale::LongFormat));\r
+\r
+        QC(d, "decimalPoint", locale.decimalPoint());\r
+        QC(d, "exponential", locale.exponential());\r
+        QC(d, "percent", locale.percent());\r
+        QC(d, "zeroDigit", locale.zeroDigit());\r
+        QC(d, "groupSeparator", locale.groupSeparator());\r
+        QC(d, "negativeSign", locale.negativeSign());\r
+\r
+        d << "]";\r
+    }\r
+    d.disarm();\r
+}\r
+\r
+static void qDumpQMapNode(QDumper &d)\r
+{\r
+    const QMapData *h = reinterpret_cast<const QMapData *>(d.data);\r
+    const char *keyType   = d.templateParameters[0];\r
+    const char *valueType = d.templateParameters[1];\r
+\r
+    qCheckAccess(h->backward);\r
+    qCheckAccess(h->forward[0]);\r
+\r
+    P(d, "value", "");\r
+    P(d, "numchild", 2);\r
+    if (d.dumpChildren) {\r
+        //unsigned keySize = d.extraInt[0];\r
+        //unsigned valueSize = d.extraInt[1];\r
+        unsigned mapnodesize = d.extraInt[2];\r
+        unsigned valueOff = d.extraInt[3];\r
+\r
+        unsigned keyOffset = 2 * sizeof(void*) - mapnodesize;\r
+        unsigned valueOffset = 2 * sizeof(void*) - mapnodesize + valueOff;\r
+\r
+        d << ",children=[";\r
+        d.beginHash();\r
+        P(d, "name", "key");\r
+        qDumpInnerValue(d, keyType, addOffset(h, keyOffset));\r
+\r
+        d.endHash();\r
+        d.beginHash();\r
+        P(d, "name", "value");\r
+        qDumpInnerValue(d, valueType, addOffset(h, valueOffset));\r
+        d.endHash();\r
+        d << "]";\r
+    }\r
+\r
+    d.disarm();\r
+}\r
+\r
+static void qDumpQMap(QDumper &d)\r
+{\r
+    QMapData *h = *reinterpret_cast<QMapData *const*>(d.data);\r
+    const char *keyType   = d.templateParameters[0];\r
+    const char *valueType = d.templateParameters[1];\r
+\r
+    int n = h->size;\r
+\r
+    if (n < 0)\r
+        qCheck(false);\r
+    if (n > 0) {\r
+        qCheckAccess(h->backward);\r
+        qCheckAccess(h->forward[0]);\r
+        qCheckPointer(h->backward->backward);\r
+        qCheckPointer(h->forward[0]->backward);\r
+    }\r
+\r
+    P(d, "value", "<" << n << " items>");\r
+    P(d, "numchild", n);\r
+    if (d.dumpChildren) {\r
+        if (n > 1000)\r
+            n = 1000;\r
+\r
+        //unsigned keySize = d.extraInt[0];\r
+        //unsigned valueSize = d.extraInt[1];\r
+        unsigned mapnodesize = d.extraInt[2];\r
+        unsigned valueOff = d.extraInt[3];\r
+\r
+        bool isSimpleKey = isSimpleType(keyType);\r
+        bool isSimpleValue = isSimpleType(valueType);\r
+        // both negative:\r
+        int keyOffset = 2 * sizeof(void*) - int(mapnodesize);\r
+        int valueOffset = 2 * sizeof(void*) - int(mapnodesize) + valueOff;\r
+\r
+        P(d, "extra", "simplekey: " << isSimpleKey << " isSimpleValue: " << isSimpleValue\r
+            << " keyOffset: " << keyOffset << " valueOffset: " << valueOffset\r
+            << " mapnodesize: " << mapnodesize);\r
+        d << ",children=[";\r
+\r
+        QMapData::Node *node = reinterpret_cast<QMapData::Node *>(h->forward[0]);\r
+        QMapData::Node *end = reinterpret_cast<QMapData::Node *>(h);\r
+        int i = 0;\r
+\r
+        while (node != end) {\r
+            d.beginHash();\r
+                P(d, "name", i);\r
+                qDumpInnerValueHelper(d, keyType, addOffset(node, keyOffset), "key");\r
+                qDumpInnerValueHelper(d, valueType, addOffset(node, valueOffset));\r
+                if (isSimpleKey && isSimpleValue) {\r
+                    P(d, "type", valueType);\r
+                    P(d, "addr", addOffset(node, valueOffset));\r
+                } else {\r
+#if QT_VERSION >= 0x040500\r
+                    // actually, any type (even 'char') will do...\r
+                    P(d, "type", NS"QMapNode<"\r
+                        << keyType << "," << valueType << " >");\r
+                    P(d, "exp", "*('"NS"QMapNode<"\r
+                        << keyType << "," << valueType << " >'*)" << node);\r
+\r
+                    //P(d, "exp", "*('"NS"QMapData'*)" << (void*)node);\r
+                    //P(d, "exp", "*(char*)" << (void*)node);\r
+                    // P(d, "addr", node);  does not work as gdb fails to parse\r
+#else \r
+                    P(d, "type", NS"QMapData::Node<"\r
+                        << keyType << "," << valueType << " >");\r
+                    P(d, "exp", "*('"NS"QMapData::Node<"\r
+                        << keyType << "," << valueType << " >'*)" << node);\r
+#endif\r
+                }\r
+            d.endHash();\r
+\r
+            ++i;\r
+            node = node->forward[0];\r
+        }\r
+        d << "]";\r
+    }\r
+\r
+    d.disarm();\r
+}\r
+\r
+static void qDumpQMultiMap(QDumper &d)\r
+{\r
+    qDumpQMap(d);\r
+}\r
+\r
+static void qDumpQModelIndex(QDumper &d)\r
+{\r
+    const QModelIndex *mi = reinterpret_cast<const QModelIndex *>(d.data);\r
+\r
+    P(d, "type", NS"QModelIndex");\r
+    if (mi->isValid()) {\r
+        P(d, "value", "(" << mi->row() << ", " << mi->column() << ")");\r
+        P(d, "numchild", 5);\r
+        if (d.dumpChildren) {\r
+            d << ",children=[";\r
+            I(d, "row", mi->row());\r
+            I(d, "column", mi->column());\r
+\r
+            d.beginHash();\r
+            P(d, "name", "parent");\r
+            const QModelIndex parent = mi->parent();\r
+            if (parent.isValid())\r
+                P(d, "value", "(" << mi->row() << ", " << mi->column() << ")");\r
+            else\r
+                P(d, "value", "<invalid>");\r
+            P(d, "exp", "(("NSX"QModelIndex"NSY"*)" << d.data << ")->parent()");\r
+            P(d, "type", NS"QModelIndex");\r
+            P(d, "numchild", "1");\r
+            d.endHash();\r
+\r
+            S(d, "internalId", QString::number(mi->internalId(), 10));\r
+\r
+            d.beginHash();\r
+            P(d, "name", "model");\r
+            P(d, "value", static_cast<const void *>(mi->model()));\r
+            P(d, "type", NS"QAbstractItemModel*");\r
+            P(d, "numchild", "1");\r
+            d.endHash();\r
+\r
+            d << "]";\r
+        }\r
+    } else {\r
+        P(d, "value", "<invalid>");\r
+        P(d, "numchild", 0);\r
+    }\r
+\r
+    d.disarm();\r
+}\r
+\r
+static void qDumpQObject(QDumper &d)\r
+{\r
+    const QObject *ob = reinterpret_cast<const QObject *>(d.data);\r
+    const QMetaObject *mo = ob->metaObject();\r
+    unsigned childrenOffset = d.extraInt[0];\r
+    P(d, "value", ob->objectName());\r
+    P(d, "valueencoded", "1");\r
+    P(d, "type", NS"QObject");\r
+    P(d, "displayedtype", mo->className());\r
+    P(d, "numchild", 4);\r
+    if (d.dumpChildren) {\r
+        const QObjectList &children = ob->children();\r
+        int slotCount = 0;\r
+        int signalCount = 0;\r
+        for (int i = mo->methodCount(); --i >= 0; ) {\r
+            QMetaMethod::MethodType mt = mo->method(i).methodType();\r
+            signalCount += (mt == QMetaMethod::Signal);\r
+            slotCount += (mt == QMetaMethod::Slot);\r
+        }\r
+        d << ",children=[";\r
+        d.beginHash();\r
+            P(d, "name", "properties");\r
+            // FIXME: Note that when simply using '(QObject*)'\r
+            // in the cast below, Gdb/MI _sometimes_ misparses\r
+            // expressions further down in the tree.\r
+            P(d, "exp", "*(class '"NS"QObject'*)" << d.data);\r
+            P(d, "type", NS"QObjectPropertyList");\r
+            P(d, "value", "<" << mo->propertyCount() << " items>");\r
+            P(d, "numchild", mo->propertyCount());\r
+        d.endHash();\r
+#if 0\r
+        d.beginHash();\r
+            P(d, "name", "methods");\r
+            P(d, "exp", "*(class '"NS"QObject'*)" << d.data);\r
+            P(d, "value", "<" << mo->methodCount() << " items>");\r
+            P(d, "numchild", mo->methodCount());\r
+        d.endHash();\r
+#endif\r
+#if 0\r
+        d.beginHash();\r
+            P(d, "name", "senders");\r
+            P(d, "exp", "(*(class '"NS"QObjectPrivate'*)" << dfunc(ob) << ")->senders");\r
+            P(d, "type", NS"QList<"NS"QObjectPrivateSender>");\r
+        d.endHash();\r
+#endif\r
+#if PRIVATE_OBJECT_ALLOWED\r
+        d.beginHash();\r
+            P(d, "name", "signals");\r
+            P(d, "exp", "*(class '"NS"QObject'*)" << d.data);\r
+            P(d, "type", NS"QObjectSignalList");\r
+            P(d, "value", "<" << signalCount << " items>");\r
+            P(d, "numchild", signalCount);\r
+        d.endHash();\r
+        d.beginHash();\r
+            P(d, "name", "slots");\r
+            P(d, "exp", "*(class '"NS"QObject'*)" << d.data);\r
+            P(d, "type", NS"QObjectSlotList");\r
+            P(d, "value", "<" << slotCount << " items>");\r
+            P(d, "numchild", slotCount);\r
+        d.endHash();\r
+#endif\r
+        d.beginHash();\r
+            P(d, "name", "children");\r
+            // works always, but causes additional traffic on the list\r
+            //P(d, "exp", "((class '"NS"QObject'*)" << d.data << ")->children()");\r
+            //\r
+            //P(d, "addr", addOffset(dfunc(ob), childrenOffset));\r
+            //P(d, "type", NS"QList<QObject *>");\r
+            //P(d, "value", "<" << children.size() << " items>");\r
+            qDumpInnerValue(d, NS"QList<"NS"QObject *>",\r
+                addOffset(dfunc(ob), childrenOffset));\r
+            P(d, "numchild", children.size());\r
+        d.endHash();\r
+#if 0\r
+        // Unneeded (and not working): Connections are listes as childen\r
+        // of the signal or slot they are connected to.\r
+        // d.beginHash();\r
+        //     P(d, "name", "connections");\r
+        //     P(d, "exp", "*(*(class "NS"QObjectPrivate*)" << dfunc(ob) << ")->connectionLists");\r
+        //     P(d, "type", NS"QVector<"NS"QList<"NS"QObjectPrivate::Connection> >");\r
+        // d.endHash();\r
+#endif\r
+#if 0\r
+        d.beginHash();\r
+            P(d, "name", "objectprivate");\r
+            P(d, "type", NS"QObjectPrivate");\r
+            P(d, "addr", dfunc(ob));\r
+            P(d, "value", "");\r
+            P(d, "numchild", "1");\r
+        d.endHash();\r
+#endif\r
+        d.beginHash();\r
+            P(d, "name", "parent");\r
+            qDumpInnerValueHelper(d, NS"QObject *", ob->parent());\r
+        d.endHash();\r
+#if 1\r
+        d.beginHash();\r
+            P(d, "name", "className");\r
+            P(d, "value",ob->metaObject()->className());\r
+            P(d, "type", "");\r
+            P(d, "numchild", "0");\r
+        d.endHash();\r
+#endif\r
+        d << "]";\r
+    }\r
+    d.disarm();\r
+}\r
+\r
+static void qDumpQObjectPropertyList(QDumper &d)\r
+{\r
+    const QObject *ob = (const QObject *)d.data;\r
+    const QMetaObject *mo = ob->metaObject();\r
+    P(d, "addr", "<synthetic>");\r
+    P(d, "type", NS"QObjectPropertyList");\r
+    P(d, "numchild", mo->propertyCount());\r
+    if (d.dumpChildren) {\r
+        d << ",children=[";\r
+        for (int i = mo->propertyCount(); --i >= 0; ) {\r
+            const QMetaProperty & prop = mo->property(i);\r
+            d.beginHash();\r
+            P(d, "name", prop.name());\r
+            P(d, "exp", "((" << mo->className() << "*)" << ob\r
+                        << ")->" << prop.name() << "()");\r
+            if (isEqual(prop.typeName(), "QString")) {\r
+                P(d, "value", prop.read(ob).toString());\r
+                P(d, "valueencoded", "1");\r
+                P(d, "type", NS"QString");\r
+                P(d, "numchild", "0");\r
+            } else if (isEqual(prop.typeName(), "bool")) {\r
+                P(d, "value", (prop.read(ob).toBool() ? "true" : "false"));\r
+                P(d, "numchild", "0");\r
+            } else if (isEqual(prop.typeName(), "int")) {\r
+                P(d, "value", prop.read(ob).toInt());\r
+                P(d, "numchild", "0");\r
+            }\r
+            P(d, "type", prop.typeName());\r
+            P(d, "numchild", "1");\r
+            d.endHash();\r
+        }\r
+        d << "]";\r
+    }\r
+    d.disarm();\r
+}\r
+\r
+static void qDumpQObjectMethodList(QDumper &d)\r
+{\r
+    const QObject *ob = (const QObject *)d.data;\r
+    const QMetaObject *mo = ob->metaObject();\r
+    P(d, "addr", "<synthetic>");\r
+    P(d, "type", NS"QObjectMethodList");\r
+    P(d, "numchild", mo->methodCount());\r
+    P(d, "childtype", "QMetaMethod::Method");\r
+    P(d, "childnumchild", "0");\r
+    if (d.dumpChildren) {\r
+        d << ",children=[";\r
+        for (int i = 0; i != mo->methodCount(); ++i) {\r
+            const QMetaMethod & method = mo->method(i);\r
+            int mt = method.methodType();\r
+            d.beginHash();\r
+            P(d, "name", i << " " << mo->indexOfMethod(method.signature())\r
+                << " " << method.signature());\r
+            P(d, "value", (mt == QMetaMethod::Signal ? "<Signal>" : "<Slot>") << " (" << mt << ")");\r
+            d.endHash();\r
+        }\r
+        d << "]";\r
+    }\r
+    d.disarm();\r
+}\r
+\r
+#if PRIVATE_OBJECT_ALLOWED\r
+const char * qConnectionTypes[] ={\r
+    "auto",\r
+    "direct",\r
+    "queued",\r
+    "autocompat",\r
+    "blockingqueued"\r
+};\r
+\r
+#if QT_VERSION >= 0x040400\r
+static const QObjectPrivate::ConnectionList &qConnectionList(const QObject *ob, int signalNumber)\r
+{\r
+    static const QObjectPrivate::ConnectionList emptyList;\r
+    const QObjectPrivate *p = reinterpret_cast<const QObjectPrivate *>(dfunc(ob));\r
+    if (!p->connectionLists)\r
+        return emptyList;\r
+    typedef QVector<QObjectPrivate::ConnectionList> ConnLists;\r
+    const ConnLists *lists = reinterpret_cast<const ConnLists *>(p->connectionLists);\r
+    // there's an optimization making the lists only large enough to hold the\r
+    // last non-empty item\r
+    if (signalNumber >= lists->size())\r
+        return emptyList;\r
+    return lists->at(signalNumber);\r
+}\r
+#endif\r
+\r
+static void qDumpQObjectSignal(QDumper &d)\r
+{\r
+    unsigned signalNumber = d.extraInt[0];\r
+\r
+    P(d, "addr", "<synthetic>");\r
+    P(d, "numchild", "1");\r
+    P(d, "type", NS"QObjectSignal");\r
+\r
+#if QT_VERSION >= 0x040400\r
+    if (d.dumpChildren) {\r
+        const QObject *ob = reinterpret_cast<const QObject *>(d.data);\r
+        d << ",children=[";\r
+        const QObjectPrivate::ConnectionList &connList = qConnectionList(ob, signalNumber);\r
+        for (int i = 0; i != connList.size(); ++i) {\r
+            const QObjectPrivate::Connection &conn = connList.at(i);\r
+            d.beginHash();\r
+                P(d, "name", i << " receiver");\r
+                qDumpInnerValueHelper(d, NS"QObject *", conn.receiver);\r
+            d.endHash();\r
+            d.beginHash();\r
+                P(d, "name", i << " slot");\r
+                P(d, "type", "");\r
+                if (conn.receiver) \r
+                    P(d, "value", conn.receiver->metaObject()->method(conn.method).signature());\r
+                else\r
+                    P(d, "value", "<invalid receiver>");\r
+                P(d, "numchild", "0");\r
+            d.endHash();\r
+            d.beginHash();\r
+                P(d, "name", i << " type");\r
+                P(d, "type", "");\r
+                P(d, "value", "<" << qConnectionTypes[conn.method] << " connection>");\r
+                P(d, "numchild", "0");\r
+            d.endHash();\r
+        }\r
+        d << "]";\r
+        P(d, "numchild", connList.size());\r
+    }\r
+#endif\r
+    d.disarm();\r
+}\r
+\r
+static void qDumpQObjectSignalList(QDumper &d)\r
+{\r
+    const QObject *ob = reinterpret_cast<const QObject *>(d.data);\r
+    const QMetaObject *mo = ob->metaObject();\r
+    int count = 0;\r
+    for (int i = mo->methodCount(); --i >= 0; )\r
+        count += (mo->method(i).methodType() == QMetaMethod::Signal);\r
+    P(d, "addr", d.data);\r
+    P(d, "numchild", count);\r
+#if QT_VERSION >= 0x040400\r
+    if (d.dumpChildren) {\r
+        d << ",children=[";\r
+        for (int i = 0; i != mo->methodCount(); ++i) {\r
+            const QMetaMethod & method = mo->method(i);\r
+            if (method.methodType() == QMetaMethod::Signal) {\r
+                int k = mo->indexOfSignal(method.signature());\r
+                const QObjectPrivate::ConnectionList &connList = qConnectionList(ob, k);\r
+                d.beginHash();\r
+                P(d, "name", k);\r
+                P(d, "value", method.signature());\r
+                P(d, "numchild", connList.size());\r
+                //P(d, "numchild", "1");\r
+                P(d, "exp", "*(class '"NS"QObject'*)" << d.data);\r
+                P(d, "type", NS"QObjectSignal");\r
+                d.endHash();\r
+            }\r
+        }\r
+        d << "]";\r
+    }\r
+#endif\r
+    d.disarm();\r
+}\r
+\r
+static void qDumpQObjectSlot(QDumper &d)\r
+{\r
+    int slotNumber = d.extraInt[0];\r
+\r
+    P(d, "addr", d.data);\r
+    P(d, "numchild", "1");\r
+    P(d, "type", NS"QObjectSlot");\r
+\r
+#if QT_VERSION >= 0x040400\r
+    if (d.dumpChildren) {\r
+        d << ",children=[";\r
+        int numchild = 0;\r
+        const QObject *ob = reinterpret_cast<const QObject *>(d.data);\r
+        const QObjectPrivate *p = reinterpret_cast<const QObjectPrivate *>(dfunc(ob));\r
+        for (int s = 0; s != p->senders.size(); ++s) {\r
+            const QObjectPrivate::Sender &sender = p->senders.at(s);\r
+            const QObjectPrivate::ConnectionList &connList\r
+                = qConnectionList(sender.sender, sender.signal);\r
+            for (int i = 0; i != connList.size(); ++i) {\r
+                const QObjectPrivate::Connection &conn = connList.at(i);\r
+                if (conn.receiver == ob && conn.method == slotNumber) {\r
+                    ++numchild;\r
+                    const QMetaMethod & method =\r
+                        sender.sender->metaObject()->method(sender.signal);\r
+                    d.beginHash();\r
+                        P(d, "name", s << " sender");\r
+                        qDumpInnerValueHelper(d, NS"QObject *", sender.sender);\r
+                    d.endHash();\r
+                    d.beginHash();\r
+                        P(d, "name", s << " signal");\r
+                        P(d, "type", "");\r
+                        P(d, "value", method.signature());\r
+                        P(d, "numchild", "0");\r
+                    d.endHash();\r
+                    d.beginHash();\r
+                        P(d, "name", s << " type");\r
+                        P(d, "type", "");\r
+                        P(d, "value", "<" << qConnectionTypes[conn.method] << " connection>");\r
+                        P(d, "numchild", "0");\r
+                    d.endHash();\r
+                }\r
+            }\r
+        }\r
+        d << "]";\r
+        P(d, "numchild", numchild);\r
+    }\r
+#endif\r
+    d.disarm();\r
+}\r
+\r
+static void qDumpQObjectSlotList(QDumper &d)\r
+{\r
+    const QObject *ob = reinterpret_cast<const QObject *>(d.data);\r
+#if QT_VERSION >= 0x040400\r
+    const QObjectPrivate *p = reinterpret_cast<const QObjectPrivate *>(dfunc(ob));\r
+#endif\r
+    const QMetaObject *mo = ob->metaObject();\r
+\r
+    int count = 0;\r
+    for (int i = mo->methodCount(); --i >= 0; )\r
+        count += (mo->method(i).methodType() == QMetaMethod::Slot);\r
+\r
+    P(d, "addr", d.data);\r
+    P(d, "numchild", count);\r
+#if QT_VERSION >= 0x040400\r
+    if (d.dumpChildren) {\r
+        d << ",children=[";\r
+        for (int i = 0; i != mo->methodCount(); ++i) {\r
+            const QMetaMethod & method = mo->method(i);\r
+            if (method.methodType() == QMetaMethod::Slot) {\r
+                d.beginHash();\r
+                int k = mo->indexOfSlot(method.signature());\r
+                P(d, "name", k);\r
+                P(d, "value", method.signature());\r
+\r
+                // count senders. expensive...\r
+                int numchild = 0;\r
+                for (int s = 0; s != p->senders.size(); ++s) {\r
+                    const QObjectPrivate::Sender & sender = p->senders.at(s);\r
+                    const QObjectPrivate::ConnectionList &connList\r
+                        = qConnectionList(sender.sender, sender.signal);\r
+                    for (int c = 0; c != connList.size(); ++c) {\r
+                        const QObjectPrivate::Connection &conn = connList.at(c);\r
+                        if (conn.receiver == ob && conn.method == k)\r
+                            ++numchild;\r
+                    }\r
+                }\r
+                P(d, "numchild", numchild);\r
+                P(d, "exp", "*(class '"NS"QObject'*)" << d.data);\r
+                P(d, "type", NS"QObjectSlot");\r
+                d.endHash();\r
+            }\r
+        }\r
+        d << "]";\r
+    }\r
+#endif\r
+    d.disarm();\r
+}\r
+#endif // PRIVATE_OBJECT_ALLOWED\r
+\r
+\r
+static void qDumpQPixmap(QDumper &d)\r
+{\r
+#ifdef QT_GUI_LIB\r
+    const QPixmap &im = *reinterpret_cast<const QPixmap *>(d.data);\r
+    P(d, "value", "(" << im.width() << "x" << im.height() << ")");\r
+    P(d, "type", NS"QPixmap");\r
+    P(d, "numchild", "0");\r
+    d.disarm();\r
+#else\r
+    Q_UNUSED(d);\r
+#endif\r
+}\r
+\r
+static void qDumpQSet(QDumper &d)\r
+{\r
+    // This uses the knowledge that QHash<T> has only a single member\r
+    // of  union { QHashData *d; QHashNode<Key, T> *e; };\r
+    QHashData *hd = *(QHashData**)d.data;\r
+    QHashData::Node *node = hd->firstNode();\r
+\r
+    int n = hd->size;\r
+    if (n < 0)\r
+        qCheck(false);\r
+    if (n > 0) {\r
+        qCheckAccess(node);\r
+        qCheckPointer(node->next);\r
+    }\r
+\r
+    P(d, "value", "<" << n << " items>");\r
+    P(d, "valuedisabled", "true");\r
+    P(d, "numchild", 2 * n);\r
+    if (d.dumpChildren) {\r
+        if (n > 100)\r
+            n = 100;\r
+        d << ",children=[";\r
+        int i = 0;\r
+        for (int bucket = 0; bucket != hd->numBuckets && i <= 10000; ++bucket) {\r
+            for (node = hd->buckets[bucket]; node->next; node = node->next) {\r
+                d.beginHash();\r
+                P(d, "name", i);\r
+                P(d, "type", d.innertype);\r
+                P(d, "exp", "(('"NS"QHashNode<" << d.innertype\r
+                    << ","NS"QHashDummyValue>'*)"\r
+                    << static_cast<const void*>(node) << ")->key"\r
+                );\r
+                d.endHash();\r
+                ++i;\r
+                if (i > 10000) {\r
+                    d.putEllipsis();\r
+                    break;\r
+                }\r
+            }\r
+        }\r
+        d << "]";\r
+    }\r
+    d.disarm();\r
+}\r
+\r
+static void qDumpQString(QDumper &d)\r
+{\r
+    const QString &str = *reinterpret_cast<const QString *>(d.data);\r
+\r
+    if (!str.isEmpty()) {\r
+        qCheckAccess(str.unicode());\r
+        qCheckAccess(str.unicode() + str.size());\r
+    }\r
+\r
+    P(d, "value", str);\r
+    P(d, "valueencoded", "1");\r
+    P(d, "type", NS"QString");\r
+    //P(d, "editvalue", str);  // handled generically below\r
+    P(d, "numchild", "0");\r
+\r
+    d.disarm();\r
+}\r
+\r
+static void qDumpQStringList(QDumper &d)\r
+{\r
+    const QStringList &list = *reinterpret_cast<const QStringList *>(d.data);\r
+    int n = list.size();\r
+    if (n < 0)\r
+        qCheck(false);\r
+    if (n > 0) {\r
+        qCheckAccess(&list.front());\r
+        qCheckAccess(&list.back());\r
+    }\r
+\r
+    P(d, "value", "<" << n << " items>");\r
+    P(d, "valuedisabled", "true");\r
+    P(d, "numchild", n);\r
+    P(d, "childtype", NS"QString");\r
+    P(d, "childnumchild", "0");\r
+    if (d.dumpChildren) {\r
+        if (n > 1000)\r
+            n = 1000;\r
+        d << ",children=[";\r
+        for (int i = 0; i != n; ++i) {\r
+            d.beginHash();\r
+            P(d, "name", i);\r
+            P(d, "value", list[i]);\r
+            P(d, "valueencoded", "1");\r
+            d.endHash();\r
+        }\r
+        if (n < list.size())\r
+            d.putEllipsis();\r
+        d << "]";\r
+    }\r
+    d.disarm();\r
+}\r
+\r
+static void qDumpQTextCodec(QDumper &d)\r
+{\r
+    const QTextCodec &codec = *reinterpret_cast<const QTextCodec *>(d.data);\r
+    P(d, "value", codec.name());\r
+    P(d, "valueencoded", "1");\r
+    P(d, "type", NS"QTextCodec");\r
+    P(d, "numchild", "2");\r
+    if (d.dumpChildren) {\r
+        d << ",children=[";\r
+        S(d, "name", codec.name());\r
+        I(d, "mibEnum", codec.mibEnum());\r
+        d << "]";\r
+    }\r
+    d.disarm();\r
+}\r
+\r
+static void qDumpQVariantHelper(const void *data, QString *value,\r
+    QString *exp, int *numchild)\r
+{\r
+    const QVariant &v = *reinterpret_cast<const QVariant *>(data);\r
+    switch (v.type()) {\r
+    case QVariant::Invalid:\r
+        *value = QLatin1String("<invalid>");\r
+        *numchild = 0;\r
+        break;\r
+    case QVariant::String:\r
+        *value = QLatin1Char('"') + v.toString() + QLatin1Char('"');\r
+        *numchild = 0;\r
+        break;\r
+    case QVariant::StringList:\r
+        *exp = QString(QLatin1String("((QVariant*)%1)->d.data.c"))\r
+                    .arg((quintptr)data);\r
+        *numchild = v.toStringList().size();\r
+        break;\r
+    case QVariant::Int:\r
+        *value = QString::number(v.toInt());\r
+        *numchild= 0;\r
+        break;\r
+    case QVariant::Double:\r
+        *value = QString::number(v.toDouble());\r
+        *numchild = 0;\r
+        break;\r
+    default: {\r
+        char buf[1000];\r
+        const char *format = (v.typeName()[0] == 'Q')\r
+            ?  "'"NS"%s "NS"qVariantValue<"NS"%s >'(*('"NS"QVariant'*)%p)"\r
+            :  "'%s "NS"qVariantValue<%s >'(*('"NS"QVariant'*)%p)";\r
+        qsnprintf(buf, sizeof(buf) - 1, format, v.typeName(), v.typeName(), data);\r
+        *exp = QLatin1String(buf);\r
+        *numchild = 1;\r
+        break;\r
+        }\r
+    }\r
+}\r
+\r
+static void qDumpQVariant(QDumper &d)\r
+{\r
+    const QVariant &v = *reinterpret_cast<const QVariant *>(d.data);\r
+    QString value;\r
+    QString exp;\r
+    int numchild = 0;\r
+    qDumpQVariantHelper(d.data, &value, &exp, &numchild);\r
+    bool isInvalid = (v.typeName() == 0);\r
+    if (isInvalid) {\r
+        P(d, "value", "(invalid)");\r
+    } else if (value.isEmpty()) {\r
+        P(d, "value", "(" << v.typeName() << ") " << qPrintable(value));\r
+    } else {\r
+        QByteArray ba;\r
+        ba += '(';\r
+        ba += v.typeName();\r
+        ba += ") ";\r
+        ba += qPrintable(value);\r
+        P(d, "value", ba);\r
+        P(d, "valueencoded", "1");\r
+    }\r
+    P(d, "type", NS"QVariant");\r
+    P(d, "numchild", (isInvalid ? "0" : "1"));\r
+    if (d.dumpChildren) {\r
+        d << ",children=[";\r
+        d.beginHash();\r
+        P(d, "name", "value");\r
+        if (!exp.isEmpty())\r
+            P(d, "exp", qPrintable(exp));\r
+        if (!value.isEmpty()) {\r
+            P(d, "value", value);\r
+            P(d, "valueencoded", "1");\r
+        }\r
+        P(d, "type", v.typeName());\r
+        P(d, "numchild", numchild);\r
+        d.endHash();\r
+        d << "]";\r
+    }\r
+    d.disarm();\r
+}\r
+\r
+static void qDumpQVector(QDumper &d)\r
+{\r
+    QVectorData *v = *reinterpret_cast<QVectorData *const*>(d.data);\r
+\r
+    // Try to provoke segfaults early to prevent the frontend\r
+    // from asking for unavailable child details\r
+    int nn = v->size;\r
+    if (nn < 0)\r
+        qCheck(false);\r
+    if (nn > 0) {\r
+        //qCheckAccess(&vec.front());\r
+        //qCheckAccess(&vec.back());\r
+    }\r
+\r
+    unsigned innersize = d.extraInt[0];\r
+    unsigned typeddatasize = d.extraInt[1];\r
+\r
+    int n = nn;\r
+    P(d, "value", "<" << n << " items>");\r
+    P(d, "valuedisabled", "true");\r
+    P(d, "numchild", n);\r
+    if (d.dumpChildren) {\r
+        QByteArray strippedInnerType = stripPointerType(d.innertype);\r
+        const char *stripped =\r
+            isPointerType(d.innertype) ? strippedInnerType.data() : 0;\r
+        if (n > 1000)\r
+            n = 1000;\r
+        d << ",children=[";\r
+        for (int i = 0; i != n; ++i) {\r
+            d.beginHash();\r
+            P(d, "name", i);\r
+            qDumpInnerValueOrPointer(d, d.innertype, stripped,\r
+                addOffset(v, i * innersize + typeddatasize));\r
+            d.endHash();\r
+        }\r
+        if (n < nn)\r
+            d.putEllipsis();\r
+        d << "]";\r
+    }\r
+    d.disarm();\r
+}\r
+\r
+static void qDumpStdList(QDumper &d)\r
+{\r
+    const std::list<int> &list = *reinterpret_cast<const std::list<int> *>(d.data);\r
+    const void *p = d.data;\r
+    qCheckAccess(p);\r
+    p = deref(p);\r
+    qCheckAccess(p);\r
+    p = deref(p);\r
+    qCheckAccess(p);\r
+    p = deref(addOffset(d.data, sizeof(void*)));\r
+    qCheckAccess(p);\r
+    p = deref(addOffset(p, sizeof(void*)));\r
+    qCheckAccess(p);\r
+    p = deref(addOffset(p, sizeof(void*)));\r
+    qCheckAccess(p);\r
+\r
+    int nn = 0;\r
+    std::list<int>::const_iterator it = list.begin();\r
+    for (; nn < 101 && it != list.end(); ++nn, ++it)\r
+        qCheckAccess(it.operator->());\r
+\r
+    if (nn > 100)\r
+        P(d, "value", "<more than 100 items>");\r
+    else\r
+        P(d, "value", "<" << nn << " items>");\r
+    P(d, "numchild", nn);\r
+\r
+    P(d, "valuedisabled", "true");\r
+    if (d.dumpChildren) {\r
+        QByteArray strippedInnerType = stripPointerType(d.innertype);\r
+        const char *stripped =\r
+            isPointerType(d.innertype) ? strippedInnerType.data() : 0;\r
+        d << ",children=[";\r
+        it = list.begin();\r
+        for (int i = 0; i < 1000 && it != list.end(); ++i, ++it) {\r
+            d.beginHash();\r
+            P(d, "name", i);\r
+            qDumpInnerValueOrPointer(d, d.innertype, stripped, it.operator->());\r
+            d.endHash();\r
+        }\r
+        if (it != list.end())\r
+            d.putEllipsis();\r
+        d << "]";\r
+    }\r
+    d.disarm();\r
+}\r
+\r
+static void qDumpStdMap(QDumper &d)\r
+{\r
+    typedef std::map<int, int> DummyType;\r
+    const DummyType &map = *reinterpret_cast<const DummyType*>(d.data);\r
+    const char *keyType   = d.templateParameters[0];\r
+    const char *valueType = d.templateParameters[1];\r
+    const void *p = d.data;\r
+    qCheckAccess(p);\r
+    p = deref(p);\r
+\r
+    int nn = map.size();\r
+    qCheck(nn >= 0);\r
+    DummyType::const_iterator it = map.begin();\r
+    for (int i = 0; i < nn && i < 10 && it != map.end(); ++i, ++it)\r
+        qCheckAccess(it.operator->());\r
+\r
+    QByteArray strippedInnerType = stripPointerType(d.innertype);\r
+    P(d, "numchild", nn);\r
+    P(d, "value", "<" << nn << " items>");\r
+    P(d, "valuedisabled", "true");\r
+    P(d, "valueoffset", d.extraInt[2]);\r
+\r
+    // HACK: we need a properly const qualified version of the\r
+    // std::pair used. We extract it from the allocator parameter\r
+    // (#4, "std::allocator<std::pair<key, value> >")\r
+    // as it is there, and, equally importantly, in an order that\r
+    // gdb accepts when fed with it.\r
+    char *pairType = (char *)(d.templateParameters[3]) + 15;\r
+    pairType[strlen(pairType) - 2] = 0;\r
+    P(d, "pairtype", pairType);\r
+    \r
+    if (d.dumpChildren) {\r
+        bool isSimpleKey = isSimpleType(keyType);\r
+        bool isSimpleValue = isSimpleType(valueType);\r
+        int valueOffset = d.extraInt[2];\r
+\r
+        P(d, "extra", "isSimpleKey: " << isSimpleKey\r
+            << " isSimpleValue: " << isSimpleValue\r
+            << " valueType: '" << valueType\r
+            << " valueOffset: " << valueOffset);\r
+\r
+        d << ",children=[";\r
+        it = map.begin();\r
+        for (int i = 0; i < 1000 && it != map.end(); ++i, ++it) {\r
+            d.beginHash();\r
+                const void *node = it.operator->();\r
+                P(d, "name", i);\r
+                qDumpInnerValueHelper(d, keyType, node, "key");\r
+                qDumpInnerValueHelper(d, valueType, addOffset(node, valueOffset));\r
+                if (isSimpleKey && isSimpleValue) {\r
+                    P(d, "type", valueType);\r
+                    P(d, "addr", addOffset(node, valueOffset));\r
+                    P(d, "numchild", 0);\r
+                } else {\r
+                    P(d, "addr", node);\r
+                    P(d, "type", pairType);\r
+                    P(d, "numchild", 2);\r
+                }\r
+            d.endHash();\r
+        }\r
+        if (it != map.end())\r
+            d.putEllipsis();\r
+        d << "]";\r
+    }\r
+    d.disarm();\r
+}\r
+\r
+static void qDumpStdString(QDumper &d)\r
+{\r
+    const std::string &str = *reinterpret_cast<const std::string *>(d.data);\r
+\r
+    if (!str.empty()) {\r
+        qCheckAccess(str.c_str());\r
+        qCheckAccess(str.c_str() + str.size() - 1);\r
+    }\r
+\r
+    d << ",value=\"";\r
+    d.putBase64Encoded(str.c_str(), str.size());\r
+    d << "\"";\r
+    P(d, "valueencoded", "1");\r
+    P(d, "type", "std::string");\r
+    P(d, "numchild", "0");\r
+\r
+    d.disarm();\r
+}\r
+\r
+static void qDumpStdWString(QDumper &d)\r
+{\r
+    const std::wstring &str = *reinterpret_cast<const std::wstring *>(d.data);\r
+\r
+    if (!str.empty()) {\r
+        qCheckAccess(str.c_str());\r
+        qCheckAccess(str.c_str() + str.size() - 1);\r
+    }\r
+\r
+    d << "value='";\r
+    d.putBase64Encoded((const char *)str.c_str(), str.size() * sizeof(wchar_t));\r
+    d << "'";\r
+    P(d, "valueencoded", (sizeof(wchar_t) == 2 ? "2" : "3"));\r
+    P(d, "type", "std::wstring");\r
+    P(d, "numchild", "0");\r
+\r
+    d.disarm();\r
+}\r
+\r
+static void qDumpStdVector(QDumper &d)\r
+{\r
+    // Correct type would be something like:\r
+    // std::_Vector_base<int,std::allocator<int, std::allocator<int> >>::_Vector_impl\r
+    struct VectorImpl {\r
+        char *start;\r
+        char *finish;\r
+        char *end_of_storage;\r
+    };\r
+    const VectorImpl *v = static_cast<const VectorImpl *>(d.data);\r
+\r
+    // Try to provoke segfaults early to prevent the frontend\r
+    // from asking for unavailable child details\r
+    int nn = (v->finish - v->start) / d.extraInt[0];\r
+    if (nn < 0)\r
+        qCheck(false);\r
+    if (nn > 0) {\r
+        qCheckAccess(v->start);\r
+        qCheckAccess(v->finish);\r
+        qCheckAccess(v->end_of_storage);\r
+    }\r
+\r
+    int n = nn;\r
+    P(d, "value", "<" << n << " items>");\r
+    P(d, "valuedisabled", "true");\r
+    P(d, "numchild", n);\r
+    if (d.dumpChildren) {\r
+        unsigned innersize = d.extraInt[0];\r
+        QByteArray strippedInnerType = stripPointerType(d.innertype);\r
+        const char *stripped =\r
+            isPointerType(d.innertype) ? strippedInnerType.data() : 0;\r
+        if (n > 1000)\r
+            n = 1000;\r
+        d << ",children=[";\r
+        for (int i = 0; i != n; ++i) {\r
+            d.beginHash();\r
+            P(d, "name", i);\r
+            qDumpInnerValueOrPointer(d, d.innertype, stripped,\r
+                addOffset(v->start, i * innersize));\r
+            d.endHash();\r
+        }\r
+        if (n < nn)\r
+            d.putEllipsis();\r
+        d << "]";\r
+    }\r
+    d.disarm();\r
+}\r
+\r
+static void qDumpStdVectorBool(QDumper &d)\r
+{\r
+    // FIXME\r
+    return qDumpStdVector(d);\r
+}\r
+\r
+static void handleProtocolVersion2and3(QDumper & d)\r
+{\r
+    if (!d.outertype[0]) {\r
+        qDumpUnknown(d);\r
+        return;\r
+    }\r
+\r
+    d.setupTemplateParameters();\r
+    P(d, "iname", d.iname);\r
+    P(d, "addr", d.data);\r
+\r
+#ifdef QT_NO_QDATASTREAM\r
+    if (d.protocolVersion == 3) {\r
+        QVariant::Type type = QVariant::nameToType(d.outertype);\r
+        if (type != QVariant::Invalid) {\r
+            QVariant v(type, d.data);\r
+            QByteArray ba;\r
+            QDataStream ds(&ba, QIODevice::WriteOnly);\r
+            ds << v;\r
+            P(d, "editvalue", ba);\r
+        }\r
+    }\r
+#endif\r
+\r
+    const char *type = stripNamespace(d.outertype);\r
+    // type[0] is usally 'Q', so don't use it\r
+    switch (type[1]) {\r
+        case 'B':\r
+            if (isEqual(type, "QByteArray"))\r
+                qDumpQByteArray(d);\r
+            break;\r
+        case 'D':\r
+            if (isEqual(type, "QDateTime"))\r
+                qDumpQDateTime(d);\r
+            else if (isEqual(type, "QDir"))\r
+                qDumpQDir(d);\r
+            break;\r
+        case 'F':\r
+            if (isEqual(type, "QFile"))\r
+                qDumpQFile(d);\r
+            else if (isEqual(type, "QFileInfo"))\r
+                qDumpQFileInfo(d);\r
+            break;\r
+        case 'H':\r
+            if (isEqual(type, "QHash"))\r
+                qDumpQHash(d);\r
+            else if (isEqual(type, "QHashNode"))\r
+                qDumpQHashNode(d);\r
+            break;\r
+        case 'I':\r
+            if (isEqual(type, "QImage"))\r
+                qDumpQImage(d);\r
+            break;\r
+        case 'L':\r
+            if (isEqual(type, "QList"))\r
+                qDumpQList(d);\r
+            else if (isEqual(type, "QLinkedList"))\r
+                qDumpQLinkedList(d);\r
+            else if (isEqual(type, "QLocale"))\r
+                qDumpQLocale(d);\r
+            break;\r
+        case 'M':\r
+            if (isEqual(type, "QMap"))\r
+                qDumpQMap(d);\r
+            else if (isEqual(type, "QMapNode"))\r
+                qDumpQMapNode(d);\r
+            else if (isEqual(type, "QModelIndex"))\r
+                qDumpQModelIndex(d);\r
+            else if (isEqual(type, "QMultiMap"))\r
+                qDumpQMultiMap(d);\r
+            break;\r
+        case 'O':\r
+            if (isEqual(type, "QObject"))\r
+                qDumpQObject(d);\r
+            else if (isEqual(type, "QObjectPropertyList"))\r
+                qDumpQObjectPropertyList(d);\r
+            else if (isEqual(type, "QObjectMethodList"))\r
+                qDumpQObjectMethodList(d);\r
+            #if PRIVATE_OBJECT_ALLOWED\r
+            else if (isEqual(type, "QObjectSignal"))\r
+                qDumpQObjectSignal(d);\r
+            else if (isEqual(type, "QObjectSignalList"))\r
+                qDumpQObjectSignalList(d);\r
+            else if (isEqual(type, "QObjectSlot"))\r
+                qDumpQObjectSlot(d);\r
+            else if (isEqual(type, "QObjectSlotList"))\r
+                qDumpQObjectSlotList(d);\r
+            #endif\r
+            break;\r
+        case 'P':\r
+            if (isEqual(type, "QPixmap"))\r
+                qDumpQPixmap(d);\r
+            break;\r
+        case 'S':\r
+            if (isEqual(type, "QSet"))\r
+                qDumpQSet(d);\r
+            else if (isEqual(type, "QString"))\r
+                qDumpQString(d);\r
+            else if (isEqual(type, "QStringList"))\r
+                qDumpQStringList(d);\r
+            break;\r
+        case 'T':\r
+            if (isEqual(type, "QTextCodec"))\r
+                qDumpQTextCodec(d);\r
+            break;\r
+        case 'V':\r
+            if (isEqual(type, "QVariant"))\r
+                qDumpQVariant(d);\r
+            else if (isEqual(type, "QVector"))\r
+                qDumpQVector(d);\r
+            break;\r
+        case 's':\r
+            if (isEqual(type, "wstring"))\r
+                qDumpStdWString(d);\r
+            break;\r
+        case 't':\r
+            if (isEqual(type, "std::vector"))\r
+                qDumpStdVector(d);\r
+            else if (isEqual(type, "std::vector::bool"))\r
+                qDumpStdVectorBool(d);\r
+            else if (isEqual(type, "std::list"))\r
+                qDumpStdList(d);\r
+            else if (isEqual(type, "std::map"))\r
+                qDumpStdMap(d);\r
+            else if (isEqual(type, "std::string") || isEqual(type, "string"))\r
+                qDumpStdString(d);\r
+            else if (isEqual(type, "std::wstring"))\r
+                qDumpStdWString(d);\r
+            break;\r
+    }\r
+\r
+    if (!d.success)\r
+        qDumpUnknown(d);\r
+}\r
+\r
+} // anonymous namespace\r
+\r
+\r
+extern "C" Q_DECL_EXPORT\r
+void qDumpObjectData440(\r
+    int protocolVersion,\r
+    int token,\r
+    void *data,\r
+    bool dumpChildren,\r
+    int extraInt0,\r
+    int extraInt1,\r
+    int extraInt2,\r
+    int extraInt3)\r
+{\r
+    //sleep(20);\r
+    if (protocolVersion == 1) {\r
+        QDumper d;\r
+        d.protocolVersion = protocolVersion;\r
+        d.token           = token;\r
+\r
+        // This is a list of all available dumpers. Note that some templates\r
+        // currently require special hardcoded handling in the debugger plugin.\r
+        // They are mentioned here nevertheless. For types that not listed\r
+        // here, dumpers won't be used.\r
+        d << "dumpers=["\r
+            "\""NS"QByteArray\","\r
+            "\""NS"QDateTime\","\r
+            "\""NS"QDir\","\r
+            "\""NS"QFile\","\r
+            "\""NS"QFileInfo\","\r
+            "\""NS"QHash\","\r
+            "\""NS"QHashNode\","\r
+            "\""NS"QImage\","\r
+            "\""NS"QLinkedList\","\r
+            "\""NS"QList\","\r
+            "\""NS"QLocale\","\r
+            "\""NS"QMap\","\r
+            "\""NS"QMapNode\","\r
+            "\""NS"QModelIndex\","\r
+            #if QT_VERSION >= 0x040500\r
+            "\""NS"QMultiMap\","\r
+            #endif\r
+            "\""NS"QObject\","\r
+            "\""NS"QObjectMethodList\","   // hack to get nested properties display\r
+            "\""NS"QObjectPropertyList\","\r
+            #if PRIVATE_OBJECT_ALLOWED\r
+            "\""NS"QObjectSignal\","\r
+            "\""NS"QObjectSignalList\","\r
+            "\""NS"QObjectSlot\","\r
+            "\""NS"QObjectSlotList\","\r
+            #endif // PRIVATE_OBJECT_ALLOWED\r
+            // << "\""NS"QRegion\","\r
+            "\""NS"QSet\","\r
+            "\""NS"QString\","\r
+            "\""NS"QStringList\","\r
+            "\""NS"QTextCodec\","\r
+            "\""NS"QVariant\","\r
+            "\""NS"QVector\","\r
+            "\""NS"QWidget\","\r
+            "\"string\","\r
+            "\"wstring\","\r
+            "\"std::basic_string\","\r
+            "\"std::list\","\r
+            "\"std::map\","\r
+            "\"std::string\","\r
+            "\"std::vector\","\r
+            "\"std::wstring\","\r
+            "]";\r
+        d << ",qtversion=["\r
+            "\"" << ((QT_VERSION >> 16) & 255) << "\","\r
+            "\"" << ((QT_VERSION >> 8)  & 255) << "\","\r
+            "\"" << ((QT_VERSION)       & 255) << "\"]";\r
+        d << ",namespace=\""NS"\"";\r
+        d.disarm();\r
+    }\r
+\r
+    else if (protocolVersion == 2 || protocolVersion == 3) {\r
+        QDumper d;\r
+\r
+        d.protocolVersion = protocolVersion;\r
+        d.token           = token;\r
+        d.data            = data;\r
+        d.dumpChildren    = dumpChildren;\r
+        d.extraInt[0]     = extraInt0;\r
+        d.extraInt[1]     = extraInt1;\r
+        d.extraInt[2]     = extraInt2;\r
+        d.extraInt[3]     = extraInt3;\r
+\r
+        const char *inbuffer = qDumpInBuffer;\r
+        d.outertype = inbuffer; while (*inbuffer) ++inbuffer; ++inbuffer;\r
+        d.iname     = inbuffer; while (*inbuffer) ++inbuffer; ++inbuffer;\r
+        d.exp       = inbuffer; while (*inbuffer) ++inbuffer; ++inbuffer;\r
+        d.innertype = inbuffer; while (*inbuffer) ++inbuffer; ++inbuffer;\r
+        d.iname     = inbuffer; while (*inbuffer) ++inbuffer; ++inbuffer;\r
+\r
+        handleProtocolVersion2and3(d);\r
+    }\r
+\r
+    else {\r
+        qDebug() << "Unsupported protocol version" << protocolVersion;\r
+    }\r
+}\r
diff --git a/qtc-gdbmacros/gdbmacros.pro b/qtc-gdbmacros/gdbmacros.pro
new file mode 100644 (file)
index 0000000..ac0037d
--- /dev/null
@@ -0,0 +1,3 @@
+TEMPLATE = lib\r
+CONFIG += shared\r
+SOURCES=gdbmacros.cpp\r
diff --git a/scripts/exportvym b/scripts/exportvym
new file mode 100644 (file)
index 0000000..2fea758
--- /dev/null
@@ -0,0 +1,70 @@
+#!/usr/bin/perl
+#
+# Script to convert vym files to arbitrary formats
+# Using xml stylesheets
+#
+# written by Uwe Drechsel      <vym@insilmaril.de>
+#
+
+my $version="0.1";
+my $PARSER="xsltproc";
+my $OUTDIR="";
+my $INPUTDIR="";
+my $XSL="vym2html.xsl";
+
+
+use Getopt::Long;
+GetOptions (
+    "o=s" => \$opt_outdir,
+       "x=s"=> \$opt_xst,
+    "h!" => \$opt_usage ) || usage ();
+
+
+
+if ($opt_usage) {
+    $0 =~ s#.*/##g;
+    print <<Helpende;
+    
+exportvym      written by Uwe Drechsel - Version $version
+
+usage: $0 [-h] VYMFILE
+
+...TODO...
+
+Helpende
+}
+
+
+if ($opt_xst) { $XST=$opt_XST; }
+if ($opt_outdir) { $OUTDIR="$opt_outdir/"; }
+if ($#ARGV <0) 
+{
+       die "not enough parameters given";
+} else
+{
+       # get MAPNAME
+       $MAPNAME=pop(@ARGV);
+       if ($MAPNAME=~/\//) 
+       {
+               # Get inputdir from path
+               $MAPNAME=~/(.*\/)(.*)/;
+               $INPUTDIR=$1;   
+               $MAPNAME=$2;    
+       }
+       if ($MAPNAME=~/(.*)(\.xml)/) { $MAPNAME=$1;}
+}
+
+transform();
+
+exit;
+
+########################################################
+sub transform {
+########################################################
+       my $command="$PARSER -o $OUTDIR$MAPNAME.html $XSL $INPUTDIR$MAPNAME.xml"; 
+       print "$command\n";
+       system ($command);
+}
+       
+
+
diff --git a/scripts/niceXML b/scripts/niceXML
new file mode 100644 (file)
index 0000000..5c0505c
--- /dev/null
@@ -0,0 +1,64 @@
+#!/usr/bin/perl 
+#
+# Hack to make single-line XML file  easier to read by using indention
+#
+# (c) Uwe Drechsel
+#
+# License: GPL 
+
+my $filename =shift;
+my $s;
+open (INFILE, "<$filename") ||
+       die "Could not read $filename.";
+$s=join("\n",<INFILE>);
+
+$s=~s/>/>\n/gm;
+
+my @lines=split ("\n",$s);
+my $i=0;
+my $is="";
+
+foreach (@lines)
+{
+       if (!/<.*?\/>/)
+       {
+               if (/<\//)
+               {
+                       # Closing tag
+                       $i--;
+                       if ($i<0) {$i=0};
+                       $is=indent($i);
+                       print "$is$_\n";
+               } else
+               {
+                       if (/<(?!\?)/)  # ignore <? ... ?>
+                       {
+                               # Opening tag
+                               print "$is$_\n";
+                               $i++;
+                               $is=indent($i);
+                       } else 
+                       { 
+                               # empty lines etc
+                               print "$is$_\n"; 
+                       }
+               }
+       } else 
+       { 
+               # Ignor single tags <../>
+               print "$is$_\n"; 
+       }
+}
+print "\n";
+exit;
+
+sub indent()
+{
+       my $size=shift;
+       my $s="";
+       for ($i=0; $i<$size; $i++)
+       {
+               $s=$s."  ";
+       }
+       return $s;
+}
diff --git a/scripts/release-mac b/scripts/release-mac
new file mode 100644 (file)
index 0000000..be88bdc
--- /dev/null
@@ -0,0 +1,105 @@
+#!/bin/bash
+#
+# Link application bundle to QT as framework
+#
+# written by Uwe Drechsel (c) 2006
+#
+# License GPL 2
+#
+
+APPNAME=vym
+BUNDLE=$APPNAME.app
+FWORKS=$BUNDLE/Contents/Frameworks
+QTDIR=/usr/local/Trolltech/Qt-4.2.0
+QTLIB=$QTDIR/lib
+
+declare -a FWLIST
+
+function cleanup
+{
+       echo ***Cleaning up...
+       rm -rf $BUNDLE
+       make clean
+}
+
+function compile
+{
+       echo ***Compiling...
+       qmake -config release
+       make
+}
+
+function fixLinking 
+{
+       echo  ***Setting identification names...
+       for i in ${FWLIST[@]}
+       do
+               COM="install_name_tool -id @executable_path/../Frameworks/$i.framework/Versions/4/$i $BUNDLE/Contents/Frameworks/$i.framework/Versions/4/$i"
+       done    
+               echo "   $COM"
+               `$COM`
+
+       echo ***Tell dynamic linker where to look for frameworks... 
+       for i in ${FWLIST[@]}
+       do
+               COM="install_name_tool -change $QTLIB/$i.framework/Versions/4/$i @executable_path/../Frameworks/$i.framework/Versions/4/$i $BUNDLE/Contents/MacOs/$APPNAME"
+               echo "   $COM"
+               `$COM`
+       done    
+
+
+       for fw in ${FWLIST[@]}
+       do
+       echo ***Adjust dynamic linking in $fw
+               for i in ` otool -L vym.app/Contents/Frameworks/$fw.framework/$fw | grep Trolltech | sed "s/^.*\///" | sed "s/ .*$//"` 
+               do
+                       COM="install_name_tool -change $QTLIB/$i.framework/Versions/4/$i @executable_path/../Frameworks/$i.framework/Versions/4/$i $FWORKS/$fw.framework/$fw"
+                       echo "   $COM"
+                       `$COM`
+               done    
+       done
+
+}
+
+function copyFrameworks
+{
+       # Copy found frameworks into bundle, preserve symbolic links with -R
+       mkdir -p  $FWORKS
+       for i in ${FWLIST[@]}
+       do
+               echo ***Copying $QTLIB/$i.framework
+               #cp -R $QTLIB/$i.framework $FWORKS
+               rsync -avz $QTLIB/$i.framework $FWORKS --exclude 'Qt*_debug'
+       done    
+}
+
+function copyRessources
+{
+       echo ***Copying ressources
+       mkdir -p $BUNDLE/Contents/Resources
+       cp -r icons flags scripts styles vym.app/Contents/Resources/
+       cp icons/vym.icns $BUNDLE/Contents/Resources
+}
+
+function findFrameworks
+{
+       FWLIST=`otool -L $BUNDLE/Contents/MacOS/$APPNAME  | grep Trolltech | sed "s/^.*\///" | sed "s/ .*$//"`
+       #FWLIST=( Qt3Support QtSql QtNetwork QtXml QtGui QtCore )
+
+       echo ***The following Qt frameworks are needed:
+       for i in ${FWLIST[@]}
+       do
+               echo $i
+       done    
+}      
+
+
+#cleanup
+#compile
+
+
+#findFrameworks
+#copyFrameworks
+#fixLinking
+copyRessources
+
diff --git a/scripts/update-bookmarks b/scripts/update-bookmarks
new file mode 100644 (file)
index 0000000..87b29fd
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+# Look for running konquerors and notify them of changed bookmarks file
+dcop | grep konqueror- |  xargs -iKONQUI dcop KONQUI KBookmarkManager-$HOME/.kde/share/apps/konqueror/bookmarks.xml notifyCompleteChange "dcop"
diff --git a/selection.cpp b/selection.cpp
new file mode 100644 (file)
index 0000000..f854016
--- /dev/null
@@ -0,0 +1,194 @@
+#include <typeinfo>
+
+#include "selection.h"
+
+#include "mainwindow.h"
+#include "mapeditor.h"
+#include "vymmodel.h"
+
+
+
+extern Main *mainWindow;
+
+Selection::Selection()
+{
+       color= QColor(255,255,0);
+}
+
+Selection::~Selection()
+{
+}
+
+void Selection::setModel (VymModel *m)
+{
+       model=m;
+       scene=model->getScene();
+}
+
+void Selection::copy(const Selection &other)
+{
+       selectList=other.selectList;
+       lastSelectList=other.lastSelectList;
+}
+
+void Selection::clear()
+{
+       unselect();
+       lastSelectList.clear();
+}
+
+void Selection::update()
+{
+       QRectF bbox;
+       int w=0;
+       for (int i=0; i< selectList.count(); ++i) 
+       {
+               bbox=selectList.at(i)->getBBox();
+               selboxList.at(i)->setRect (
+                       bbox.x()-w,bbox.y()-w, 
+                       bbox.width()+2*w, bbox.height()+2*w);
+               selboxList.at(i)->setPen (color);       
+               selboxList.at(i)->setBrush (color);     
+       }       
+}
+
+void Selection::setColor (QColor col)
+{
+       color=col;
+       update();
+}
+
+QColor Selection::getColor ()
+{
+       return color;
+}
+
+bool Selection::select(LinkableMapObj *lmo)    // TODO no multiselections yet
+{
+       if (!selectList.isEmpty()) unselect();
+       selectList.append (lmo);
+       QGraphicsRectItem *sb = scene->addRect(
+               QRectF(0,0,0,0), 
+               QPen(color),
+               color);
+       sb->setZValue(Z_SELBOX);
+       sb->show();
+       selboxList.append (sb);
+       lmo->select();
+       update();
+       mainWindow->updateSatellites (model->getMapEditor() );  
+       return true;
+}
+
+bool Selection::select (const QString &s)      // TODO no multiselections yet
+{
+       LinkableMapObj *lmo=model->findObjBySelect(s);
+
+       // Finally select the found object
+       if (lmo)
+       {
+               unselect();
+               select (lmo);
+               return true;
+       } 
+       return false;
+
+}
+
+bool Selection::reselect ()    // TODO no multiselections yet
+{
+       if (!lastSelectList.isEmpty())
+       {
+               select (lastSelectList.first());
+               return true;
+       }
+       return false;
+
+}
+
+void Selection::unselect()
+{
+       if (!selectList.isEmpty() )
+       {
+               for (int i=0; i< selectList.count(); ++i) 
+                       selectList.at(i)->unselect();
+               lastSelectList=selectList;
+               selectList.clear();
+               while (!selboxList.isEmpty() )
+                       delete selboxList.takeFirst();
+
+       }       
+}
+
+bool Selection::isEmpty()
+{
+       return selectList.isEmpty();
+}
+
+uint Selection::count()
+{
+       return selectList.count();
+}
+
+Selection::Type Selection::type() // TODO no multiselections yet
+{
+       if (!selectList.isEmpty())
+       {
+               LinkableMapObj *sel=selectList.first();
+               if (typeid (*sel)==typeid (BranchObj)) return Branch;
+               if (typeid (*sel)==typeid (MapCenterObj)) return MapCenter;
+               if (typeid (*sel)==typeid (FloatImageObj)) return FloatImage;
+       }
+       return Undefined;
+}
+
+LinkableMapObj* Selection::first()
+{
+       if (!selectList.isEmpty())
+               return selectList.first();
+       else    
+               return NULL;
+}
+
+LinkableMapObj* Selection::single()
+{
+       if (selectList.count() == 1)
+               return selectList.first();
+       else    
+               return NULL;
+}
+
+BranchObj* Selection::getBranch()
+{
+       if (!selectList.isEmpty())
+       {
+               LinkableMapObj *sel=selectList.first();
+               if (typeid (*sel)==typeid (BranchObj) ||
+                   typeid (*sel)==typeid (MapCenterObj)) 
+                       return (BranchObj*)sel;
+       }
+               return NULL;
+}
+
+FloatImageObj* Selection::getFloatImage()
+{
+       if (!selectList.isEmpty())
+       {
+               LinkableMapObj *sel=selectList.first();
+               if (typeid (*sel)==typeid (FloatImageObj)) 
+                       return (FloatImageObj*)sel;
+       }
+               return NULL;
+}
+
+QString Selection::getSelectString()// TODO no multiselections yet
+{
+       if (selectList.count()==1)
+       {
+               return model->getSelectString (selectList.first() );
+       }
+       else
+               return"";
+}
+
+
diff --git a/selection.h b/selection.h
new file mode 100644 (file)
index 0000000..19ffa36
--- /dev/null
@@ -0,0 +1,53 @@
+#ifndef SELECTION_H
+#define SELECTION_H
+
+#include <QString>
+#include <QList>
+#include <QGraphicsScene>
+
+
+class BranchObj;
+class FloatImageObj;
+class MapCenterObj;
+class LinkableMapObj;
+class VymModel;
+
+
+class Selection 
+{
+public:
+       enum Type {Undefined,Branch,MapCenter,FloatImage};
+       Selection ();
+       ~Selection();
+       void copy(const Selection&);
+       void clear();
+       void setModel (VymModel *);
+       void update();
+       void setColor (QColor c);
+       QColor getColor ();
+       bool select (LinkableMapObj*);
+       bool select (const QString &);
+       bool reselect ();
+       void unselect ();
+       bool isEmpty();
+       uint count();
+       Type type();
+       LinkableMapObj * first();               // first in selection list
+       LinkableMapObj * single();              // NULL, if multiple selected
+       BranchObj* getBranch();
+       FloatImageObj* getFloatImage();
+
+       QString getSelectString();
+
+private:
+       void init();
+       QList <LinkableMapObj*> selectList;
+       QList <LinkableMapObj*> lastSelectList;
+       QList <QGraphicsRectItem*> selboxList;
+       VymModel *model;
+       QGraphicsScene *scene;
+
+       QColor color;
+};
+#endif
+
diff --git a/settings.cpp b/settings.cpp
new file mode 100644 (file)
index 0000000..dbb4894
--- /dev/null
@@ -0,0 +1,270 @@
+#include <iostream>
+#include <qregexp.h>
+#include "settings.h"
+#include "file.h"
+
+using namespace std;
+
+/////////////////////////////////////////////////////////////////
+// SimpleSettings
+/////////////////////////////////////////////////////////////////
+SimpleSettings::SimpleSettings()
+{
+       clear();                 
+}
+
+SimpleSettings::~SimpleSettings()
+{
+}
+
+void SimpleSettings::clear()
+{
+       keylist.clear();
+       valuelist.clear();
+}
+
+void SimpleSettings::readSettings (const QString &path)
+{
+       QString s;
+       if (!loadStringFromDisk(path,s)) 
+       {
+               qWarning ("SimpleSettings::readSettings() Couldn't read "+path);
+               return;
+       }       
+       QStringList lines;
+       lines=QStringList::split (QRegExp("\n"),s,false);
+       int i;
+       QStringList::Iterator it=lines.begin();
+       while (it !=lines.end() )
+       {
+               i=(*it).find("=",0);
+               keylist.append((*it).left(i));
+               valuelist.append((*it).right((*it).length()-i-1));
+               it++;
+       }
+}
+
+void SimpleSettings::writeSettings (const QString &path)
+{
+       QString s;
+       QStringList::Iterator itk=keylist.begin();
+       QStringList::Iterator itv=valuelist.begin();
+
+       // First search for value in settings saved in map
+       while (itk !=keylist.end() )
+       {
+               s+=*itk+"="+*itv+"\n";
+               itk++;
+               itv++;
+       }
+       if (!saveStringToDisk(path,s)) 
+               qWarning ("SimpleSettings::writeSettings() Couldn't write "+path);
+}
+
+/*
+QString SimpleSettings::readEntry (const QString &key)
+{
+       QStringList::Iterator itk=keylist.begin();
+       QStringList::Iterator itv=valuelist.begin();
+
+       // First search for value in settings saved in map
+       while (itk !=keylist.end() )
+       {
+               if (*itk == key)
+                       return *itv;
+               itk++;
+               itv++;
+       }
+       qWarning ("SimpleSettings::readEntry()  Couldn't find key "+key);
+       return "";
+}
+*/
+
+QString SimpleSettings::readEntry (const QString &key, const QString &def)
+{
+       QStringList::Iterator itk=keylist.begin();
+       QStringList::Iterator itv=valuelist.begin();
+
+       // First search for value in settings saved in map
+       while (itk !=keylist.end() )
+       {
+               if (*itk == key)
+                       return *itv;
+               itk++;
+               itv++;
+       }
+       return def;
+}
+
+int SimpleSettings::readNumEntry (const QString &key, const int &def)
+{
+       QStringList::Iterator itk=keylist.begin();
+       QStringList::Iterator itv=valuelist.begin();
+
+       // First search for value in settings saved in map
+       while (itk !=keylist.end() )
+       {
+               if (*itk == key)
+               {
+                       bool ok;
+                       int i=(*itv).toInt(&ok,10);
+                       if (ok)
+                               return i;
+                       else
+                               return def;
+               }       
+               itk++;
+               itv++;
+       }
+       return def;
+}
+
+void SimpleSettings::setEntry (const QString &key, const QString &value)
+{
+       QStringList::Iterator itk=keylist.begin();
+       QStringList::Iterator itv=valuelist.begin();
+
+       if (!key.isEmpty() )
+       {
+               // Search for existing entry first
+               while (itk !=keylist.end() )
+               {
+                       if (*itk == key)
+                       {
+                               if (!value.isEmpty())
+                                       *itv=value;
+                               else
+                                       *itv="";
+                               *itv=value;
+                               return;
+                       }
+                       itk++;
+                       itv++;
+               }
+               
+               // If no entry exists, append a new one
+               keylist.append (key);
+               valuelist.append (value);
+       }
+}
+
+
+
+/////////////////////////////////////////////////////////////////
+// Settings
+/////////////////////////////////////////////////////////////////
+Settings::Settings()
+{
+       clear();                 
+}
+
+Settings::Settings(const QString & organization, const QString & application ):QSettings (organization,application)
+{
+       clear();                 
+}
+
+Settings::~Settings()
+{
+}
+
+void Settings::clear()
+{
+       pathlist.clear();
+       keylist.clear();
+       valuelist.clear();
+}
+
+void Settings::clearLocal(const QString &s)
+{
+       QStringList::Iterator itp=pathlist.begin();
+       QStringList::Iterator itk=keylist.begin();
+       QStringList::Iterator itv=valuelist.begin();
+
+       while (itp !=pathlist.end() )
+       {
+               if ((*itk).startsWith (s))
+               {
+                       itp=pathlist.remove (itp);
+                       itk=keylist.remove (itk);
+                       itv=valuelist.remove (itv);
+               }       else
+               {
+                       itp++;
+                       itk++;
+                       itv++;
+               }
+       }
+}
+
+QString Settings::readLocalEntry ( const QString &fpath, const QString & key, const QString & def = QString::null ) 
+{
+       QStringList::Iterator itp=pathlist.begin();
+       QStringList::Iterator itk=keylist.begin();
+       QStringList::Iterator itv=valuelist.begin();
+
+       // First search for value in settings saved in map
+       while (itp !=pathlist.end() )
+       {
+               if (*itp == fpath && *itk == key)
+                       return *itv;
+               itp++;
+               itk++;
+               itv++;
+       }
+
+       // Fall back to global vym settings
+       bool ok;
+       return readEntry (key,def, &ok);
+}      
+
+void Settings::setLocalEntry (const QString &fpath, const QString &key, const QString &value)
+{
+       QStringList::Iterator itp=pathlist.begin();
+       QStringList::Iterator itk=keylist.begin();
+       QStringList::Iterator itv=valuelist.begin();
+
+       if (!fpath.isEmpty() && !key.isEmpty() && !value.isEmpty() )
+       {
+               // Search for existing entry first
+               while (itp !=pathlist.end() )
+               {
+                       if (*itp == fpath && *itk == key)
+                       {
+                               *itv=value;
+                               return;
+                       }
+                       itp++;
+                       itk++;
+                       itv++;
+               }
+               
+               // If no entry exists, append a new one
+               pathlist.append (fpath);
+               keylist.append (key);
+               valuelist.append (value);
+       }
+}
+
+QString Settings::getDataXML (const QString &fpath)
+{
+       QString s;
+       QStringList::Iterator itp=pathlist.begin();
+       QStringList::Iterator itk=keylist.begin();
+       QStringList::Iterator itv=valuelist.begin();
+
+       while (itp !=pathlist.end() )
+       {
+               if (*itp == fpath )
+                       if (!(*itv).isEmpty())
+                               s+=singleElement (
+                                       "setting",
+                                       attribut ("key",*itk) 
+                                       +attribut ("value",*itv)
+                               )+"\n";
+               itp++;
+               itk++;
+               itv++;
+       }
+       return s;
+}
+
diff --git a/settings.h b/settings.h
new file mode 100644 (file)
index 0000000..3cd4838
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef SETTINGS_H
+#define SETTINGS_H
+
+#include <qsettings.h>
+#include <qstring.h>
+#include <qstringlist.h>
+
+#include "xmlobj.h"
+
+// Some helper functions and simplified settings class
+// to read and parse settings e.g.  in undo/redo directories
+
+class SimpleSettings
+{
+public:
+    SimpleSettings ();
+       ~SimpleSettings ();
+       void clear();
+       void readSettings(const QString &);
+       void writeSettings(const QString &);
+       QString readEntry (const QString &key, const QString &def=QString());
+       int readNumEntry (const QString &, const int &def=0);
+       void setEntry (const QString &,const QString &);
+private:       
+       QStringList keylist;
+       QStringList valuelist;
+};
+
+
+// Overloaded QSettings class, used to save some settings in 
+// a map instead of users home directory
+class Settings:public QSettings,public XMLObj
+{
+public:
+    Settings ();
+    Settings (const QString & , const QString &);
+       ~Settings ();
+       void clear();
+       void clearLocal (const QString &);
+       QString readLocalEntry ( const QString &, const QString &, const QString &);
+       void setLocalEntry (const QString &, const QString &, const QString &);
+       QString getDataXML (const QString &);
+
+protected:
+       QStringList pathlist;
+       QStringList keylist;
+       QStringList valuelist;
+};
+
+#endif
diff --git a/showtextdialog.cpp b/showtextdialog.cpp
new file mode 100644 (file)
index 0000000..c369117
--- /dev/null
@@ -0,0 +1,19 @@
+#include "showtextdialog.h"
+
+
+ShowTextDialog::ShowTextDialog (QWidget *parent):QDialog (parent)
+{
+       ui.setupUi (this);
+}
+
+void ShowTextDialog::append  (const QString &s)
+{
+       ui.textEdit->append (s);
+}
+
+void ShowTextDialog::setText (const QString &s)
+{
+       ui.textEdit->setText (s);
+}
+
+
diff --git a/showtextdialog.h b/showtextdialog.h
new file mode 100644 (file)
index 0000000..c0bf39f
--- /dev/null
@@ -0,0 +1,19 @@
+#ifndef SHOWTEXTDIALOG_H
+#define SHOWTEXTDIALOG_H
+
+#include "ui_showtextdialog.h"
+
+class ShowTextDialog:public QDialog
+{
+       Q_OBJECT
+public:
+       ShowTextDialog (QWidget *parent=0);
+       void append     (const QString &);
+       void setText    (const QString &);
+       
+private:
+       Ui::ShowTextDialog ui;
+};
+
+#endif // SHOWTEXTDIALOG_H
+
diff --git a/showtextdialog.ui b/showtextdialog.ui
new file mode 100644 (file)
index 0000000..a70a92f
--- /dev/null
@@ -0,0 +1,80 @@
+<ui version="4.0" >
+ <author></author>
+ <comment></comment>
+ <exportmacro></exportmacro>
+ <class>ShowTextDialog</class>
+ <widget class="QDialog" name="ShowTextDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>689</width>
+    <height>370</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Dialog</string>
+  </property>
+  <layout class="QGridLayout" >
+   <property name="margin" >
+    <number>9</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item row="0" column="0" >
+    <widget class="QTextEdit" name="textEdit" />
+   </item>
+   <item row="1" column="0" >
+    <layout class="QHBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>131</width>
+         <height>31</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="okButton" >
+       <property name="text" >
+        <string>Close</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <pixmapfunction></pixmapfunction>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>okButton</sender>
+   <signal>clicked()</signal>
+   <receiver>ShowTextDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>278</x>
+     <y>253</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>96</x>
+     <y>254</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/simplescripteditor.cpp b/simplescripteditor.cpp
new file mode 100644 (file)
index 0000000..62e4862
--- /dev/null
@@ -0,0 +1,130 @@
+#include "simplescripteditor.h"
+
+
+#include <QFileDialog>
+#include <QMessageBox>
+#include <QTextStream>
+
+
+extern QString vymName;
+
+SimpleScriptEditor::SimpleScriptEditor (QWidget *parent):QDialog(parent)
+{
+       ui.setupUi (this);
+
+       connect ( ui.openButton, SIGNAL (clicked() ), this, SLOT (openClicked() ));
+       connect ( ui.saveButton, SIGNAL (clicked() ), this, SLOT (saveClicked() ));
+       connect ( ui.saveAsButton, SIGNAL (clicked() ), this, SLOT (saveAsClicked() ));
+       connect ( ui.runButton,  SIGNAL (clicked() ), this, SLOT (runClicked() ));
+
+
+       // Initialize Editor
+       QFont font;
+       font.setFamily("Courier");
+       font.setFixedPitch(true);
+       font.setPointSize(12);
+       ui.editor->setFont(font);
+
+       highlighter = new Highlighter(ui.editor->document());
+}
+
+void SimpleScriptEditor::saveScript()
+{
+       QFile f( filename );
+       if ( !f.open( QIODevice::WriteOnly ) ) 
+       {
+               return;
+       }
+
+       QTextStream t( &f );
+       t << ui.editor->text();
+       f.close();
+}
+
+void SimpleScriptEditor::setScript(const QString &s)
+{
+       ui.editor->setText(s);
+}
+
+void SimpleScriptEditor::saveClicked()
+{
+       if (filename.isEmpty() )
+               saveAsClicked();
+       else
+               saveScript();
+}
+
+void SimpleScriptEditor::saveAsClicked()
+{
+       QString fn = QFileDialog::getSaveFileName( 
+               this, 
+               QString (vymName + " - " +tr("Save script")),
+               QString (),
+               "VYM script (HTML) (*.vys);;All files (*)",
+               0,
+               QFileDialog::DontConfirmOverwrite);
+               
+    if ( !fn.isEmpty() ) 
+       {
+               QFile file (fn);
+               if (file.exists())
+               {
+                       QMessageBox mb( vymName,
+                               tr("The file %1\nexists already.\nDo you want to overwrite it?","dialog 'save as'").arg(fn),
+                       QMessageBox::Warning,
+                       QMessageBox::Yes | QMessageBox::Default,
+                       QMessageBox::Cancel | QMessageBox::Escape,
+                       Qt::NoButton );
+                       mb.setButtonText( QMessageBox::Yes, tr("Overwrite") );
+                       mb.setButtonText( QMessageBox::No, tr("Cancel"));
+                       switch( mb.exec() ) 
+                       {
+                               case QMessageBox::Yes:
+                                       // save 
+                                       filename = fn;
+                                       saveScript();
+                                       return;
+                               case QMessageBox::Cancel:
+                                       // do nothing
+                                       return;
+                       }
+               } 
+               filename=fn;
+               saveScript();
+    }
+}
+
+void SimpleScriptEditor::openClicked()
+{
+       QFileDialog *fd=new QFileDialog( this);
+       QStringList types;
+       types<< "VYM scripts (*.vys)" <<
+               "All         (*)" ;
+       fd->setFilters (types);
+       fd->setDirectory (QDir().current());
+       fd->setCaption (vymName + " - " + tr("Load script"));
+       fd->show();
+       if ( fd->exec() == QDialog::Accepted )
+               filename = fd->selectedFile();
+
+       if ( !filename.isEmpty() )
+       {
+               QFile f( filename );
+               if ( !f.open( QIODevice::ReadOnly ) )
+               {
+                       QMessageBox::warning(0, 
+                               tr("Error"),
+                               tr("Couldn't open %1.\n").arg(filename));
+                       return;
+               }       
+
+               QTextStream ts( &f );
+               ui.editor->setText( ts.read() );
+               f.close();
+       }
+}
+
+void SimpleScriptEditor::runClicked()
+{
+       emit runScript (ui.editor->text() );
+}
diff --git a/simplescripteditor.h b/simplescripteditor.h
new file mode 100644 (file)
index 0000000..df2e594
--- /dev/null
@@ -0,0 +1,33 @@
+#ifndef SIMPLESCRIPTEDITOR_H
+#define SIMPLESCRIPTEDITOR_H
+
+#include "ui_simplescripteditor.h"
+
+#include "highlighter.h"
+
+class SimpleScriptEditor:public QDialog
+{
+    Q_OBJECT
+
+public:
+    SimpleScriptEditor (QWidget* parent = 0);
+       void saveScript ();
+       void setScript(const QString &);
+
+public slots:
+       void saveClicked();
+       void saveAsClicked();
+       void openClicked();
+       void runClicked();
+
+signals:
+       void runScript (QString);
+       
+private:
+    Ui::SimpleScriptEditor ui;
+       QString filename;
+       Highlighter *highlighter;
+};
+
+
+#endif 
diff --git a/simplescripteditor.ui b/simplescripteditor.ui
new file mode 100644 (file)
index 0000000..4a34d97
--- /dev/null
@@ -0,0 +1,106 @@
+<ui version="4.0" >
+ <class>SimpleScriptEditor</class>
+ <widget class="QDialog" name="SimpleScriptEditor" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>551</width>
+    <height>407</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Simple Script Editor</string>
+  </property>
+  <layout class="QGridLayout" >
+   <property name="margin" >
+    <number>9</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item row="4" column="1" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>75</width>
+       <height>211</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="3" column="1" >
+    <widget class="QPushButton" name="saveAsButton" >
+     <property name="text" >
+      <string>Save as</string>
+     </property>
+     <property name="shortcut" >
+      <string/>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="1" >
+    <widget class="QPushButton" name="saveButton" >
+     <property name="text" >
+      <string>Save</string>
+     </property>
+     <property name="shortcut" >
+      <string>Qt::CTRL + Qt::Key_S</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1" >
+    <widget class="QPushButton" name="openButton" >
+     <property name="text" >
+      <string>Open</string>
+     </property>
+     <property name="shortcut" >
+      <string>Qt::CTRL +Qt::Key_O</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1" >
+    <widget class="QPushButton" name="runButton" >
+     <property name="text" >
+      <string>Run</string>
+     </property>
+     <property name="shortcut" >
+      <string>Qt::CTRL + Qt::Key_R</string>
+     </property>
+    </widget>
+   </item>
+   <item row="5" column="1" >
+    <widget class="QPushButton" name="closeButton" >
+     <property name="text" >
+      <string>Close</string>
+     </property>
+    </widget>
+   </item>
+   <item rowspan="6" row="0" column="0" >
+    <widget class="QTextEdit" name="editor" />
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>closeButton</sender>
+   <signal>clicked()</signal>
+   <receiver>SimpleScriptEditor</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>519</x>
+     <y>390</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>-25</x>
+     <y>-275</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/styles/cm.xsl b/styles/cm.xsl
new file mode 100644 (file)
index 0000000..1636ab5
--- /dev/null
@@ -0,0 +1,295 @@
+<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
+<xsl:stylesheet 
+       xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
+       xmlns:exsl="http://exslt.org/common"
+       extension-element-prefixes="exsl" version="1.0">
+       
+<xsl:variable name="controlCharacter" select="'¤'" />
+<xsl:variable name="crlf" select="'&#10;'" />
+<!-- <xsl:variable name="wikistyle" select="false()" /> -->
+
+<xsl:variable name="supportMenu" select="'true'" />
+<xsl:variable name="supportShowme" select="'true'" />
+<xsl:variable name="supportSource" select="'true'" />
+<xsl:variable name="supportImage" select="'true'" />
+
+<xsl:template name="findNext">
+       <xsl:param name="content" />
+       <xsl:variable name="escaped" select="substring-after( $content, '\{' )" />
+       <xsl:variable name="item-start" select="substring-after( $content, '{' )" />
+       <xsl:variable name="item-end" select="substring-before( $item-start, '}' )" />
+       <xsl:if test="normalize-space($escaped) != normalize-space($item-start)">
+               <xsl:copy-of select="normalize-space($item-end)" />
+       </xsl:if>
+</xsl:template>
+
+<xsl:template name="findNextTag">
+       <xsl:param name="content" />
+       <xsl:variable name="item-start" select="substring-after( $content, '|' )" />
+       <xsl:variable name="item-end" select="substring-before( $item-start, '|' )" />
+       <xsl:variable name="name-start" select="substring-after( $item-start, '(' )" />
+       <xsl:variable name="name-end" select="substring-before( $name-start, ')' )" />
+       <!-- <xsl:copy-of select="normalize-space($item-end)" /> -->
+       <xsl:variable name="w" select="substring-after( $item-end, ') ')" />
+       <xsl:if test="string($w)">
+               <xsl:element name="{$w}">
+                       <xsl:value-of select="$name-end" />
+               </xsl:element>
+       </xsl:if>
+</xsl:template>
+
+<xsl:template name="lastCall">
+       <xsl:param name="content" />
+
+       <xsl:variable name="inTheBeginning"   select="substring-before( $content, '|' )" />
+       <xsl:variable name="markup-start"     select="substring-after( $content, '|' )" />
+       <xsl:variable name="markup-end"       select="substring-before( $markup-start, '|' )" />
+       <xsl:variable name="markup-after"     select="substring-after( $markup-start, concat( $markup-end, '|') )" />
+       
+       <xsl:variable name="cmd"              select="substring-before( $markup-end, ';' )" />
+       
+       <xsl:copy-of select="$inTheBeginning" />
+       
+       <xsl:choose>
+               <xsl:when test="string($markup-end)">
+                       <xsl:choose>
+                               <xsl:when test="starts-with( $markup-end, '!' )">
+                                       <span class="note"><xsl:copy-of select="substring-after( $markup-end, '!')" /></span>
+                               </xsl:when>
+                               <xsl:when test="starts-with( $markup-end, '/' )">
+                                       <em><xsl:copy-of select="substring-after( $markup-end, '/')" /></em>
+                               </xsl:when>
+                               <xsl:when test="starts-with( $markup-end, '*' )">
+                                       <pre><xsl:copy-of select="substring-after( $markup-end, '*')" /></pre>
+                               </xsl:when>
+                               <xsl:otherwise>
+                                       <strong><xsl:copy-of select="$markup-end" /></strong>
+                               </xsl:otherwise>
+                       </xsl:choose>
+                       <xsl:call-template name="lastCall">
+                               <xsl:with-param name="content" select="$markup-after" />
+                       </xsl:call-template>
+                       <!-- [<xsl:copy-of select="$markup-after" />] -->
+               </xsl:when>
+               <xsl:otherwise>
+                       <xsl:copy-of select="$content" />
+               </xsl:otherwise>
+       </xsl:choose>
+       
+</xsl:template>
+
+<xsl:template name="replace-tags">
+       <xsl:param name="content" />
+       <xsl:param name="currentID" />
+       <xsl:variable name="topic"><xsl:call-template name="findNext"><xsl:with-param name="content" select="$content" /></xsl:call-template></xsl:variable>
+       <!-- <xsl:variable name="this" select="$thisDoc/item[@id=$topic]" /> -->
+       <!-- <xsl:variable name="name" select="$this/@name" /> -->
+       <xsl:variable name="name"><xsl:call-template name="getTopicName"><xsl:with-param name="id" select="$topic" /></xsl:call-template></xsl:variable>
+       
+       <xsl:variable name="escaped-start"    select="substring-after( $content, '\{' )" />
+       <xsl:variable name="item-start"       select="substring-before( $content, '{' )" />
+
+       <xsl:variable name="item-end"         select="substring-after( $content, '}' )" />
+       <xsl:variable name="escaped-end"      select="substring-after( $content, '\}' )" />
+
+       <xsl:if test="string(normalize-space($item-start))">
+               <xsl:if test="normalize-space($escaped-start) != normalize-space($item-start)">
+                       <xsl:call-template name="lastCall">
+                               <xsl:with-param name="content" select="$item-start" />
+                       </xsl:call-template>
+               </xsl:if>
+               <xsl:if test="normalize-space($escaped-start) = normalize-space($item-start)">
+                       <xsl:call-template name="lastCall">
+                               <xsl:with-param name="content" select="$escaped-start" />
+                       </xsl:call-template>
+               </xsl:if>
+       </xsl:if>
+
+       <xsl:variable name="middle">
+               <xsl:if test="string(normalize-space($topic))">
+               
+                       <!-- <xsl:value-of select="$topic" />(<xsl:value-of select="substring($topic, 1)" />) -->
+                       <xsl:choose>
+                               <xsl:when test="substring($topic, 1, 1) = '('">
+                               
+                                       <xsl:variable name="tmp"><xsl:value-of select="substring-before( $topic, ')' )" /></xsl:variable>
+                                       <xsl:variable name="thisName" select="substring-after( $topic, ') ' )" />
+                                       <xsl:variable name="name2">
+                                               <xsl:choose>
+                                                       <xsl:when test="substring($topic, 2, 1) = '%'"><img src="{substring( $tmp, 3 )}" class="image" border="0" alt="" /></xsl:when>
+                                                       <xsl:otherwise><xsl:value-of select="substring( $tmp, 2 )" /></xsl:otherwise>
+                                               </xsl:choose>   
+                                       </xsl:variable>
+                                       <xsl:choose>
+                                               <xsl:when test="starts-with($thisName, 'http')">
+                                                       <xsl:element name="a">
+                                                               <xsl:attribute name="href"><xsl:value-of select="$thisName" /></xsl:attribute>
+                                                               <xsl:if test="substring($topic, 2, 1) != '%'">
+                                                                       <xsl:attribute name="class">extLink</xsl:attribute>
+                                                               </xsl:if><xsl:copy-of select="$name2" />
+                                                       </xsl:element>
+                                               </xsl:when>
+                                               <xsl:when test="starts-with($thisName, 'mailto')">
+                                                       <xsl:element name="a">
+                                                               <xsl:attribute name="href"><xsl:value-of select="$thisName" /></xsl:attribute>
+                                                               <xsl:if test="substring($topic, 2, 1) != '%'">
+                                                                       <xsl:attribute name="class">extLink</xsl:attribute>
+                                                               </xsl:if><xsl:copy-of select="$name2" />
+                                                       </xsl:element>
+                                               </xsl:when>
+                                               <xsl:otherwise>
+                                                       <xsl:element name="a">
+                                                               <xsl:attribute name="href"><xsl:value-of select="$thisName" />.html</xsl:attribute>
+                                                               <xsl:if test="not(substring($topic, 2, 1) = '%')">
+                                                                       <xsl:attribute name="class">topicLink</xsl:attribute>
+                                                               </xsl:if>
+                                                               <xsl:copy-of select="$name2" />
+                                                       </xsl:element>
+                                               </xsl:otherwise>
+                                       </xsl:choose>
+       
+                               </xsl:when>
+                               <xsl:when test="substring($topic, 1, 1) = '!' and string($supportMenu)">
+                                       <menu style="{substring-after($topic, '!')}"/>
+                               </xsl:when>
+                               <xsl:when test="substring($topic, 1, 1) = '#' and string($supportShowme)">
+                                       <show-me what="{substring-after($topic, '#')}" id="{$currentID}" />
+                               </xsl:when>
+                               <xsl:when test="substring($topic, 1, 1) = '+' and string($supportSource)">
+                                       <div class="viewSource"><a href="content/{$currentID}.orig" class="viewSource">view content source file</a></div>
+                               </xsl:when>
+                               <xsl:when test="substring($topic, 1, 1) = '%' and string($supportImage)">
+                                       <image href="{substring-after($topic, '%')}" id="{$currentID}" />
+                               </xsl:when>
+                               <xsl:when test="starts-with($topic, 'http')">
+                                       <xsl:element name="a">
+                                               <xsl:attribute name="href"><xsl:value-of select="$topic" /></xsl:attribute>
+                                               <xsl:attribute name="class">extLink</xsl:attribute><xsl:value-of select="$topic" />
+                                       </xsl:element>
+                               </xsl:when>
+                               <xsl:otherwise>
+                                       <xsl:element name="a">
+                                               <xsl:attribute name="href"><xsl:value-of select="$topic" />.html</xsl:attribute>
+                                               <xsl:attribute name="class">topicLink</xsl:attribute><xsl:value-of select="$name" />
+                                       </xsl:element>
+                               </xsl:otherwise>
+                       </xsl:choose>
+                       
+               </xsl:if>
+       </xsl:variable>
+
+                       <xsl:call-template name="lastCall">
+                               <xsl:with-param name="content" select="$middle" />
+                       </xsl:call-template>
+<!--   <xsl:copy-of select="$middle" />
+ -->
+       <xsl:variable name="more">
+               <xsl:call-template name="findNext">
+                       <xsl:with-param name="content" select="$item-end" />
+               </xsl:call-template>
+       </xsl:variable>
+       
+       <xsl:choose>
+               <xsl:when test="string(normalize-space($more))">
+                       <xsl:call-template name="replace-tags"><xsl:with-param name="content" select="$item-end" /><xsl:with-param name="currentID" select="$currentID" /></xsl:call-template>
+               </xsl:when>
+               <xsl:otherwise>
+                       <xsl:if test="string(normalize-space($item-end))">
+                               <xsl:call-template name="lastCall">
+                                       <xsl:with-param name="content" select="$item-end" />
+                               </xsl:call-template>
+<!--                           <xsl:copy-of select="$item-end" />
+ -->                   </xsl:if>
+               </xsl:otherwise>
+       </xsl:choose>
+
+       <xsl:if test="not(string(normalize-space($item-start))) and not(string(normalize-space($item-end))) and not(string(normalize-space($topic)))">
+                       <xsl:call-template name="lastCall">
+                               <xsl:with-param name="content" select="$content" />
+                       </xsl:call-template>
+<!--           <xsl:copy-of select="$content" /> -->
+       </xsl:if>
+
+</xsl:template>
+
+<xsl:template name="markupLine">
+       <xsl:param name="content" />
+       <xsl:param name="currentID" />
+       <xsl:variable name="first" select="substring($content, 1, 1)" />
+       <xsl:variable name="c">
+               <xsl:if test="$wikistyle">
+                 <xsl:if test="string($first) = '?'">question</xsl:if>
+                 <xsl:if test="string($first) = '='">answer</xsl:if>
+                 <xsl:if test="string($first) = '!'">note</xsl:if>
+                 <xsl:if test="string($first) = '*'">point</xsl:if>
+                 <xsl:if test="string($first) = '.'">indent</xsl:if>
+                 <xsl:if test="string($first) = '|'">code</xsl:if>
+                 <xsl:if test="string($first) = ':'">blank</xsl:if>
+                 <xsl:if test="string($first) = '-'">headerSmall</xsl:if>
+                 <xsl:if test="string($first) = '+'">headerLarge</xsl:if>
+                 <xsl:if test="string($first) = '#'">meta</xsl:if>
+               </xsl:if>
+               <xsl:if test="not($wikistyle)"></xsl:if>
+       </xsl:variable>
+
+       <!-- <xsl:message>
+               <xsl:text>c: </xsl:text><xsl:value-of select="$c"/>
+               <xsl:text> wikistyle: </xsl:text><xsl:value-of select="$wikistyle"/>
+       </xsl:message> -->
+       
+       <xsl:variable name="cont">
+               <xsl:if test="string($c) and $wikistyle">
+                       <xsl:copy-of select="substring($content, 2)" /></xsl:if>
+               <xsl:if test="not(string($c))">
+                       <xsl:copy-of select="$content" /></xsl:if>
+       </xsl:variable>
+       
+       <xsl:variable name="class">
+               <xsl:if test="string($c)">
+                       <xsl:copy-of select="$c" /></xsl:if>
+               <xsl:if test="not(string($c))">normal</xsl:if>
+       </xsl:variable>
+       
+       <xsl:choose>
+               <xsl:when test="$c = 'meta'">
+                       <xsl:variable name="what" select="$cont" />
+                       <xsl:variable name="before" select="substring-before($what, '=')" />
+                       <xsl:variable name="after" select="substring-after($what, '=')" />
+                       <xsl:if test="string($before)">
+                               <xsl:text disable-output-escaping="yes"><![CDATA[<]]></xsl:text><xsl:copy-of select="normalize-space($before)" /><xsl:text disable-output-escaping="yes"><![CDATA[>]]></xsl:text>
+                                       <xsl:copy-of select="$after" />
+                               <xsl:text disable-output-escaping="yes"><![CDATA[</]]></xsl:text><xsl:copy-of select="normalize-space($before)" /><xsl:text disable-output-escaping="yes"><![CDATA[>]]></xsl:text>
+                       </xsl:if>
+               </xsl:when>
+               <xsl:when test="$c = 'code'">
+                       <p class="{$class}"><xsl:copy-of select="$cont" /></p>
+               </xsl:when>
+               <xsl:when test="not($wikistyle)">
+                       <p class="{$class}"><xsl:copy-of select="$cont" /></p>
+                       <!-- <xsl:message terminate="yes" /> -->
+               </xsl:when>
+               <xsl:otherwise>
+                       <p class="{$class}"><xsl:call-template name="replace-tags"><xsl:with-param name="content" select="$cont" /><xsl:with-param name="currentID" select="$currentID" /></xsl:call-template></p>
+               </xsl:otherwise>
+       </xsl:choose>
+</xsl:template>
+
+<xsl:template name="doLine">
+       <xsl:param name="content" />
+       <xsl:param name="currentID" />
+       <xsl:variable name="line" select="normalize-space(concat( substring-before( $content, $controlCharacter ), $controlCharacter))" />
+       <xsl:variable name="lineClear" select="normalize-space(translate( $line,  $controlCharacter, ' ' ))" />
+       <xsl:variable name="next" select="normalize-space(substring-after( $content, $line ))" />
+<!--   [<xsl:value-of select="$content" />]<br/>
+       [<xsl:value-of select="$line" />]<br/>
+       [<xsl:value-of select="$lineClear" />]<br/>
+       [<xsl:value-of select="$next" />]<br/> -->
+       <xsl:if test="string(normalize-space($lineClear))">
+               <xsl:call-template name="markupLine"><xsl:with-param name="content"><xsl:copy-of select="$lineClear" /></xsl:with-param><xsl:with-param name="currentID" select="$currentID" /></xsl:call-template>
+       </xsl:if>
+       <xsl:if test="string(normalize-space($next))">
+               <xsl:call-template name="doLine"><xsl:with-param name="content"><xsl:copy-of select="$next" /></xsl:with-param><xsl:with-param name="currentID" select="$currentID" /></xsl:call-template>
+       </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/styles/kdebookmarks2vym.xsl b/styles/kdebookmarks2vym.xsl
new file mode 100644 (file)
index 0000000..618c467
--- /dev/null
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE xsl:stylesheet
+[
+   <!-- Namespace for XHTML -->
+   <!ENTITY xhtmlns "http://www.w3.org/1999/xhtml">
+]>
+
+<!--
+    Author      : Uwe Drechsel  <vym@InSilmaril.de>
+    Description : transforms KDE Bookmarks into vym map
+-->
+
+<xsl:stylesheet version="1.0"
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:date="http://exslt.org/dates-and-times"
+    extension-element-prefixes="date"
+    xmlns="&xhtmlns;">
+
+
+<xsl:output method="xml"
+    doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
+    doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
+    encoding="UTF-8"
+    indent="yes"
+    media-type="application/xhtml+xml"/>
+
+
+
+<!-- ======================================= -->
+<!-- 1 = true, 0 = false -->
+
+<!-- Debuggin on/off? -->
+<xsl:param name="debug" select="0"/>
+
+
+<!-- ======================================= -->
+<xsl:variable name="head.title">
+   <xsl:choose>
+      <xsl:when test="/vymmap/mapcenter/heading">
+                       
+                               <xsl:variable name="title">
+                               </xsl:variable>
+
+        <xsl:value-of select="$title"/>
+      </xsl:when>
+      <xsl:otherwise></xsl:otherwise>
+   </xsl:choose>
+</xsl:variable>
+
+
+
+
+<!-- ======================================= -->
+<xsl:template match="*">
+   <xsl:message>
+      <xsl:text>WARNING: Unknown tag "</xsl:text>
+      <xsl:value-of select="local-name(.)"/>
+      <xsl:text>": </xsl:text>
+      <xsl:value-of select="normalize-space(.)"/>
+      <xsl:text>&#10;</xsl:text>
+   </xsl:message>
+</xsl:template>
+
+
+
+
+<xsl:template match="xbel">
+   <vymmap version="1.7.15" author="VYM - styles/kdebookmarks2vym.xsl" comment="" date="2006-04-24" backgroundColor="#ffffff" linkStyle="StylePolyLine" linkColor="#0000ff" defXLinkColor="#e6e6e6" defXLinkWidth="1">
+       <mapcenter>
+               <heading>Bookmarks</heading>
+               <branch frameType="Rectangle">
+                       <heading>KDE</heading>
+                                 <xsl:apply-templates/>
+               </branch>
+       </mapcenter>    
+   </vymmap>
+</xsl:template>
+
+
+<xsl:template match="folder">
+   <branch scrolled="yes">
+      <xsl:apply-templates/>
+   </branch>
+</xsl:template>
+
+<xsl:template match="title">
+   <heading>
+      <xsl:apply-templates/>
+   </heading>
+</xsl:template>
+
+<xsl:template match="separator">
+   <branch>
+               <heading>***************</heading>
+   </branch>
+</xsl:template>
+
+<xsl:template match="desc">
+   <htmlnote fonthint="var">
+       <html>
+               <body style="font-size:10pt;font-family:Sans Serif">
+                       <p>
+                               <xsl:value-of select="." />
+                       </p>
+               </body>
+       </html>
+
+   </htmlnote>
+</xsl:template>
+
+<xsl:template match="bookmark">
+   <branch>
+               <xsl:attribute name="url" ><xsl:value-of select="@href" />
+               </xsl:attribute>
+               <xsl:apply-templates/>
+   </branch>
+</xsl:template>
+
+
+<!-- Do nothing! We don't need some informational elements -->
+<xsl:template match="info*"/>
+
+
+</xsl:stylesheet>
diff --git a/styles/mmap2vym.xsl b/styles/mmap2vym.xsl
new file mode 100644 (file)
index 0000000..a519fe5
--- /dev/null
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+       Document   : mmap2vym.xsl
+       Author     : Clemens Kraus (http://www.clemens-kraus.de)
+                            Uwe Drechsel <vym@InSilmaril.de>
+       
+       Description: transforms exported MindManager-files (version x5/6) into vym-format.
+       Bugs       : First Version, work still in progress!
+       Todo       : - xlinks still to be implemented
+                    - codes/symbols still to be implemented
+                                - Multimap links (.mmap) still to be implemented
+-->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+       xmlns:xlink="http://www.w3.org/1999/xlink"
+       xmlns:ap="http://schemas.mindjet.com/MindManager/Application/2003"
+       xmlns:exsl="http://exslt.org/common" extension-element-prefixes="exsl math func"
+       xmlns:math="http://exslt.org/math"
+       xmlns:func="http://exslt.org/functions"
+       version="1.0">
+
+<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
+<xsl:param name="filenamep" />
+<xsl:variable name="filename" select="$filenamep"/>
+<!--<xsl:variable name="maxxCoord"><xsl:value-of select="math:max(map//xCoord)" /></xsl:variable>-->
+
+<!-- root element -->  
+<xsl:template match="/">
+       <xsl:element name="vymmap">
+               <!-- default settings: -->
+               <xsl:attribute name="comment">Converted from MindManager to vym
+               using mmap2vym.xsl</xsl:attribute>
+
+               <xsl:variable name="author" select="concat(/ap:Map/ap:DocumentGroup/ap:Author/@UserName, ' ', /ap:Map/ap:DocumentGroup/ap:Author/@UserEmail)" />
+               <xsl:if test="$author">
+                       <xsl:attribute name="author"><xsl:value-of select="$author"/></xsl:attribute>
+               </xsl:if>
+                       
+               <xsl:element name="mapcenter">
+                       <!-- recurse to map title node ... -->
+                       <xsl:apply-templates select="ap:Map/ap:OneTopic/ap:Topic/ap:SubTopics" />
+               </xsl:element>
+       </xsl:element>
+</xsl:template>
+
+<xsl:template match="ap:Topic/ap:Text">
+       <xsl:element name="heading">
+               <xsl:value-of select="@PlainText" />
+       </xsl:element>
+</xsl:template>
+
+
+<xsl:template match="ap:Topic">
+       <xsl:element name="branch">
+       <xsl:call-template name="position" />
+       <!-- =============================== hyperlink ================================ 
+       <xsl:variable name="url" select="ap:Hyperlink" />
+       <xsl:if test="$url">
+       <xsl:attribute name="url"><xsl:value-of select="ap:Hyperlink/@Url"/></xsl:attribute>
+       </xsl:if>
+       <xsl:variable name="rect" select="ap:SubTopicShape/@SubTopicShape" />
+       <xsl:if test="contains($rect, 'Rectangle')">
+       <xsl:attribute name="frameType">Rectangle</xsl:attribute>
+       </xsl:if>
+       -->
+       <xsl:apply-templates/>
+       </xsl:element>
+</xsl:template>
+
+
+<!-- =============================== position ================================ -->
+<xsl:template name="position">
+       <xsl:if test="ap:Offset/@CX!=''">
+               <xsl:attribute name="relPosX">
+                       <xsl:value-of select="ap:Offset/@CX *3"/>
+               </xsl:attribute>
+       </xsl:if>               
+       <xsl:if test="ap:Offset/@CY!=''">
+               <xsl:attribute name="relPosY">
+                       <xsl:value-of select="floor( ap:Offset/@CY *3 )"/>
+               </xsl:attribute>
+       </xsl:if>               
+</xsl:template>
+
+       
+<!-- =============================== Icons ================================ -->
+<xsl:template match="ap:Icon">
+       <xsl:element name="standardFlag">
+               <xsl:choose>
+                       <xsl:when test="@IconType ='urn:mindjet:ExclamationMark'">exclamationmark</xsl:when>
+                       <xsl:when test="@IconType ='urn:mindjet:SmileyHappy'">smiley-good</xsl:when>
+                       <xsl:when test="@IconType ='urn:mindjet:SmileySad'">smiley-sad</xsl:when>
+               <xsl:otherwise>
+                       <xsl:message>Unknown Flag found: <xsl:value-of select="@IconType"/></xsl:message>
+               </xsl:otherwise>
+               </xsl:choose>
+       </xsl:element>
+</xsl:template>
+       
+  
+</xsl:stylesheet>
+
+
diff --git a/styles/tm.xsl b/styles/tm.xsl
new file mode 100644 (file)
index 0000000..b10bd08
--- /dev/null
@@ -0,0 +1,353 @@
+<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:exsl="http://exslt.org/common" extension-element-prefixes="exsl" version="1.0">
+
+<xsl:template name="getTopicName">
+       <xsl:param name="id"/>
+       <xsl:variable name="searching" select="$topics[@id=$id]" />
+       <xsl:variable name="get"><xsl:value-of select="$searching/baseName/baseNameString" /><xsl:value-of select="$searching/@name" /></xsl:variable>
+       <xsl:if test="string( $get )"><xsl:value-of select="$get" /></xsl:if>
+       <xsl:if test="not(string( $get ))"><span class="notFound"><xsl:value-of select="$id" /> not found.</span></xsl:if>
+</xsl:template>
+       
+<xsl:template name="getParent">
+       <xsl:param name="currentID"/>
+       <xsl:call-template name="getAllAssocID">
+               <xsl:with-param name="filter" select="'#group-subgroup'" />
+               <xsl:with-param name="role" select="'#parent'" />
+               <xsl:with-param name="currentID" select="$currentID" />
+       </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="getChild">
+       <xsl:param name="currentID"/>
+       <xsl:call-template name="getAllAssocID">
+               <xsl:with-param name="filter" select="'#group-subgroup'" />
+               <xsl:with-param name="role" select="'#child'" />
+               <xsl:with-param name="currentID" select="$currentID" />
+       </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="getAllAssocID">
+       <xsl:param name="filter"/>
+       <xsl:param name="role"/>
+       <xsl:param name="currentID"/>
+       
+       <xsl:variable name="theseOnes" select="$associations[instanceOf/topicRef/@xlink:href=$filter][member/topicRef/@xlink:href=concat('#',$currentID)]" />
+       <xsl:variable name="fiddle" select="$theseOnes/member/topicRef[not(@xlink:href=concat('#',$currentID))][parent::*/roleSpec/topicRef/@xlink:href=$role]" />
+
+       <xsl:value-of select="substring-after($fiddle[1]/@xlink:href, '#')" />
+       
+</xsl:template>
+
+<xsl:template name="getAllAssoc">
+       <xsl:param name="filter"/>
+       <xsl:param name="role"/>
+       <xsl:param name="style" select="'default'" />
+       <xsl:param name="title"/>
+       <xsl:param name="box"/>
+       <xsl:param name="without"/>
+       <xsl:param name="currentID"/>
+       <xsl:param name="againstID"/>
+       
+       <xsl:variable name="theseOnes" select="$associations[instanceOf/topicRef/@xlink:href=$filter][member/topicRef/@xlink:href=concat('#',$currentID)]" />
+
+       <xsl:variable name="found"><xsl:choose> 
+                       <xsl:when test="$style = 'sections'">
+                               <table border="0" cellspacing="0" cellpadding="0" class="sections"><tr>
+                               <xsl:for-each select="$theseOnes/member/topicRef[@xlink:href!=concat('#',$currentID)][parent::*/roleSpec/topicRef/@xlink:href=$role]"> 
+                                       <xsl:variable name="thisOne" select="substring-after(@xlink:href, '#')" />
+                                       <xsl:variable name="cat" select="concat('#',$currentID)" />
+                                       <td valign="top" class="{$style}Menu">
+                                               <a href="{$pre-link}{$thisOne}{$post-link}" class="{$style}MenuLink"><xsl:call-template name="getTopicName"><xsl:with-param name="id" select="$thisOne" /></xsl:call-template></a>
+                                               <div class="{$style}MenuContent"><xsl:call-template name="getClue"><xsl:with-param name="currentID" select="$thisOne" /></xsl:call-template></div>
+                                       </td>
+                               </xsl:for-each>
+                               </tr></table>
+                       </xsl:when>
+                       <xsl:when test="$style = 'news'">
+                               <xsl:for-each select="$theseOnes/member/topicRef[@xlink:href!=concat('#',$currentID)][parent::*/roleSpec/topicRef/@xlink:href=$role]"> 
+                                       <xsl:variable name="thisOne" select="substring-after(@xlink:href, '#')" />
+                                       <xsl:variable name="cat" select="concat('#',$currentID)" />
+                                       <div class="{$style}Menu">
+                                               <a href="{$pre-link}{$thisOne}{$post-link}" class="{$style}MenuLink">
+                                                       <xsl:call-template name="getTopicName"><xsl:with-param name="id" select="$thisOne" /></xsl:call-template> : 
+                                                       <xsl:call-template name="getClue"><xsl:with-param name="currentID" select="$thisOne" /><xsl:with-param name="style" select="'news'" /></xsl:call-template>
+                                               </a>
+                                       </div>
+                               </xsl:for-each>
+                       </xsl:when>
+                       <xsl:when test="$style = 'smallnews'">
+                               <xsl:for-each select="$theseOnes/member/topicRef[@xlink:href!=concat('#',$currentID)][parent::*/roleSpec/topicRef/@xlink:href=$role]"> 
+                                       <xsl:variable name="thisOne" select="substring-after(@xlink:href, '#')" />
+                                       <xsl:variable name="cat" select="concat('#',$currentID)" />
+                                       <div class="{$style}Menu">
+                                               <a href="{$pre-link}{$thisOne}{$post-link}" class="{$style}MenuLink">
+                                                       <xsl:call-template name="getTopicName"><xsl:with-param name="id" select="$thisOne" /></xsl:call-template> : 
+                                                        <xsl:call-template name="getShort"><xsl:with-param name="currentID" select="$thisOne" /></xsl:call-template>
+                                               </a>
+                                       </div>
+                               </xsl:for-each>
+                       </xsl:when>
+                       <xsl:otherwise>
+                       
+                               <xsl:variable name="allThese" select="$theseOnes/member/topicRef[@xlink:href!=concat('#',$currentID)][parent::*/roleSpec/topicRef/@xlink:href=$role]" />
+                               <xsl:for-each select="$allThese"> 
+                               
+                               <xsl:variable name="thisOne" select="substring-after(@xlink:href, '#')" />
+                                       <xsl:variable name="cat" select="concat('#',$currentID)" />
+                                               <xsl:choose> 
+                                                       <xsl:when test="$style = 'right' or $style = 'left' or $style = 'full' or $style = 'tree'">
+                                                               <xsl:choose>
+                                                                       <xsl:when test="$thisOne = $againstID">
+                                                                               <div class="{$style}MenuSelected"><a href="{$pre-link}{$thisOne}{$post-link}"><xsl:call-template name="getTopicName"><xsl:with-param name="id" select="$thisOne" /></xsl:call-template></a> </div>
+                                                                       </xsl:when>
+                                                                       <xsl:otherwise>
+                                                                               <div class="{$style}Menu"><a href="{$pre-link}{$thisOne}{$post-link}"><xsl:call-template name="getTopicName"><xsl:with-param name="id" select="$thisOne" /></xsl:call-template></a> </div>
+                                                                       </xsl:otherwise>
+                                                               </xsl:choose>
+                                                       </xsl:when>
+                                                       <xsl:when test="$style = 'banner'">
+                                                               <xsl:choose>
+                                                                       <xsl:when test="$thisOne = $againstID">
+                                                                               <td class="{$style}MenuSelected"><a href="{$pre-link}{$thisOne}{$post-link}"><xsl:call-template name="getTopicName"><xsl:with-param name="id" select="$thisOne" /></xsl:call-template></a> </td>
+                                                                       </xsl:when>
+                                                                       <xsl:otherwise>
+                                                                               <td class="{$style}Menu"><a href="{$pre-link}{$thisOne}{$post-link}"><xsl:call-template name="getTopicName"><xsl:with-param name="id" select="$thisOne" /></xsl:call-template></a> </td>
+                                                                       </xsl:otherwise>
+                                                               </xsl:choose>
+                                                       </xsl:when>
+                                                       <xsl:otherwise>
+                                                               <xsl:if test="position() != 1"> / </xsl:if>
+                                                               <a href="{$pre-link}{$thisOne}{$post-link}"><xsl:call-template name="getTopicName"><xsl:with-param name="id" select="$thisOne" /></xsl:call-template> </a>
+                                                       </xsl:otherwise>
+                                               </xsl:choose>
+                               </xsl:for-each>
+                       </xsl:otherwise>
+               </xsl:choose>
+       </xsl:variable>
+       <xsl:if test="string($found)">
+               <xsl:choose>
+                       <xsl:when test="string($box) and $style != 'news' and $style != 'right' and $style != 'left' and $style != 'full' and $style = 'tree' and $style = 'banner'">
+                               <table class="{$box}">
+                               <tr>
+                                       <xsl:if test="string($title)"><td class="{$box}Title"><xsl:value-of select="$title" /></td></xsl:if>
+                                       <td class="{$box}Content"><xsl:copy-of select="$found" /></td>
+                               </tr>
+                               </table>
+                       </xsl:when>
+                       <xsl:otherwise>
+                               <xsl:copy-of select="$found" />
+                       </xsl:otherwise>
+               </xsl:choose>
+       </xsl:if>
+</xsl:template>
+
+<xsl:template name="getAllAssocTwo">
+       <xsl:param name="filter"/>
+       <xsl:param name="role"/>
+       <xsl:param name="type"/>
+       <xsl:param name="style" select="'default'" />
+       <xsl:param name="title"/>
+       <xsl:param name="box"/>
+       <xsl:param name="without"/>
+       <xsl:param name="currentID"/>
+       <xsl:param name="againstID"/>
+       <xsl:variable name="theseOnes" select="$associations[instanceOf/topicRef/@xlink:href=$filter][member/topicRef/@xlink:href=concat('#',$currentID)]" />
+       <xsl:variable name="allThese" select="$theseOnes/member/topicRef[@xlink:href!=concat('#',$currentID)][parent::*/roleSpec/topicRef/@xlink:href=$role]" />
+       <xsl:variable name="w" select="substring-after($type, '#')" />
+       <xsl:variable name="all" select="$topics[starts-with(@id, concat($w, '-'))]" />
+       <xsl:variable name="found">
+               <xsl:for-each select="$all"> 
+                       <xsl:variable name="this" select="@id" />
+                       <xsl:variable name="c" select="count( $allThese[substring-after(@xlink:href, '#')=$this])" />
+                       <xsl:if test="$c &gt; 0">
+                               <xsl:variable name="single" select="$this[1]" />
+                               <a href="{$pre-link}{$single}{$post-link}" class="foundLink"><xsl:call-template name="getTopicName"><xsl:with-param name="id" select="$single" /></xsl:call-template></a>
+                       </xsl:if>
+               </xsl:for-each>
+       </xsl:variable>
+       <xsl:if test="string($found)"><xsl:copy-of select="$found" /></xsl:if>
+</xsl:template>
+
+<xsl:template name="drawNextLevel">    
+       <xsl:param name="currentID"/>
+       <xsl:param name="againstID"/>
+       <xsl:param name="currentType"/>
+       <xsl:param name="currentRole"/>
+       <xsl:param name="style"/>
+       <xsl:call-template name="getAllAssoc">
+               <xsl:with-param name="currentID" select="$currentID" />
+               <xsl:with-param name="againstID" select="$againstID" />
+               <xsl:with-param name="filter" select="'#group-subgroup'" />
+               <xsl:with-param name="role" select="$currentRole" />
+               <xsl:with-param name="box" select="'box'" />
+               <xsl:with-param name="style" select="$style" />
+       </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="drawRelated">
+       <xsl:param name="currentID"/>
+       <xsl:param name="currentType"/>
+       <xsl:param name="currentRole"/>
+       <xsl:param name="style" select="'box'" />
+       <xsl:call-template name="getAll">
+               <xsl:with-param name="ThisThat" select="'#this'" />
+               <xsl:with-param name="role" select="$currentRole" />
+               <xsl:with-param name="box" select="$style" />
+               <xsl:with-param name="currentID" select="$currentID" />
+       </xsl:call-template>
+       <xsl:call-template name="getAll">
+               <xsl:with-param name="ThisThat" select="'#that'" />
+               <xsl:with-param name="role" select="$currentRole" />
+               <xsl:with-param name="box" select="$style" />
+               <xsl:with-param name="currentID" select="$currentID" />
+       </xsl:call-template>
+</xsl:template>        
+
+<xsl:template name="getAll">
+       <xsl:param name="ThisThat"/>
+       <xsl:param name="filter"/>
+       <xsl:param name="title"/>
+       <xsl:param name="role"/>
+       <xsl:param name="box"/>
+       <xsl:param name="without"/>
+       <xsl:param name="currentID"/>
+       <xsl:variable name="allRelations" select="$topics[starts-with(@id, 'relation-')]" />
+       <xsl:variable name="allAssociations" select="$associations[member/topicRef/@xlink:href=concat('#',$currentID)]" />
+       <xsl:for-each select="$allRelations">
+               <xsl:variable name="relID" select="concat('#', @id)" />
+               <xsl:variable name="ThisThatRole"><xsl:choose><xsl:when test="$ThisThat = '#that'">#child</xsl:when><xsl:otherwise>#parent</xsl:otherwise></xsl:choose></xsl:variable>
+               <xsl:variable name="thisName"><xsl:value-of select="baseName[scope/topicRef/@xlink:href=$ThisThat]/baseNameString" /></xsl:variable>
+               <xsl:variable name="found">
+                       <xsl:for-each select="$allAssociations">
+                               <xsl:variable name="assocInstance" select="instanceOf/topicRef/@xlink:href" />
+                               <xsl:variable name="assocHref" select="member[roleSpec/topicRef/@xlink:href=$ThisThatRole]/topicRef/@xlink:href" />
+                               <xsl:variable name="thisID" select="substring-after($assocHref, '#')" />
+                               <xsl:if test="$relID = $assocInstance and $thisID != $currentID">                       
+                                       <span class="{$box}Element"><a href="{$pre-link}{$thisID}{$post-link}"><xsl:call-template name="getTopicName"><xsl:with-param name="id" select="$thisID" /></xsl:call-template></a></span>
+                               </xsl:if>
+                       </xsl:for-each>
+               </xsl:variable>
+               <xsl:if test="string($found) and string($thisName)">
+                       <xsl:call-template name="drawRelationsBox">
+                               <xsl:with-param name="style" select="$box" />
+                               <xsl:with-param name="title" select="$thisName" />
+                               <xsl:with-param name="content" select="$found" />
+                       </xsl:call-template>
+               </xsl:if>
+       </xsl:for-each> 
+</xsl:template>
+
+<xsl:template name="getAllBlogs">
+       <xsl:param name="currentID"/>
+       <xsl:param name="notraverse"/>
+       
+       <xsl:variable name="parentID">
+               <xsl:call-template name="getParent">
+                       <xsl:with-param name="currentID" select="$currentID" />
+               </xsl:call-template>
+       </xsl:variable>
+       <xsl:choose>
+               <xsl:when test="string($notraverse)">
+                       <xsl:variable name="theseOnes" select="$topics[instanceOf/topicRef/@xlink:href='#blog']" />
+                       <xsl:variable name="assoc" select="$associations[instanceOf/topicRef/@xlink:href='#group-subgroup'][member/topicRef/@xlink:href=concat('#',$currentID)]/member[roleSpec/topicRef/@xlink:href='#child']/topicRef" />
+                       <div class="doc">
+                               <xsl:for-each select="$theseOnes">
+                                       <xsl:variable name="ct" select="." />
+                                       <xsl:for-each select="$assoc">
+                                               <xsl:variable name="ca" select="." />
+                                               <xsl:variable name="t" select="substring-after($ca/@xlink:href, '#')" />
+                                               <xsl:if test="$t = $ct/@id">
+                                                       <xsl:variable name="currentDate" select="$ct/occurrence[instanceOf/topicRef/@xlink:href='#blog-date']/resourceData" />
+                                                       <div class="blogDate"><xsl:value-of select="$currentDate" /></div>
+                                                       <xsl:call-template name="displayBlogItem">
+                                                               <xsl:with-param name="item" select="$ct" />
+                                                       </xsl:call-template>
+                                               </xsl:if>
+                                       </xsl:for-each>
+                               </xsl:for-each>
+                       </div>
+               </xsl:when>
+               <xsl:otherwise>
+                       <xsl:variable name="items" select="$topics[instanceOf/topicRef/@xlink:href='#blog']" />
+                       <xsl:call-template name="traverseBlog">
+                               <xsl:with-param name="items" select="$items[position() &lt; 6]" />
+                               <xsl:with-param name="currentNo" select="'1'" />
+                       </xsl:call-template>
+               </xsl:otherwise>
+       </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="traverseBlog">
+       <xsl:param name="items" />
+       <xsl:param name="currentNo" />
+       <xsl:param name="previousDate" />
+       
+       <xsl:variable name="item" select="$items[position() = $currentNo]" />
+
+       <xsl:variable name="currentDate" select="$item/occurrence[instanceOf/topicRef/@xlink:href='#blog-date']/resourceData" />
+
+       <xsl:if test="string($currentDate)">
+       
+               <xsl:if test="string($previousDate) = string($currentDate)">
+                       <div class="blogEnd"> </div>
+               </xsl:if>
+               
+               <xsl:if test="$previousDate != $currentDate">
+                       <div class="blogDate"><xsl:value-of select="$currentDate" /></div>
+               </xsl:if>
+               
+               <xsl:call-template name="displayBlogItem">
+                       <xsl:with-param name="item" select="$item" />
+               </xsl:call-template>
+               
+               <xsl:if test="string($items[position() = $currentNo+1])">
+                       <xsl:call-template name="traverseBlog">
+                               <xsl:with-param name="items" select="$items" />
+                               <xsl:with-param name="currentNo" select="$currentNo + 1" />
+                               <xsl:with-param name="previousDate" select="$currentDate" />
+                       </xsl:call-template>
+               </xsl:if>
+       
+       </xsl:if>
+       
+</xsl:template>
+
+<xsl:template name="displayBlogItem">
+       <xsl:param name="item" />
+       
+       <xsl:variable name="currentHeader" select="$item/baseName/baseNameString" />
+       <xsl:variable name="currentDate" select="$item/occurrence[instanceOf/topicRef/@xlink:href='#blog-date']/resourceData" />
+       <xsl:variable name="currentLink" select="$item/occurrence[instanceOf/topicRef/@xlink:href='#blog-link']/resourceData" />
+       <xsl:variable name="currentShort" select="$item/occurrence[instanceOf/topicRef/@xlink:href='#blog-short']/resourceData" />
+       
+       <div class="blogItem">
+               <xsl:if test="string($currentHeader)"><div class="blogHeader"><xsl:value-of select="$currentHeader" /></div></xsl:if>
+               
+               <xsl:variable name="fileName">../content/<xsl:value-of select="$item/@id" />.xml</xsl:variable>
+               <xsl:variable name="this" select="document($fileName)/div/*" />
+               <xsl:apply-templates select="$this"><xsl:with-param name="currentID" select="$item/@id" /></xsl:apply-templates>
+               
+               <xsl:if test="string($currentLink)"><div class="blogLinkBox">Read the full story at &lt; <a href="{$currentLink}"><xsl:value-of select="$currentHeader" /></a> &gt;</div></xsl:if>
+
+               <xsl:variable name="theseOnes" select="$associations[instanceOf/topicRef/@xlink:href='#group-subgroup'][member/topicRef/@xlink:href=concat('#',$item/@id)]/member[roleSpec/topicRef/@xlink:href='#parent']" />
+
+               <span class="blogLinks"><a href="{$item/@id}.html" class="blogLink">Permalink</a>added <strong><xsl:value-of select="$currentDate" /></strong>.</span> 
+               
+               <xsl:if test="count($theseOnes) &gt; 0">
+                       <span class="blogLinks">
+                               Catalogued under:
+                               <xsl:for-each select="$theseOnes">
+                                       <xsl:variable name="chug" select="substring-after(topicRef/@xlink:href, '#')" />
+                                       <a href="{$pre-link}{$chug}{$post-link}" class="blogLink"><xsl:call-template name="getTopicName"><xsl:with-param name="id" select="$chug" /></xsl:call-template> </a>
+                               </xsl:for-each>
+                       </span>
+               </xsl:if>
+               
+       </div>
+       
+</xsl:template>
+
+
+</xsl:stylesheet>
diff --git a/styles/vym.css b/styles/vym.css
new file mode 100644 (file)
index 0000000..4dcc562
--- /dev/null
@@ -0,0 +1,112 @@
+html                  { font-family:arial,sans-serif; }
+body                  { margin:0; padding:10px; font-family:arial,sans-serif; align:center;  background-color:#ffffff; }
+
+
+
+a, a:visited, a:link, a:active
+                      { color:#666666; text-decoration:none; }
+a:hover               { text-decoration:underline; }
+
+/* VYM specific elements*/
+
+.vym-header{ 
+       width:96%; 
+       padding:2%; 
+       margin-bottom:10px; 
+       border:solid 1px black; 
+       background-color:#f0f0f0; 
+       text-align:center; 
+       vertical-align:center;
+       font-size: 2em;
+}
+.vym-imagemap{
+       width:96%; 
+       padding:2%; 
+       margin-bottom:10px; 
+       border: 0px; 
+       text-align:center; 
+       vertical-align:center;
+}
+.imagemap{
+       border: 0px; 
+}
+.vym-BoxBottom { 
+       padding:10px; 
+       font-size:0.7em; 
+       border:solid 1px black; 
+       margin:0; 
+       background-color:#f0f0f0; 
+}
+.vym-BoxBottomR                
+{ 
+       padding-top:1em; 
+       color:#676767; 
+       text-align:right; 
+}
+.vym-footer { 
+       width:100%; 
+       border:1;
+}
+.vym-footerL { font-size:0.7em; color:#676767; text-align:left; }
+.vym-footerC { font-size:0.7em; color:#676767; text-align:center; }
+.vym-footerR { font-size:0.7em; color:#676767; text-align:right; }
+
+.vym-url {} 
+
+.vym-branch0 { 
+       color:#000000;  
+       font-size: x-large;
+       font-weight: bold;
+}
+.vym-branch1{
+       font-size: normal;
+       font-weight: normal;
+}
+.vym-branch2{
+       font-size: small;
+       font-weight: normal;
+}
+.vym-branch3{
+       font-size: small;
+       font-weight: normal;
+}
+.vym-branch4{
+       font-size: small;
+       font-weight: normal;
+}
+.vym-branch5{
+       font-size: small;
+       font-weight: normal;
+}
+.vym-branch6{
+       font-size: small;
+       font-weight: normal;
+}
+.vym-branch7{
+       font-size: small;
+       font-weight: normal;
+}
+
+.vym-htmlnote{ 
+       width:96%; 
+       border: solid 1px black; 
+       border-color: #000000;
+       background-color: #eeeeee; 
+       font-size: small;
+       font-weight: normal;
+       padding: 5px;
+}
+
+.vym-note { 
+       width:100%; 
+       border: solid 1px black; 
+       border-color: #000000;
+       background-color: #eeeeee; 
+       font-size: small;
+       font-weight: normal;
+}
+
+.standardflag { 
+       margin-left: 5px; 
+}
+
diff --git a/styles/vym2html.xsl b/styles/vym2html.xsl
new file mode 100644 (file)
index 0000000..a85095b
--- /dev/null
@@ -0,0 +1,439 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!--
+    Document   : vym2html.xsl
+    Created on : 20040313
+       Modified   : 20040512,20040622  Uwe Drechsel
+       Version    : 0.7
+    Author     : Clemens Kraus (http://www.clemens-kraus.de)
+    Description: transforms vym-files into html format.
+    
+       Hint:
+       tm.xsl and cm.xsl were taken from Alexander Johannesen's 
+       beautiful xSiteable content management system: 
+               http://xsiteable.org
+       and are used with kind permission
+-->
+
+       
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+       <!-- Include external stylesheets -->
+       <xsl:include href="tm.xsl" />
+       <xsl:include href="cm.xsl" />
+  
+       <!-- Settings and parameters -->
+       <xsl:output method="html" indent="no" encoding="UTF-8"/> 
+       <xsl:param name="filenamep" />
+       <xsl:param name="wikistylep" />
+       <xsl:param name="genimagep" />
+       <xsl:param name="imageonlyp" />
+       <xsl:param name="stylesheetp" />
+       <xsl:param name="urlHeadingp" />
+       <xsl:param name="urlImagep" />
+       <xsl:variable name="filename" select="$filenamep"/>
+       <xsl:variable name="wikistyle" select="$wikistylep"/>
+       <xsl:variable name="genimage" select="$genimagep"/>
+       <xsl:variable name="imageonly" select="$imageonlyp"/>   
+       <xsl:variable name="stylesheet" select="$stylesheetp"/>
+       <xsl:variable name="topics" select="//item" /> 
+       <xsl:variable name="urlHeading" select="$urlHeadingp"/> 
+       <xsl:variable name="urlImage" select="$urlImagep"/> 
+
+       <xsl:variable name="level" select="'0'"/>                       
+       <xsl:variable name="contentlist" select="false()"/> 
+
+  
+       <xsl:variable name="fn" >
+               <xsl:call-template name="getfn" >
+                       <xsl:with-param name="txt" select="$filename" />
+               </xsl:call-template>
+       </xsl:variable>
+
+       <xsl:variable name="path" >
+         <xsl:value-of select="normalize-space( substring($filename, 1, number(string-length($filename)-string-length($fn))) )" />
+       </xsl:variable>
+
+       <xsl:variable name="stylesheetn" >
+       <xsl:call-template name="getfn" >
+               <xsl:with-param name="txt" select="$stylesheet" />
+       </xsl:call-template>
+       </xsl:variable><!-- path -->
+
+
+
+       <!-- Beginning of transformation here -->
+       <xsl:template match="/">
+       <xsl:variable name="mapversion" select="vymmap/@version"/>
+       <xsl:variable name="header" >
+               <xsl:call-template name="getheading" >
+                       <xsl:with-param name="txt" select="vymmap/mapcenter/heading" />
+               </xsl:call-template>
+       </xsl:variable><!-- header -->
+               
+       <!-- Write head of HTML document -->  
+       <xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">]]>&#xA;</xsl:text>
+       <html><xsl:text>&#xA;</xsl:text>
+               <head><xsl:text>&#xA;</xsl:text>
+                       <title><xsl:value-of select="$header"/></title>
+                       <xsl:text disable-output-escaping="yes">&#xA;<![CDATA[<link href="]]></xsl:text>
+                       <xsl:value-of select="$stylesheetn"/>
+                       <xsl:text disable-output-escaping="yes"><![CDATA[" rel="stylesheet" id="]]></xsl:text>
+                       <xsl:value-of select="$stylesheetn"/>
+                       <xsl:text disable-output-escaping="yes"><![CDATA[">]]>&#xA;</xsl:text>
+                       <meta name="generator" content="vym (http://www.insilmaril.de/vym/) and vym2html.xsl (http://www.clemens-kraus.de)"/><xsl:text>&#xA;</xsl:text>
+               </head>
+               <xsl:text>&#xA;</xsl:text>
+
+               <!-- Write body of HTML document -->  
+               <body>
+                       <!-- vym title box at top of page -->
+                       <xsl:text>&#xA;</xsl:text>
+                       <div class="vymTitleBox">
+                               <xsl:value-of select="$header"/>
+                       </div>
+
+                       <!-- Include image of map, if wanted -->
+                       <xsl:if test="$genimage != ''">
+                               <xsl:variable name="image" select="concat($fn, '.png')" />
+
+                               <div class="vymImageMap">
+                                       <img src="images/{$image}" 
+                                               border="0" 
+                                               usemap="#vymmap"
+                                               alt="vymmap">
+                                       </img>
+                               </div>
+                               <xsl:text>&#xA;</xsl:text>
+
+                               <!-- Generate image map by a first walk through all branches -->
+                               <map name="vymmap">
+                                       <xsl:apply-templates select="vymmap/mapcenter/branch">
+                                               <xsl:with-param name="genarea" select="true()"/>
+                                               <xsl:with-param name="imageonly" select="$imageonly"/>
+                                       </xsl:apply-templates>
+                               </map>
+
+                               <xsl:text>&#xA;</xsl:text>
+                       </xsl:if>
+
+                       <!-- Include note of mapcenter here -->
+                       <xsl:apply-templates select="vymmap/mapcenter/note/@href"/>
+
+
+                       <!-- Include all the branches, if not only image is wanted-->
+                       <xsl:if test="$imageonly = ''">
+                               <xsl:apply-templates select="vymmap/mapcenter/branch">
+                                       <xsl:with-param name="genarea" select="false()"/>
+                                       <xsl:with-param name="imageonly" select="$imageonly"/>
+                                       <xsl:with-param name="depth" select="0"/>
+                               </xsl:apply-templates>
+                       </xsl:if>
+
+                       <!-- Box at bottom of page, containing comment and author -->
+                       <div class="vymBoxBottom">
+                               <xsl:value-of select="vymmap/@comment"/>
+                               <div class="vymBoxBottomR">
+                                       <xsl:value-of select="vymmap/@author"/>
+                               </div>
+                       </div>
+
+                       <!-- Footer containing filename, date, selfpromotion -->
+                       <table class="vymFooter">
+                               <tr>
+                                       <td class="vymFooterL">
+                                               <xsl:value-of select="$fn"/>.vym
+                                       </td>
+                                       <td class="vymFooterC">
+                                               <xsl:value-of select="vymmap/@date"/>
+                                       </td>
+                                       <td class="vymFooterR">
+                                               vym <xsl:value-of select="$mapversion"/> 
+                                       </td>  
+                               </tr>
+                       </table>
+
+               </body>&#xA;
+       </html>&#xA;
+       </xsl:template><!-- Beginning of tranformation, "/" template -->
+
+       
+       <!-- Main Function generating a branch  -->
+       <xsl:template match="branch">
+               <!-- Work a branch twice: a) make id for anchors, b) make output -->
+               <xsl:param name="genarea"/>
+               <xsl:param name="imageonly"/>
+               <xsl:param name="depth"/>
+               <xsl:if test="$genarea">
+                       <!-- Generate id's and anchors, no output yet -->
+                       <xsl:if test="(@x1 != '' and @y1 != '' and @x2 != '' and @y2 != '') and not(../@scrolled = 'yes')">
+                               <!-- Heading is used in ALT field of anchor -->
+                               <xsl:variable name="header">
+                                       <xsl:call-template name="getheading" >
+                                               <xsl:with-param name="txt" select="heading" />
+                                       </xsl:call-template>
+                               </xsl:variable>
+
+                               <xsl:if test="($imageonly and @url) or ($imageonly and @vymLink) or $imageonly=''">
+                                       <area>
+                                       <xsl:attribute name="shape">
+                                               <xsl:text>rect</xsl:text>
+                                       </xsl:attribute>
+                                       <xsl:attribute name="coords">
+                                               <xsl:value-of select="@x1"/>
+                                               <xsl:text>,</xsl:text>
+                                               <xsl:value-of select="@y1"/>
+                                               <xsl:text>,</xsl:text>
+                                               <xsl:value-of select="@x2"/>
+                                               <xsl:text>,</xsl:text>
+                                               <xsl:value-of select="@y2"/>
+                                       </xsl:attribute>
+                                       <xsl:attribute name="href">
+                                               <xsl:if test="$imageonly = ''">
+                                                       <xsl:text>#</xsl:text>
+                                                       <xsl:value-of select="generate-id(.)"/>
+                                               </xsl:if>
+                                               <xsl:if test="$imageonly and @url">
+                                                       <xsl:value-of select="@url"/>
+                                               </xsl:if>
+                                               <xsl:if test="$imageonly and @vymLink">
+                                                       <xsl:value-of select="concat( substring-before(@vymLink, '.vym'), '.html')"/>
+                                               </xsl:if>
+                                       </xsl:attribute>
+                                       <xsl:attribute name="alt">
+                                               <xsl:value-of select="$header"/>
+                                       </xsl:attribute>
+                                       <xsl:attribute name="title">
+                                               <xsl:value-of select="$header"/>
+                                       </xsl:attribute>
+                                       </area>
+                                       <xsl:text>&#xA;</xsl:text>
+                               </xsl:if>
+                       </xsl:if> <!--generating id's and anchors -->
+
+                       <xsl:apply-templates select="branch">
+                               <xsl:with-param name="genarea" select="true()"/>
+                               <xsl:with-param name="imageonly" select="$imageonly"/>
+                               <xsl:with-param name="depth" select="$depth +1"/>
+                       </xsl:apply-templates>
+               </xsl:if><!--genarea-->
+
+               
+               <xsl:if test="$imageonly = ''">
+                       <xsl:if test="not($genarea)">
+                               <xsl:call-template name="anchor">
+                                       <xsl:with-param name="depth" select="$depth"/>
+                               </xsl:call-template>
+                               <xsl:text>&#xA;</xsl:text>
+                       </xsl:if>
+               </xsl:if>
+       </xsl:template><!--branch-->
+
+
+
+       <xsl:template name="anchor">
+               <xsl:param name="depth"/>
+               <xsl:if test="$depth=0"> 
+                       <hr />
+                       <xsl:call-template name="gen-anchor-tag">
+                               <xsl:with-param name="depth" select="$depth"/>
+                       </xsl:call-template>
+                               <xsl:if test="count(descendant::branch)">
+                                       <ul>
+                                       <xsl:apply-templates select="branch">
+                                               <xsl:with-param name="genarea" select="false()"/>
+                                               <xsl:with-param name="depth" select="$depth+1"/>
+                                       </xsl:apply-templates>
+                                       </ul>
+                               </xsl:if>       
+               </xsl:if>
+
+       <xsl:if test="$depth > 0">
+                       <li>
+                               <xsl:call-template name="gen-anchor-tag">
+                                       <xsl:with-param name="depth" select="$depth"/>
+                               </xsl:call-template>
+                               <xsl:if test="count(descendant::branch)">
+                                       <ul>
+                                       <xsl:apply-templates select="branch">
+                                               <xsl:with-param name="genarea" select="false()"/>
+                                               <xsl:with-param name="depth" select="$depth+1"/>
+                                       </xsl:apply-templates>
+                                       </ul>
+                               </xsl:if>       
+                       </li>
+               </xsl:if>
+       </xsl:template><!--anchor-->
+
+
+       <xsl:template name="gen-anchor-tag">
+               <xsl:param name="depth"/>
+
+               <xsl:variable name="header">
+                       <xsl:call-template name="getheading" >
+                       <xsl:with-param name="txt" select="heading" />
+                       </xsl:call-template>
+               </xsl:variable><!--header-->
+
+               <div class="vymBranch{$depth}">
+                       <xsl:if test="not($genimage = '')">
+                               <a name="{generate-id(.)}"></a>
+                       </xsl:if>
+
+                       <!-- start header -->
+                       <xsl:value-of select="$header"/>
+
+                       <!-- Include flags -->
+                       <xsl:apply-templates select="./standardFlag" />
+
+                       <!-- URL to external document  -->
+                       <xsl:if test="@url != ''">
+                               <p class="vymURL">
+                               <xsl:element name="a">
+                                       <xsl:attribute name="href">
+                                               <xsl:value-of select="@url"/>
+                                       </xsl:attribute>
+                                       <xsl:if test="$urlImage= 'yes'">
+                                               <img src="flags/url.png" 
+                                                       border="0" 
+                                                       valign="middle"
+                                                       alt="URL">
+                                               </img>
+                                       </xsl:if>
+                                       <xsl:if test="$urlImage!= 'yes'">
+                                               <xsl:text>&gt; </xsl:text>
+                                       </xsl:if>
+                                       <xsl:if test="$urlHeading = 'yes'">
+                                               <xsl:value-of select="$header"/>
+                                       </xsl:if>
+                                       <xsl:if test="$urlHeading != 'yes'">
+                                               <xsl:value-of select="@url"/>
+                                       </xsl:if>
+                               </xsl:element>
+                               </p>
+                       </xsl:if><!-- URL to ext. doc -->
+                       <xsl:text>&#xA;</xsl:text>
+               </div>
+
+               <xsl:apply-templates select="note/@href"/>
+
+               <xsl:text>&#xA;</xsl:text>
+       </xsl:template><!--gen-anchor-tag-->
+
+
+       <xsl:template match="standardFlag">
+               <xsl:variable name="flag" select="concat(., '.png')" />
+               <img src="flags/{$flag}" valign="middle" border="0" alt="{$flag}">
+               </img>
+
+       </xsl:template><!--standardFlag-->
+
+
+       <xsl:template match="note/@href">
+               <div class="vymNote">
+               <xsl:variable name="actualnotename">
+                       <xsl:value-of select="substring-after(current(),':')"/>
+               </xsl:variable>
+
+               <xsl:variable name="note-name">
+                       <xsl:if test="$path = ''">
+                               <xsl:value-of select="$actualnotename"/>
+                       </xsl:if>
+                       <xsl:if test="not($path = '')">
+                               <xsl:value-of select="concat($path, '/', $actualnotename)"/>
+                       </xsl:if>
+               </xsl:variable><!--note-name-->
+
+
+               <xsl:if test="../@fonthint = 'fixed'">
+                       <xsl:text disable-output-escaping="yes">&lt;pre></xsl:text>
+               </xsl:if>
+
+               <xsl:variable name="currentID" select="@id" />
+
+               <xsl:apply-templates select="document($note-name)/note">
+                       <xsl:with-param name="currentID" select="$currentID" />
+               </xsl:apply-templates>
+
+               <xsl:if test="../@fonthint = 'fixed'">
+                       <xsl:text disable-output-escaping="yes">&lt;/pre></xsl:text>
+               </xsl:if>
+
+               </div>
+       </xsl:template><!--note/@href-->
+
+
+  
+<!--   Wiki-style notation overview:
+               Lines:
+               + Big headlines start with the '+' character.
+               - Small headlines start with the '-' character.
+               Normal text doesn't have any starting notation.
+               ! Notes start with an exclamation.
+               . Indented text starts with a dot.
+               ? Questions start with a question-mark, and
+               = Answers starts with the equal-sign.
+               * Points for a item-list
+               # clues
+               
+               Links:
+               use "{...}" or {(Clemens homepage) http://www.clemens-kraus.de/} for external links.
+               
+               Markup:
+               |This is bold| text, while |/this text is italic|, |*this is pre-formatted|, and |!this is a note|
+       -->
+  
+       <xsl:template match="note">
+               <xsl:param name="currentID"/>
+
+
+               <xsl:call-template name="doLine">
+                       <xsl:with-param name="content" select="concat(translate(.,$crlf,$controlCharacter), $controlCharacter)"/>
+                       <xsl:with-param name="currentID" select="$currentID"/>
+               </xsl:call-template>
+       </xsl:template><!--note-->
+
+         
+  
+  
+  
+       <xsl:template name="getfn">
+               <xsl:param name="txt" select="." />
+
+               <xsl:choose>
+                       <xsl:when test="contains($txt, '/')" >
+                               <xsl:variable name="right" select="substring-after($txt, '/')" />
+                               <xsl:if test="string-length($right)>1" >
+                                       <xsl:call-template name="getfn" >
+                                               <xsl:with-param name="txt" select="$right" />
+                                       </xsl:call-template>
+                               </xsl:if>
+                       </xsl:when>
+                       <xsl:otherwise>
+                               <xsl:value-of select="$txt" />
+                       </xsl:otherwise>
+               </xsl:choose>
+       </xsl:template><!--getfn-->
+
+  
+       <!-- Take care of br's  (WHY?)  --> 
+       <xsl:template name="getheading">
+               <xsl:param name="txt" select="." />
+               <xsl:variable name="br">
+                       <xsl:text disable-output-escaping="yes">&lt;br&gt;</xsl:text>
+               </xsl:variable>
+               <xsl:choose>
+                       <xsl:when test="contains($txt, $br)" >
+                               <xsl:variable name="right" select="substring-after($txt, $br)" />
+                               <xsl:variable name="left" select="substring-before($txt, $br)" />
+                               <xsl:value-of select="concat( $left, ' ', $right )" />
+                       </xsl:when>
+                       <xsl:otherwise>
+                               <xsl:value-of select="$txt" />
+                       </xsl:otherwise>
+               </xsl:choose>
+       </xsl:template><!--getheading-->
+  
+</xsl:stylesheet>
+
diff --git a/styles/vym2kdebookmarks.xsl b/styles/vym2kdebookmarks.xsl
new file mode 100644 (file)
index 0000000..0c6cede
--- /dev/null
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE xsl:stylesheet
+[
+   <!-- Namespace for XHTML -->
+   <!ENTITY xhtmlns "http://www.w3.org/1999/xhtml">
+]>
+
+<!--
+    Author      : Uwe Drechsel  <vym@InSilmaril.de>
+       Credits to  : Thomas Schraitle for his patience in explaining XSL to me
+    Description : transforms vym maps into KDE Bookmarks
+-->
+
+<xsl:stylesheet version="1.0"
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:date="http://exslt.org/dates-and-times"
+    extension-element-prefixes="date">
+
+
+<xsl:output method="xml"
+    doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
+    doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
+    encoding="UTF-8"
+    indent="yes"
+    media-type="application/xhtml+xml"/>
+
+<!-- ======================================= -->
+
+<xsl:template match="/">
+  <xsl:apply-templates/>
+</xsl:template>
+
+
+<xsl:template match="text()"/>
+
+
+<xsl:template match="vymmap">
+  <xbel>
+    <xsl:apply-templates/>
+  </xbel>
+</xsl:template>
+
+
+<xsl:template match="mapcenter">
+
+  <xsl:apply-templates/>
+</xsl:template>
+
+
+<xsl:template match="branch">
+   <xsl:choose>
+     <xsl:when test="heading='KDE'">
+        <xsl:apply-templates select="branch" mode="kde"/>
+     </xsl:when>
+     <xsl:when test=". = 'Firefox'">
+        <xsl:apply-templates mode="firefox"/>
+     </xsl:when>
+     <!-- ... -->
+     <xsl:otherwise>
+       <xsl:apply-templates/>
+     </xsl:otherwise>
+   </xsl:choose>
+
+  <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="heading" mode="kde">
+      <title>          
+      <xsl:value-of select="normalize-space (.)"/>
+         </title>
+
+   <xsl:choose>
+     <xsl:when test=". = 'KDE'">
+        <xsl:apply-templates mode="kde"/>
+     </xsl:when>
+     <xsl:otherwise>
+       <xsl:apply-templates/>
+     </xsl:otherwise>
+   </xsl:choose>
+
+  <xsl:apply-templates/>
+</xsl:template>
+
+
+<xsl:template match="branch" mode="kde">
+       <xsl:choose>
+               <xsl:when test="@url">
+                       <xsl:element name="bookmark">   
+                               <xsl:attribute name="href" ><xsl:value-of select="@url" />
+                               </xsl:attribute>
+                               <xsl:apply-templates mode="kde"/>
+                       </xsl:element>
+               </xsl:when>
+               <xsl:otherwise>
+                       <xsl:choose>
+                               <xsl:when test="contains(heading,'***')">
+                                       <separator folded="yes" />
+                               </xsl:when>
+                               <xsl:otherwise>
+                                       <folder folded="yes" icon="bookmark_folder">
+                                               <xsl:apply-templates mode="kde"/>
+                                       </folder>
+                               </xsl:otherwise>
+                       </xsl:choose>   
+
+       </xsl:otherwise>
+       </xsl:choose>
+</xsl:template>
+
+<!--
+                 <xsl:text>&#10;</xsl:text>
+
+                               <xsl:message> WARNING: No @url attribute given of "<xsl:value-of select="normalize-space(heading)"/>"</xsl:message>
+
+<xsl:template match="branch">
+  <xsl:choose>
+    <xsl:when test="@url">
+      <xsl:text> *nokde* </xsl:text>
+      <xsl:value-of select="@url"/>
+      <xsl:text>&#10;</xsl:text>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:message> WARNING: No @url attribute given of "<xsl:value-of select="normalize-space(heading)"/>"</xsl:message>
+    </xsl:otherwise>
+  </xsl:choose>
+
+  <xsl:apply-templates/>
+
+</xsl:template>
+-->
+
+
+</xsl:stylesheet>
diff --git a/styles/vym2taskjuggler.xsl b/styles/vym2taskjuggler.xsl
new file mode 100644 (file)
index 0000000..171d3f3
--- /dev/null
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xsl:stylesheet name="VYM_TaskJuggler" version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<xsl:output method="text"/>
+<xsl:template match="node()">
+       <xsl:apply-templates/>
+</xsl:template>
+<xsl:template match="/vymmap/mapcenter">
+project <xsl:value-of select="translate(heading, ' ', '_')"/> "<xsl:value-of select="heading"/>" "1.0" 2002-01-16 2002-05-28 {
+  # Pick a day during the project that will be reported as 'today' in
+  # the project reports. If not specified the current day will be
+  # used, but this will likely be ouside of the project range, so it
+  # can't be seen in the reports.
+  now 2002-03-05-13:00
+  # Hide the clock time. Only show the date.
+  timeformat "%Y-%m-%d"
+  # The currency for all money values is U.S. Dollars.
+  currency "USD"
+
+  # We want to compare the planned scenario, to one with the actual
+  # scenario
+  scenario plan "Planned" {
+    scenario actual "Actual"
+  }
+}
+# The daily default rate of all resources. This can be overriden for each
+# resource. We specify this, so that we can do a good calculation of
+# the costs of the project.
+rate 310.0
+
+# This is one way to form teams
+macro allocate_developers [
+  allocate dev1
+  allocate dev2 { limits { dailymax 4h } }
+  allocate dev3
+]
+
+flags team
+
+resource dev "In House" {
+  resource dev1 "Some Guy" { rate 330.00 }
+  resource dev2 "Some Other Guy"
+  resource dev3 "Some Last Guy on Vacation" { vacation 2002-02-01 - 2002-02-05 }
+
+  flags team
+}
+
+resource misc "Outsource" {
+  resource test "Out Sourcer1" { limits { dailymax 6.4h } rate 240.00 }
+  resource doc  "Out Source2" { rate 280.00 vacation 2002-03-11 - 2002-03-16 }
+
+  flags team
+}
+
+# In order to do a simple profit and loss analysis of the project we
+# specify accounts. One for the development costs, one for the
+# documentation costs and one account to credit the customer payments
+# to.
+account dev "Development" cost
+account doc "Documentation" cost
+account rev "Payments" revenue
+
+# Now we specify the work packages. The whole project is described as
+# a task that contains sub tasks. These sub tasks are then broken down
+# into smaller tasks and so on. The innermost tasks describe the real
+# work and have resources allocated to them. Many attributes of tasks
+# are inherited from the enclosing task. This saves you a lot of
+# writing.
+task  <xsl:value-of select="translate(heading, ' ', '_')"/> "<xsl:value-of select="heading"/>" {
+
+  # All work related costs will be booked to this account unless the
+  # sub tasks specifies it differently.
+  account dev
+
+       <xsl:call-template name="recursive"/>
+
+}
+
+# This task report is for use with the TaskJuggler GUI
+taskreport "Project Overview" {
+  columns start, end, effort, duration, completed, status, note, cost, revenue
+  scenario actual
+}
+
+# A resource report for use with the TaskJuggler GUI
+resourcereport "Resource Usage" {
+  columns effort, freeload, utilization, rate
+  scenario actual
+  hideresource 0
+}
+
+# For conveniance we would like each report to contain links to the
+# other reports. So we declare a macro with a fragment of raw HTML
+# code to be embedded into all the HTML reports.
+macro navbar [
+rawhead
+  '<table align="center" border="2" cellpadding="10"
+    style="background-color:#f3ebae; font-size:105%">
+  <tr>
+    <td><a href="Tasks-Overview.html">Tasks Overview</a></td>
+    <td><a href="Staff-Overview.html">Staff Overview</a></td>
+    <td><a href="Accounting.html">Accounting</a></td>
+    <td><a href="Calendar.html">Calendar</a></td>
+  </tr>
+  <tr>
+    <td><a href="Tasks-Details.html">Tasks Details</a></td>
+    <td><a href="Staff-Details.html">Staff Details</a></td>
+    <td><a href="Status-Report.html">Status Report</a></td>
+    <td><a href="acso.eps">GANTT Chart (Postscript)</a></td>
+  </tr>
+  </table>
+  <br/>'
+]
+
+# As the first report, we would like to have a general overview of all
+# tasks with their computed start and end dates. For better
+# readability we include a calendar like column that lists the effort
+# for each week.
+htmltaskreport "Tasks-Overview.html" {
+  # This report should contain the navigation bar we have declared
+  # above.
+  ${navbar}
+  # The report should be a table that contains several columns. The
+  # task and their information form the rows of the table. Since we
+  # don't like the title of the effort column, we change it to "Work".
+  columns hierarchindex, name, duration, effort { title "Work"},
+          start, end, weekly
+  # For this report we like to have the abbreviated weekday in front
+  # of the date. %a is the tag for this.
+  timeformat "%a %Y-%m-%d"
+
+  # Don't show load values.
+  barlabels empty
+  # Set a title for the report
+  headline "<xsl:value-of select="heading"/> Project"
+  # And a short description what this report is about.
+  caption "This table presents a management-level overview of the project. The values are days or man-days."
+}
+
+# Now a more detailed report that shows all jobs and the people
+# assigned to the tasks. It also features a comparison of the planned
+# and actual scenario.
+htmltaskreport "Tasks-Details.html" {
+  ${navbar}
+  # Now we use a daily calendar.
+  columns no, name, start, end, scenario, daily
+  #start 2002-03-01
+  #end 2002-04-01
+  # Show plan and delayed scenario values.
+  scenarios plan, actual
+  headline "<xsl:value-of select="heading"/> Project - March 2002"
+  caption "This table shows the load of each day for all the tasks.
+  Additionally the resources used for each task are listed. Since the
+  project start was delayed, the delayed schedule differs significantly
+  from the original plan."
+  # Don't hide any resources, that is show them all.
+  hideresource 0
+}
+
+# The previous report listed the resources per task. Now we generate a
+# report the lists all resources.
+htmlresourcereport "Staff-Overview.html" {
+  ${navbar}
+  # Add a column with the total effort per task.
+  columns no, name { cellurl "http://www.tj.org" }, scenario, weekly, effort
+  scenarios plan, actual
+  # Since we want to see the load values as hours per week, we switch
+  # the unit that loads are reported in to hours.
+  loadunit hours
+  headline "Weekly working hours for the <xsl:value-of select="heading"/> Project"
+}
+
+# Now a report similar to the above one but with much more details.
+htmlresourcereport "Staff-Details.html" {
+  ${navbar}
+  columns name, daily, effort
+  # To still keep the report readable we limit it to show only the
+  # data for March 2002.
+  start 2002-01-16
+  end 2002-04-01
+  hidetask 0
+  # The teams are virtual resources that we don't want to see. Since
+  # we have assigned a flag to those virtual resource, we can just
+  # hide them.
+  hideresource team
+  # We also like to have the report sorted alphabetically ascending by
+  # resource name.
+  sortresources nameup
+  loadunit hours
+  headline "Daily working hours for the <xsl:value-of select="heading"/> Project - March 2002"
+}
+
+htmlweeklycalendar "Calendar.html" {
+  ${navbar}
+  headline "Ongoing Tasks - March 2002"
+  start 2002-03-01
+  end 2002-04-01
+}
+
+htmlstatusreport "Status-Report.html" {
+  ${navbar}
+}
+
+# To conclude the HTML reports a report that shows how badly the
+# project is calculated is generated. The company won't get rich with
+# this project. Due to the slip, it actually needs some money from the
+# bank to pay the salaries.
+htmlaccountreport "Accounting.html" {
+  ${navbar}
+  # Besides the number of the account and the name we have a column
+  # with the total values (at the end of the project) and the values
+  # for each month of the project.
+  columns no, name, scenario, total, monthly
+  headline "P&#038;L for the Accounting Software Project"
+  caption "The table shows the profit and loss
+           analysis as well as the cashflow situation of the Accounting
+           Software Project."
+  # Since this is a cashflow calculation we show accumulated values
+  # per account.
+  accumulate
+  scenarios plan, actual
+}
+
+# Finally we generate an XML report that contains all info about the
+# scheduled project. This will be used by tjx2gantt to create a nice
+# Gantt chart of our project.
+xmlreport "<xsl:value-of select="translate(heading, ' ', '_')"/>.tjx" {
+# version 2
+}
+</xsl:template>
+<xsl:template name="recursive">
+       <xsl:for-each select="branch">
+               task <xsl:value-of select="translate(heading, ' ', '_')"/> "<xsl:value-of select="heading"/>" {
+               # I've included all of the Optional Attributes here.
+               # Commented out for your pleasure.      
+               #account
+               #allocate dev1
+               #complete
+               #depends 
+               #duration
+               #effort 20d
+               #endbuffer
+               #endcredit
+               #end, flags
+               #journalentry
+               #length
+               #maxend
+               #maxstart
+               #milestone
+               #minend
+               #minstart
+               #note
+               #precedes
+               #priority
+               #projectid
+               #reference
+               #responsible
+               #scheduled
+               #scheduling
+               #shift
+               #startbuffer
+               #startcredit
+               plan:start 2002-03-05
+               actual:start 2002-03-05
+               #statusnote
+               #supplement
+               <xsl:call-template name="recursive"/>
+               }
+       </xsl:for-each>
+</xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
diff --git a/styles/vym2txt.xsl b/styles/vym2txt.xsl
new file mode 100644 (file)
index 0000000..33777c5
--- /dev/null
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!--
+    Document   : vym2txt.xsl
+    Created on : 20040317
+       Modified   : 20040417
+       Version    : 0.1
+    Author     : Clemens Kraus (http://www.clemens-kraus.de)
+    Description: transforms vym-files into text-format.
+    
+-->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+  <xsl:output method="text" indent="no" encoding="UTF-8"/> 
+  <xsl:param name="filenamep" />
+  <xsl:variable name="filename" select="$filenamep"/>
+  
+  <xsl:variable name="fn" >
+       <xsl:call-template name="getfn" >
+               <xsl:with-param name="txt" select="$filename" />
+       </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:variable name="path" >
+         <xsl:value-of select="normalize-space( substring($filename, 1, number(string-length($filename)-string-length($fn))) )" />
+  </xsl:variable>
+
+
+  <xsl:template match="/">
+  
+    <xsl:text>#VYM-Export VYM-Version:</xsl:text><xsl:value-of select="vymmap/@version"/>
+    <xsl:text>&#xA;&#xA;</xsl:text>
+         
+       
+    <xsl:value-of select="vymmap/mapcenter/heading"/>
+       <xsl:text>&#xA;&#xA;</xsl:text>
+               
+       
+       <xsl:apply-templates select="vymmap/mapcenter/branch" >
+               <xsl:with-param name="indent" select="''" />
+       </xsl:apply-templates>
+
+  </xsl:template>
+
+       
+  
+  
+  <xsl:template match="branch">
+    <xsl:param name="width" select="70" />
+       
+       
+       <xsl:call-template name="gen-anchor-tag" >
+               <xsl:with-param name="indent" select="$indent" />
+       </xsl:call-template>
+         
+       
+       <xsl:apply-templates select="branch" >
+               <xsl:with-param name="indent" select="concat($indent, ' ')" />
+       </xsl:apply-templates>
+
+  </xsl:template>
+
+
+  
+  
+  <xsl:template name="gen-anchor-tag">
+    <xsl:param name="indent"/>
+
+       <xsl:value-of select="$indent"/><xsl:text>- </xsl:text><xsl:value-of select="heading"/>
+
+       
+    <xsl:if test="@url != ''"> (<xsl:value-of select="@url"/>)</xsl:if>
+       
+       
+       <xsl:apply-templates select="note/@href" >
+               <xsl:with-param name="indent" select="$indent" />
+       </xsl:apply-templates>
+
+    <xsl:text>&#xA;</xsl:text>
+  </xsl:template>
+
+
+  
+  
+  
+  <xsl:template match="note/@href">
+    <xsl:param name="indent"/>
+    
+    <xsl:variable name="actualnotename">
+      <xsl:value-of select="substring-after(current(),':')"/>
+    </xsl:variable>
+
+    <xsl:variable name="note-name">
+           <xsl:if test="$path = ''">
+                       <xsl:value-of select="$actualnotename"/>
+               </xsl:if>
+           <xsl:if test="not($path = '')">
+                       <xsl:value-of select="concat($path, '/', $actualnotename)"/>
+               </xsl:if>
+       </xsl:variable>
+       
+       
+       <xsl:variable name="currentID" select="@id" />
+       
+    <xsl:text>&#xA;</xsl:text>
+  
+       <xsl:for-each select="document($note-name)/note/line">
+               <xsl:value-of select="$indent"/><xsl:text>  </xsl:text><xsl:value-of select="."/>
+       </xsl:for-each>
+               
+  </xsl:template>
+
+  
+  
+  
+  
+  <xsl:template name="getfn">
+         <xsl:param name="txt" select="." />
+         
+         <xsl:choose>
+                 <xsl:when test="contains($txt, '/')" >
+                       <xsl:variable name="right" select="substring-after($txt, '/')" />
+                       <xsl:if test="string-length($right)>1" >
+                         <xsl:call-template name="getfn" >
+                                 <xsl:with-param name="txt" select="$right" />
+                         </xsl:call-template>
+                       </xsl:if>
+                 </xsl:when>
+                 <xsl:otherwise>
+                         <xsl:value-of select="$txt" />
+                 </xsl:otherwise>
+         </xsl:choose>
+         
+  </xsl:template>
+  
+</xsl:stylesheet>
+
diff --git a/styles/vym2xhtml.xsl b/styles/vym2xhtml.xsl
new file mode 100644 (file)
index 0000000..7795e90
--- /dev/null
@@ -0,0 +1,507 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE xsl:stylesheet
+[
+   <!-- Namespace for XHTML -->
+   <!ENTITY xhtmlns "http://www.w3.org/1999/xhtml">
+]>
+
+<!--
+    Document    : vym2xhtml.xsl
+    Created     : 20040818
+       Changed         : 20051123
+    License     : GPL
+    Version     : 0.4.0
+    VYM version : 1.7.5
+    Author      : Thomas Schraitle <tom_schr@web.de>
+                                 modified by Clemens Kraus (http://www.clemens-kraus.de)
+    Description : transforms vym-files into XHTML.
+    Bugs        : Many. ;) Produces at the moment not valid XHTML
+                  Needs to checked.
+                                                                       - li/ul structure not ok
+               Changes                 : - <br>s in headings removed
+                                                                       - error fixed in "alt" and "title"
+-->
+
+<xsl:stylesheet version="1.0"
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:date="http://exslt.org/dates-and-times"
+    extension-element-prefixes="date"
+    xmlns="&xhtmlns;">
+
+
+<xsl:output method="xml"
+    doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
+    doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
+    encoding="UTF-8"
+    indent="yes"
+    media-type="application/xhtml+xml"/>
+
+
+
+<!-- ====================================================================== -->
+<!-- 1 = true, 0 = false -->
+
+<!-- URL to CSS stylesheet -->
+<xsl:param name="css.stylesheet" select="'vym.css'"/>
+
+<!-- Should a default CSS stylesheet be used? -->
+<xsl:param name="use.default.css.stylesheet" select="1"/>
+
+<!-- Should textcolors be used? -->
+<xsl:param name="use.textcolor" select="0"/>
+
+<!-- Should an imagemap be generated? -->
+<xsl:param name="use.imagemap" select="1"/>
+
+<!-- URL to image for imagemap -->
+<xsl:param name="imagemap" select="''"/>
+
+<!-- This stylesheet is able to process the following VYM version -->
+<xsl:param name="vym.version" select="'1.7.10'"/>
+
+<!-- Should the VYM XML format be checked -->
+<xsl:param name="checkvym.version" select="1"/>
+
+<!-- Which is the image extension? -->
+<xsl:param name="image.extension" select="'.png'"/>
+
+<!-- Where are the flags? -->
+<xsl:param name="image.flags.path" select="'flags/'"/>
+
+<!-- Filename of the XML document -->
+<xsl:param name="mapname" />
+
+<!-- Should a footer be generated? -->
+<xsl:param name="use.footer" select="1"/>
+
+<!-- How should Links generated:
+    name : Use only the name of the branch (default)
+    url  : Use only the URL of the branch
+    both : Use both
+-->
+<xsl:param name="link.style" select="'name'"/>
+
+<!-- Accept different html-notes? 
+               Only for imported MindManager maps! -->
+<xsl:param name="use.diffnotes" select="0"/>
+
+<!-- Debuggin on/off? -->
+<xsl:param name="debug" select="0"/>
+
+
+<xsl:template name="generate.footer">
+  <xsl:if test="$use.footer">
+      <hr/>
+      <table class="vym-footer">
+         <tr >
+         <td class="vym-footerL"><xsl:value-of select="$mapname"/></td>
+         <td class="vym-footerC"><xsl:value-of select="vymmap/@date"/> </td>
+         <!--<td class="vym-footerC"><xsl:value-of select="date:date()"/></td>-->
+         <td class="vym-footerR">vym <xsl:value-of select="vymmap/@version"/></td>
+         </tr>
+      </table>
+  </xsl:if>
+</xsl:template>
+
+
+
+
+
+<!-- ====================================================================== -->
+<xsl:variable name="head.title">
+   <xsl:choose>
+      <xsl:when test="/vymmap/mapcenter/heading">
+                       
+                               <xsl:variable name="title">
+                                       <xsl:call-template name="gettitle" >
+                                               <xsl:with-param name="txt" select="/vymmap/mapcenter/heading" />
+                                       </xsl:call-template>
+                               </xsl:variable>
+
+        <xsl:value-of select="$title"/>
+      </xsl:when>
+      <xsl:otherwise></xsl:otherwise>
+   </xsl:choose>
+</xsl:variable>
+
+<xsl:variable name="default.css.stylesheet">
+   <xsl:text>
+h1 {border-width: 1; border: solid; text-align: center}
+div.imagemap { align: center; border: 0; }
+   </xsl:text>
+</xsl:variable>
+
+
+<!-- ====================================================================== -->
+<xsl:template name="generate.head">
+   <head>
+      <title><xsl:value-of select="$head.title"/></title>
+      <xsl:if test="$use.default.css.stylesheet">
+         <style type="text/css">
+            <xsl:value-of select="$default.css.stylesheet"/>
+         </style>
+      </xsl:if>
+      <xsl:if test="vymmap/@author!=''">
+         <meta name="author" content="{vymmap/@author}"/>
+      </xsl:if>
+      <xsl:if test="vymmap/@comment!=''">
+         <meta name="comment" content="{vymmap/@comment}"/>
+      </xsl:if>
+      <meta name="generator" content="vym"/>
+      <xsl:if test="$css.stylesheet!=''">
+         <link rel="stylesheet" id="css.stylesheet" href="{$css.stylesheet}"/>
+      </xsl:if>
+   </head>
+</xsl:template>
+
+
+<xsl:template name="check.vym.version">
+   <xsl:if test="$checkvym.version">
+      <xsl:if test="not(/vymmap/@version=$vym.version)">
+         <xsl:message>
+            <xsl:text>&#10;</xsl:text>
+            <xsl:text>  WARNING:</xsl:text>
+            <xsl:text> This stylesheet applies to VYM XML format v.</xsl:text>
+            <xsl:value-of select="$vym.version"/>
+            <xsl:text>.&#10;  Your XML format has v</xsl:text>
+            <xsl:value-of select="/vymmap/@version"/>
+            <xsl:text>.&#10;  Check your HTML output!</xsl:text>
+            <xsl:text>&#10;&#10;</xsl:text>
+         </xsl:message>
+      </xsl:if>
+   </xsl:if>
+</xsl:template>
+
+
+<!-- ====================================================================== -->
+<xsl:template match="*">
+   <xsl:message>
+      <xsl:text>WARNING: Unknown tag "</xsl:text>
+      <xsl:value-of select="local-name(.)"/>
+      <xsl:text>": </xsl:text>
+      <xsl:value-of select="normalize-space(.)"/>
+      <xsl:text>&#10;</xsl:text>
+   </xsl:message>
+</xsl:template>
+
+
+<xsl:template match="/">
+   <xsl:call-template name="check.vym.version"/>
+
+   <html xmlns="&xhtmlns;">
+      <xsl:call-template name="generate.head"/>
+      <body>
+         <xsl:apply-templates/>
+         <xsl:call-template name="generate.footer"/>
+      </body>
+   </html>
+</xsl:template>
+
+
+<xsl:template match="vymmap">
+   <div class="vymmap">
+      <xsl:apply-templates/>
+   </div>
+</xsl:template>
+
+
+<xsl:template match="mapcenter">
+   <div class="mapcenter">
+      <xsl:apply-templates/>
+   </div>
+</xsl:template>
+
+
+<xsl:template match="mapcenter/heading">
+   <div class="vym-header">
+          <xsl:apply-templates/>
+   </div>
+      <xsl:if test="$use.imagemap=1">
+         <div class="vym-imagemap">
+            <img src="{$imagemap}"
+               alt="Imagemap"
+               class="imagemap"
+               usemap="#vym_imagemap"/>
+         </div>
+         <map name="vym_imagemap">
+            <xsl:apply-templates select="../branch" mode="imagemap"/>
+         </map>
+      </xsl:if>
+</xsl:template>
+
+
+<xsl:template match="mapcenter/branch">
+   <hr/>
+   <ul class="branch">
+      <xsl:apply-templates/>
+   </ul>
+</xsl:template>
+
+
+<xsl:template match="branch">
+   <ul class="branch">
+      <xsl:apply-templates/>
+   </ul>
+</xsl:template>
+
+
+<xsl:template match="heading">
+   <li class="heading">
+         <span id="{generate-id(..)}">
+      <xsl:if test="@textColor!='' and $use.textcolor=1">
+         <xsl:attribute name="style" >color: <xsl:value-of select="@textColor" />
+                </xsl:attribute>
+      </xsl:if>
+      <xsl:choose>
+         <xsl:when test="../@url">
+            <xsl:variable name="url" select="../@url"/>
+
+            <!-- Check, how links should be generated -->
+            <xsl:choose>
+               <xsl:when test="$link.style = 'name'">
+                   <a href="{$url}">
+                                               <img src="{concat($image.flags.path,'flag-url-16x16.png')}" border="0" alt="URL"/>
+                                               <xsl:text> </xsl:text>
+                                               <xsl:apply-templates/>
+                                       </a>
+               </xsl:when>
+               <xsl:when test="$link.style = 'url'">
+                                       <a href="{$url}">
+                                               <img src="{concat($image.flags.path,'flag-url-16x16.png')}" border="0" alt="URL"/>
+                                               <xsl:text> </xsl:text>
+                                               <xsl:value-of select="$url"/>
+                                       </a>
+               </xsl:when>
+               <xsl:when test="$link.style = 'both'">
+                  <a href="{$url}">
+                                               <img src="{concat($image.flags.path,'flag-url-16x16.png')}" border="0" alt="URL"/>
+                                               <xsl:text> </xsl:text>
+                                               <xsl:apply-templates/> (<xsl:value-of select="$url"/>)
+                                       </a>
+               </xsl:when>
+               <xsl:otherwise>
+                  <xsl:message>
+                     <xsl:text>WARNING: Parameter link.style doesn't contain the correct</xsl:text>
+                     <xsl:text> value (name|url|both)</xsl:text>
+                     <xsl:text>&#10; was "</xsl:text>
+                     <xsl:value-of select="$link.style"/>
+                     <xsl:text>"</xsl:text>
+                  </xsl:message>
+                  <a href="{$url}"><xsl:apply-templates/></a>
+               </xsl:otherwise>
+            </xsl:choose>
+
+         </xsl:when>
+         <xsl:otherwise>
+                                               <xsl:call-template name="gettitle" >
+                                                       <xsl:with-param name="txt" select="." />
+                                               </xsl:call-template>
+                                               
+         </xsl:otherwise>
+      </xsl:choose>
+
+      <xsl:for-each select="following-sibling::standardflag">
+         <xsl:apply-templates select="current()" mode="standardflag"/><xsl:text> </xsl:text>
+      </xsl:for-each>
+      </span>
+   </li>
+</xsl:template>
+
+
+<xsl:template match="floatimage">
+   <xsl:variable name="filename">
+      <xsl:choose>
+         <xsl:when test="contains(@href,':')">
+            <xsl:value-of select="substring-after(@href,':')"/>
+         </xsl:when>
+         <xsl:otherwise>
+            <xsl:value-of select="@href"/>
+         </xsl:otherwise>
+      </xsl:choose>
+   </xsl:variable>
+   
+  <xsl:if test="@floatExport='true'">
+      <span><img src="{$filename}" alt="{$filename}"/></span>
+  </xsl:if>
+</xsl:template>
+
+
+<xsl:template match="standardflag"/><!-- Do nothing in normal mode -->
+
+<xsl:template match="standardflag" mode="standardflag">
+   <span class="standardflag">
+      <xsl:element name="img">
+         <xsl:variable name="_srcimg">
+         <xsl:choose>
+            <xsl:when test="$image.flags.path">
+               <xsl:value-of select="concat($image.flags.path,
+                  .,
+                  $image.extension)"/>
+            </xsl:when>
+            <xsl:otherwise>
+               <xsl:value-of select="concat(., $image.extension)"/>
+            </xsl:otherwise>
+         </xsl:choose>
+         </xsl:variable>
+         <xsl:attribute name="src">
+            <xsl:value-of select="$_srcimg"/>
+         </xsl:attribute>
+         <xsl:attribute name="alt">
+            <xsl:value-of select="$_srcimg"/>
+         </xsl:attribute>
+      </xsl:element>
+   </span>
+</xsl:template>
+
+<!-- Do nothing! -->
+<xsl:template match="select"/>
+<xsl:template match="setting"/>
+
+
+<xsl:template match="htmlnote">
+   <div class="vym-htmlnote">
+                       <xsl:choose>
+                               <xsl:when test="$use.diffnotes=1">
+               <xsl:copy-of select="."/>
+                               </xsl:when>
+                               <xsl:otherwise>
+                                       <xsl:apply-templates select=".//body/*"/><!-- Select only body elements -->
+                               </xsl:otherwise>
+                       </xsl:choose>
+   </div>
+</xsl:template>
+
+<!-- Do nothing! We don't need some informational elements -->
+<xsl:template match="htmlnote/html/*"/>
+
+<xsl:template match="htmlnote/html/body">
+   <xsl:copy-of select="."/>
+</xsl:template>
+
+<xsl:template match="htmlnote/html/body/*">
+   <xsl:copy-of select="."/>
+</xsl:template>
+
+
+<!-- ====================================================================== -->
+<xsl:template match="branch" mode="imagemap"> 
+   <xsl:param name="node"/> 
+   <xsl:variable name="title"> 
+      <xsl:apply-templates mode="imagemap"/> 
+   </xsl:variable> 
+   <xsl:if test="$debug=1"> 
+      <xsl:message> 
+      branch/heading = "<xsl:value-of select="normalize-space($title)"/>" 
+      </xsl:message> 
+   </xsl:if> 
+   <area shape="rect"> 
+      <xsl:attribute name="href"> 
+         <xsl:choose><!-- Fix begin (!) --> 
+            <xsl:when test="$imagemap != ''"> 
+               <xsl:value-of select="concat('#', generate-id(.))"/> 
+            </xsl:when> 
+            <xsl:when test="$imagemap and @url"> 
+               <xsl:value-of select="@url"/> 
+            </xsl:when> 
+            <xsl:when test="$imagemap and @vymLink"> 
+               <xsl:value-of select="concat( substring-before(@vymLink, 
+'.vym'), '.html')"/> 
+            </xsl:when> 
+         </xsl:choose><!-- Fix end --> 
+      </xsl:attribute> 
+      <xsl:attribute name="alt"> 
+                                <xsl:call-template name="gettitle" >
+                                       <xsl:with-param name="txt" select="heading" />
+                                </xsl:call-template>
+      </xsl:attribute> 
+      <xsl:attribute name="title"> 
+                               <xsl:call-template name="gettitle" >
+                                       <xsl:with-param name="txt" select="heading" />
+                               </xsl:call-template>
+      </xsl:attribute> 
+      <xsl:attribute name="coords"> 
+         <xsl:choose> 
+            <xsl:when test="@x1!='' and @x2!='' and @y1!='' and @y2!=''"> 
+               <xsl:value-of select="@x1"/> 
+               <xsl:text>,</xsl:text> 
+               <xsl:value-of select="@y1"/> 
+               <xsl:text>,</xsl:text> 
+               <xsl:value-of select="@x2"/> 
+               <xsl:text>,</xsl:text> 
+               <xsl:value-of select="@y2"/> 
+            </xsl:when> 
+            <xsl:otherwise> 
+               <!-- 
+               <xsl:message> 
+                  <xsl:text>ERROR: Some coordinates in branch are 
+missing!&#10;</xsl:text> 
+                  <xsl:text>       See branch with </xsl:text> 
+                  <xsl:value-of select="normalize-space($title)"/> 
+               </xsl:message>
+               //--> 
+            </xsl:otherwise> 
+         </xsl:choose> 
+      </xsl:attribute> 
+   </area> 
+   <xsl:apply-templates select="./branch" mode="imagemap"/> 
+</xsl:template> 
+
+
+<xsl:template match="heading" mode="imagemap">
+               <xsl:call-template name="gettitle" >
+                       <xsl:with-param name="txt" select="." />
+               </xsl:call-template>
+               <!--<xsl:message>title2: <xsl:value-of select="$title" /></xsl:message>-->
+
+    <xsl:apply-templates mode="imagemap"/>
+</xsl:template>
+
+
+<xsl:template match="xlink">
+               <xsl:element name="a">
+                       <xsl:attribute name="name">
+                               <xsl:value-of select="translate(@beginBranch, ':,', '')"/>
+                       </xsl:attribute>
+               </xsl:element>
+
+               <div class="xlink">
+                       <xsl:text>See: </xsl:text>
+                       <xsl:element name="a">
+                               <xsl:attribute name="href">
+                                       <xsl:text>#</xsl:text><!--<xsl:value-of select="translate(@endBranch, ':,', '')"/>-->
+                               </xsl:attribute>
+                               <!--<xsl:value-of select="translate(@endBranch, ':,', '')"/>-->reference
+                       </xsl:element>
+                               <!--<xsl:apply-templates/>-->
+                               <!--<xsl:message>->xlink: <xsl:value-of select="concat(@endBranch, ' ', position())" /></xsl:message>-->
+   </div>
+</xsl:template>
+
+
+<xsl:template name="gettitle">
+               <xsl:param name="txt" select="." />
+               
+               <xsl:variable name="br">
+                       <xsl:text disable-output-escaping="yes">&lt;br&gt;</xsl:text>
+               </xsl:variable>
+               
+               <xsl:choose>
+                       <xsl:when test="contains($txt, $br)" >
+                               <xsl:variable name="right" select="substring-after($txt, $br)" />
+                               <xsl:variable name="left" select="substring-before($txt, $br)" />
+                               <xsl:variable name="txt" select="concat( $left, ' ', $right )" />
+                                       <xsl:call-template name="gettitle" >
+                                               <xsl:with-param name="txt" select="$txt" />
+                                       </xsl:call-template>
+                       </xsl:when>
+                       <xsl:otherwise>
+                               <xsl:value-of select="$txt" />
+                       </xsl:otherwise>
+               </xsl:choose>
+</xsl:template>
+
+
+</xsl:stylesheet>
diff --git a/tex/examples/branches.vym b/tex/examples/branches.vym
new file mode 100644 (file)
index 0000000..57e4cd3
Binary files /dev/null and b/tex/examples/branches.vym differ
diff --git a/tex/examples/macros.vym b/tex/examples/macros.vym
new file mode 100644 (file)
index 0000000..6b38f0b
Binary files /dev/null and b/tex/examples/macros.vym differ
diff --git a/tex/images/branches-flags.png b/tex/images/branches-flags.png
new file mode 100644 (file)
index 0000000..afde328
Binary files /dev/null and b/tex/images/branches-flags.png differ
diff --git a/tex/images/branches-flags_es.png b/tex/images/branches-flags_es.png
new file mode 100644 (file)
index 0000000..a2bc876
Binary files /dev/null and b/tex/images/branches-flags_es.png differ
diff --git a/tex/images/branches-flags_fr.png b/tex/images/branches-flags_fr.png
new file mode 100644 (file)
index 0000000..655b830
Binary files /dev/null and b/tex/images/branches-flags_fr.png differ
diff --git a/tex/images/branches.png b/tex/images/branches.png
new file mode 100644 (file)
index 0000000..a07d2d7
Binary files /dev/null and b/tex/images/branches.png differ
diff --git a/tex/images/branches_es.png b/tex/images/branches_es.png
new file mode 100644 (file)
index 0000000..88c2077
Binary files /dev/null and b/tex/images/branches_es.png differ
diff --git a/tex/images/branches_fr.png b/tex/images/branches_fr.png
new file mode 100644 (file)
index 0000000..b1e8f34
Binary files /dev/null and b/tex/images/branches_fr.png differ
diff --git a/tex/images/color-buttons.png b/tex/images/color-buttons.png
new file mode 100644 (file)
index 0000000..229421b
Binary files /dev/null and b/tex/images/color-buttons.png differ
diff --git a/tex/images/default-flags.png b/tex/images/default-flags.png
new file mode 100644 (file)
index 0000000..3c3d164
Binary files /dev/null and b/tex/images/default-flags.png differ
diff --git a/tex/images/example1.png b/tex/images/example1.png
new file mode 100644 (file)
index 0000000..dfe131f
Binary files /dev/null and b/tex/images/example1.png differ
diff --git a/tex/images/example1_es.png b/tex/images/example1_es.png
new file mode 100644 (file)
index 0000000..8ed6709
Binary files /dev/null and b/tex/images/example1_es.png differ
diff --git a/tex/images/example1_fr.png b/tex/images/example1_fr.png
new file mode 100644 (file)
index 0000000..e413b1a
Binary files /dev/null and b/tex/images/example1_fr.png differ
diff --git a/tex/images/export-oo.png b/tex/images/export-oo.png
new file mode 100644 (file)
index 0000000..8b58b7b
Binary files /dev/null and b/tex/images/export-oo.png differ
diff --git a/tex/images/export-oo_es.png b/tex/images/export-oo_es.png
new file mode 100644 (file)
index 0000000..96f272e
Binary files /dev/null and b/tex/images/export-oo_es.png differ
diff --git a/tex/images/find-window.png b/tex/images/find-window.png
new file mode 100644 (file)
index 0000000..66de460
Binary files /dev/null and b/tex/images/find-window.png differ
diff --git a/tex/images/find-window_es.png b/tex/images/find-window_es.png
new file mode 100644 (file)
index 0000000..8e0c9ef
Binary files /dev/null and b/tex/images/find-window_es.png differ
diff --git a/tex/images/flag-hideexport.png b/tex/images/flag-hideexport.png
new file mode 100644 (file)
index 0000000..8ebbb69
Binary files /dev/null and b/tex/images/flag-hideexport.png differ
diff --git a/tex/images/flag-url.png b/tex/images/flag-url.png
new file mode 100644 (file)
index 0000000..75ca5ac
Binary files /dev/null and b/tex/images/flag-url.png differ
diff --git a/tex/images/flag-vymlink.png b/tex/images/flag-vymlink.png
new file mode 100644 (file)
index 0000000..783e7c3
Binary files /dev/null and b/tex/images/flag-vymlink.png differ
diff --git a/tex/images/formatfixedfont.png b/tex/images/formatfixedfont.png
new file mode 100644 (file)
index 0000000..4e450fa
Binary files /dev/null and b/tex/images/formatfixedfont.png differ
diff --git a/tex/images/hiddenlink.png b/tex/images/hiddenlink.png
new file mode 100644 (file)
index 0000000..dd0d502
Binary files /dev/null and b/tex/images/hiddenlink.png differ
diff --git a/tex/images/hiddenlink_es.png b/tex/images/hiddenlink_es.png
new file mode 100644 (file)
index 0000000..59db18a
Binary files /dev/null and b/tex/images/hiddenlink_es.png differ
diff --git a/tex/images/hiddenlink_fr.png b/tex/images/hiddenlink_fr.png
new file mode 100644 (file)
index 0000000..8b5c69c
Binary files /dev/null and b/tex/images/hiddenlink_fr.png differ
diff --git a/tex/images/historywindow.png b/tex/images/historywindow.png
new file mode 100644 (file)
index 0000000..19d629e
Binary files /dev/null and b/tex/images/historywindow.png differ
diff --git a/tex/images/includeImages.png b/tex/images/includeImages.png
new file mode 100644 (file)
index 0000000..eef7e5c
Binary files /dev/null and b/tex/images/includeImages.png differ
diff --git a/tex/images/includeImages_es.png b/tex/images/includeImages_es.png
new file mode 100644 (file)
index 0000000..3ad7006
Binary files /dev/null and b/tex/images/includeImages_es.png differ
diff --git a/tex/images/includeImages_fr.png b/tex/images/includeImages_fr.png
new file mode 100644 (file)
index 0000000..2f854cd
Binary files /dev/null and b/tex/images/includeImages_fr.png differ
diff --git a/tex/images/macros.png b/tex/images/macros.png
new file mode 100644 (file)
index 0000000..d96084b
Binary files /dev/null and b/tex/images/macros.png differ
diff --git a/tex/images/macros_fr.png b/tex/images/macros_fr.png
new file mode 100644 (file)
index 0000000..037a5ae
Binary files /dev/null and b/tex/images/macros_fr.png differ
diff --git a/tex/images/modmodes.png b/tex/images/modmodes.png
new file mode 100644 (file)
index 0000000..56441e1
Binary files /dev/null and b/tex/images/modmodes.png differ
diff --git a/tex/images/move-buttons.png b/tex/images/move-buttons.png
new file mode 100644 (file)
index 0000000..7bf8b8c
Binary files /dev/null and b/tex/images/move-buttons.png differ
diff --git a/tex/images/noteeditor.png b/tex/images/noteeditor.png
new file mode 100644 (file)
index 0000000..ae53e8e
Binary files /dev/null and b/tex/images/noteeditor.png differ
diff --git a/tex/images/noteeditor_es.png b/tex/images/noteeditor_es.png
new file mode 100644 (file)
index 0000000..2d192a6
Binary files /dev/null and b/tex/images/noteeditor_es.png differ
diff --git a/tex/images/noteeditor_fr.png b/tex/images/noteeditor_fr.png
new file mode 100644 (file)
index 0000000..94aba4d
Binary files /dev/null and b/tex/images/noteeditor_fr.png differ
diff --git a/tex/images/propwindow.png b/tex/images/propwindow.png
new file mode 100644 (file)
index 0000000..64d4591
Binary files /dev/null and b/tex/images/propwindow.png differ
diff --git a/tex/images/vym-logo-new.png b/tex/images/vym-logo-new.png
new file mode 100644 (file)
index 0000000..50a2cd3
Binary files /dev/null and b/tex/images/vym-logo-new.png differ
diff --git a/tex/images/windows.png b/tex/images/windows.png
new file mode 100644 (file)
index 0000000..b024081
Binary files /dev/null and b/tex/images/windows.png differ
diff --git a/tex/images/windows_es.png b/tex/images/windows_es.png
new file mode 100644 (file)
index 0000000..1a881b2
Binary files /dev/null and b/tex/images/windows_es.png differ
diff --git a/tex/images/windows_fr.png b/tex/images/windows_fr.png
new file mode 100644 (file)
index 0000000..ef30a61
Binary files /dev/null and b/tex/images/windows_fr.png differ
diff --git a/tex/images/xlink.png b/tex/images/xlink.png
new file mode 100644 (file)
index 0000000..28e1c2c
Binary files /dev/null and b/tex/images/xlink.png differ
diff --git a/tex/images/xlink_es.png b/tex/images/xlink_es.png
new file mode 100644 (file)
index 0000000..cfa9a72
Binary files /dev/null and b/tex/images/xlink_es.png differ
diff --git a/tex/images/xlink_fr.png b/tex/images/xlink_fr.png
new file mode 100644 (file)
index 0000000..231f318
Binary files /dev/null and b/tex/images/xlink_fr.png differ
diff --git a/tex/images/zoom-buttons.png b/tex/images/zoom-buttons.png
new file mode 100644 (file)
index 0000000..aa813ef
Binary files /dev/null and b/tex/images/zoom-buttons.png differ
diff --git a/tex/vc b/tex/vc
new file mode 100644 (file)
index 0000000..83c9670
--- /dev/null
+++ b/tex/vc
@@ -0,0 +1,145 @@
+#! /bin/bash
+#
+
+set -e  # abort on errors
+shopt -s nullglob  # file globs that don't match expand
+                  # to nothing
+
+#
+# Check if $EDITOR is set, otherwise set to "vi".
+#
+: ${EDITOR:=vi}
+
+#
+# Check for -f option ()
+#
+if [ "$1" = -f ]; then
+    retry_lock=1
+    shift
+fi
+
+#
+# Detect the name of the file to edit
+#
+unset FILE
+
+if [ -n "$1" ]; then
+    if [ -f "$1" ]; then
+       FILE=$1
+    else
+       if [ -d "$1" ]; then
+           cd $1
+       else
+           FILE=$(package_name $1).changelog
+       fi
+    fi
+fi
+
+if [ -z "$FILE" ]; then
+    for f in *.changelog; do
+       if [ -n "$FILE" ]; then
+           FILE=
+           break
+       fi
+       FILE=$f
+    done
+fi
+
+if [ -z "$FILE" ]; then
+    for f in *.spec; do
+       if [ -n "$FILE" ]; then
+           FILE=
+           break
+       fi
+       FILE=$f
+    done
+    if [ -n "$FILE" ]; then
+       FILE=$(package_name $FILE).changelog
+    fi
+fi
+
+if [ -z "$FILE" ]; then
+    echo "usage: ${0##*/} [filename[.changelog]|path [file_with_comment]]"
+    echo "If no <filename> is given, exactly one *.changelog or"
+    echo "*.spec file has to be in the cwd or in <path>."
+    echo
+    exit 1
+fi
+
+#
+# Add domain to username (if it's me ;-)
+#
+user=`whoami`
+if [ $user = "uwedr" ]; then
+       user="$user@suse.de"
+fi
+
+COMMENT_FILE=$2
+
+#
+# Create the lockfile and temporary file.
+#
+lockfile=.${FILE##*/}.lock
+if [ "${FILE/\//}" != "$FILE" ]; then
+    lockfile=${FILE%/*}/.$lockfile
+fi
+
+if [ ! -w "$(dirname "$FILE")" ]; then
+    echo "Write access to directory $(dirname "$FILE") required" >&2
+    exit 1
+fi
+
+if [ -e "$FILE" -a ! -w "$FILE" ]; then
+    echo "Write access to file $FILE required" >&2
+    exit 1
+fi
+
+set -o noclobber
+while ! echo $$@$(hostname -f) 2> /dev/null > $lockfile; do
+    if [ -z "$retry_lock" ]; then
+       echo "$lockfile: Lock by process $(cat $lockfile)" >&2
+       echo "Please remove stale lockfiles manually" >&2
+       exit 1
+    fi
+    echo "$lockfile: Waiting for process $(cat $lockfile) to release lock" >&2
+    sleep 1
+done
+set +o noclobber
+
+tmpfile=$(mktemp /tmp/${0##*/}.XXXXXX)
+trap "rm -f $lockfile $tmpfile" EXIT
+
+#
+# Prepare the working copy and start the editor
+#
+
+{   timestamp=$(LC_ALL=POSIX TZ=Europe/Berlin date)
+    echo "-------------------------------------------------------------------"
+    echo "$timestamp - $user"
+    echo
+    if [ -z "$COMMENT_FILE" ]; then
+       echo "- "
+    else
+       cat $COMMENT_FILE
+    fi
+    echo
+    if [ -f "$FILE" ]; then
+       cat $FILE
+    fi
+} >> $tmpfile \
+|| exit 1
+
+if [ -z "$COMMENT_FILE" ]; then
+    lines=1
+    CHKSUM_BEFORE=$(md5sum $tmpfile | awk '{print $1}')
+else
+    lines=$(wc -l $COMMENT_FILE | awk '{print $1}')
+    CHKSUM_BEFORE=has_changed
+fi
+
+$EDITOR +$((3+lines)) $tmpfile
+
+if [ "$CHKSUM_BEFORE" = "$(md5sum $tmpfile | awk '{print $1}')" ]; then
+    exit 1
+fi
+cat $tmpfile > $FILE
diff --git a/tex/vym.changelog b/tex/vym.changelog
new file mode 100644 (file)
index 0000000..5baebad
--- /dev/null
@@ -0,0 +1,1300 @@
+-------------------------------------------------------------------
+Mon Oct  6 11:17:15 CEST 2008 - uwedr@suse.de
+
+- Bugfix: Updated chinese translation from Moligaloo 
+
+-------------------------------------------------------------------
+Sun Oct  5 10:48:51 CEST 2008 - uwe
+
+- Version: 1.12.2
+- Bugfix: No more segfault for "delete & keep childs" on MapCenter
+
+-------------------------------------------------------------------
+Sun Jul 27 16:36:30 CEST 2008 - uwedr@suse.de
+
+- Version: 1.12.1
+
+-------------------------------------------------------------------
+Sun Jul 27 16:36:29 CEST 2008 - uwedr@suse.de
+
+- Bugfix: Animation timer didn't stop after animation was done, which
+          caused high load 
+
+-------------------------------------------------------------------
+Thu Jul 17 13:11:39 CEST 2008 - uwedr@suse.de
+
+- Bugfix: Deleting an animated part no longer segfaults
+- Bugfix: smaller image for export to elliminate pixel jitter on right
+          side 
+
+-------------------------------------------------------------------
+Fri Jul 11 14:01:31 CEST 2008 - uwedr@suse.de
+
+- Bugfix: bnc#407600 vym fails with non-ASCI characters in path names 
+
+-------------------------------------------------------------------
+Tue Jun  8 10:34:12 CEST 2008 - uwedr@suse.de
+
+- Bugfix: bnc#396365 vym cannot load maps saved with Qt 4.4 
+
+-------------------------------------------------------------------
+Wed May 14 17:00:36 CEST 2008 - uwedr@suse.de
+
+- Version: 1.12.0 RC 2
+- Feature: Russian translation
+
+-------------------------------------------------------------------
+Wed May  7 10:30:21 CEST 2008 - uwedr@suse.de
+
+- Bugfix: bnc#327078
+
+-------------------------------------------------------------------
+Tue May  6 11:45:46 CEST 2008 - uwedr@suse.de
+
+- Version: 1.12.0 
+
+-------------------------------------------------------------------
+Wed Apr 30 18:13:43 CEST 2008 - uwedr@suse.de
+
+- Version: 1.11.9
+- Bugfix: Some minor code cleanup 
+
+-------------------------------------------------------------------
+Thu Apr 10 22:45:55 CEST 2008 - uwedr@suse.de
+
+- Version: 1.11.8
+- Feature: Copy to new map now also in branch context menu
+
+-------------------------------------------------------------------
+Thu Apr 10 17:11:14 CEST 2008 - uwedr@suse.de
+
+- Bugfix: New map is not autosaved, if no filename is known yet
+
+-------------------------------------------------------------------
+Tue Apr  8 09:59:11 CEST 2008 - uwedr@suse.de
+
+- Version: 1.11.7
+- Bugfix: Hangup when find function did not find anything 
+
+-------------------------------------------------------------------
+Thu Mar 13 02:06:59 CET 2008 - uwedr@suse.de
+
+- Bugfix: vym no longer forgets that a map is zipped
+
+-------------------------------------------------------------------
+Sun Mar  9 13:36:20 CET 2008 - uwedr@suse.de
+
+- Bugfix: Segfault when pressing Home or End on MapCenter 
+
+-------------------------------------------------------------------
+Wed Mar  5 17:54:12 CET 2008 - uwedr@suse.de
+
+- Bugfix: Broken paths to floatimages 
+
+-------------------------------------------------------------------
+Wed Feb 27 17:07:57 CET 2008 - uwedr@suse.de
+
+- Bugfix: Fixed some issues with autosave and regulard file checks 
+
+-------------------------------------------------------------------
+Mon Feb 11 12:22:58 CET 2008 - uwedr@suse.de
+
+- Version: 1.11.6
+- Feature: vym now checks regulary if map has changed on disk and 
+           asks for reload if necessary
+
+-------------------------------------------------------------------
+Mon Jan 21 22:52:18 CET 2008 - uwedr@suse.de
+
+- Bugfix: No more warning dialog for overwriting note, when note is
+          empty 
+
+-------------------------------------------------------------------
+Tue Jan  8 22:20:29 CET 2008 - uwedr@suse.de
+
+- Version: 1.11.5
+- Feature: Started to implement multiple MapCenters in one map 
+
+-------------------------------------------------------------------
+Mon Jan  7 14:59:56 CET 2008 - uwedr@suse.de
+
+- Bugfix: vym.pro includes french translation now
+
+-------------------------------------------------------------------
+Mon Dec 17 16:32:48 CET 2007 - uwedr@suse.de
+
+- Bugfix: bnc#341952 corrupted positions of mainbranches after updating to
+          newer vym
+-------------------------------------------------------------------
+Wed Dec 12 17:12:50 CET 2007 - uwedr@suse.de
+
+- Bugfix: Overloaded key shortcut for Alt-N (Network and Next window) 
+
+-------------------------------------------------------------------
+Tue Dec  4 11:46:02 CET 2007 - uwedr@suse.de
+
+- Bugfix: Temporary hide stuff during export 
+- Bugfix: Save parts of map
+
+-------------------------------------------------------------------
+Mon Dec  3 20:57:15 CET 2007 - uwedr@suse.de
+
+- Bugfix: (Maint.) Exchanged pre- and postscript in XHTML Export dialog
+
+-------------------------------------------------------------------
+Fri Nov  9 10:44:59 CET 2007 - uwedr@suse.de
+
+- Version: 1.11.3
+- Feature: Added patches for better windows support by Andrew Ng
+
+-------------------------------------------------------------------
+Tue Nov  6 22:36:38 CET 2007 - uwedr@suse.de
+
+- Version: 1.11.2
+- Feature: Split up helper functions, started to write attributes
+
+-------------------------------------------------------------------
+Tue Nov  6 14:36:38 CET 2007 - uwedr@suse.de
+
+- Version: 1.11.1
+- Bugfix: sort branches has undo/redo now 
+
+-------------------------------------------------------------------
+Fri Oct 26 11:22:20 CEST 2007 - uwedr@suse.de
+
+- Bugfix: zip state is changed now, when a .xml is save as .vym 
+
+-------------------------------------------------------------------
+Wed Oct 24 14:11:36 CEST 2007 - uwedr@suse.de
+
+- Feature: Improved ascii export 
+- Bugfix: Present flag now does not set down arrows any longer 
+
+-------------------------------------------------------------------
+Tue Oct 23 13:11:52 CEST 2007 - uwedr@suse.de
+
+- Bugfix: included more <typeinfo> for compiling with new gcc 4.3
+
+-------------------------------------------------------------------
+Fri Oct 19 18:08:27 CEST 2007 - uwedr@suse.de
+
+- Version: 1.11.0
+- Feature: Added patches from Till Maas for better path handling to ease
+           integration into various operating systems
+- Feature: Added patch from Till Maas to use xdg-open as default browser
+- Feature: Added patch from ????? to sort branches lexically
+- Feature: Added patches from Juha Ruotsalainen for compiling on win32
+
+-------------------------------------------------------------------
+Tue Oct 16 11:51:43 CEST 2007 - uwedr@suse.de
+
+- Bugfix: included <typeinfo> for compiling in beta
+
+-------------------------------------------------------------------
+Wed Oct 04 12:43:48 CEST 2007 - uwedr@suse.de
+
+- Version: 1.10.1
+- Bugfix: Missing action for editing URL in context menu
+- Bugfix: "Hide in Export" didn't work
+
+-------------------------------------------------------------------
+Mon Sep 04 15:52:22 CEST 2007 - uwedr@suse.de
+
+- Bugfix: xLinks were not loaded from previously saved maps
+- Bugfix: Find manual in /usr/share/doc/packages/vym
+- Bugfix: Updated README.txt
+
+-------------------------------------------------------------------
+Mon Aug 20 17:09:28 CEST 2007 - uwedr@suse.de
+
+- Version: 1.10.0 Release Candidate
+- Bugfix: Added missing standard flag (one of the smileys got lost)
+- Bugfix: Wrong parsing of relative positions after load of 
+          previously zoomed map
+
+-------------------------------------------------------------------
+Tue Jul 31 22:09:01 CEST 2007 - uwedr@suse.de
+
+- Bugfix: Smother parabel links (Alexander Rettig) 
+
+-------------------------------------------------------------------
+Fri Jul 27 13:31:41 CEST 2007 - uwedr@suse.de
+
+- Version: 1.9.4
+- Feature: Restructured internal handling of XML based maps
+- Feature: Switched from QSimpleTextItem to QTextItem for Freemind support
+
+-------------------------------------------------------------------
+Mon Jul 23 14:40:38 CEST 2007 - uwedr
+
+- Version: 1.9.3
+- Feature: Import of Freemind maps
+
+-------------------------------------------------------------------
+Tue Jul 17 13:16:25 CEST 2007 - uwedr
+
+- Version: 1.9.2
+- Bugfix: Workaround for wrong XML generated by QT with in QRichText
+          list items 
+- Bugfix: No output from <span> tags in ASCII export any longer                  
+
+-------------------------------------------------------------------
+Wed Jul 11 15:49:10 CEST 2007 - uwedr
+
+- Version: 1.9.1
+- Bugfix: Don't ask for directory in XML-based exports like
+          KDE-bookmarks
+
+-------------------------------------------------------------------
+Tue Jul  4 10:57:04 CEST 2007 - uwedr
+
+- Version: 1.9.0
+- Bugfix: auto-select/auto-edit new branches
+
+-------------------------------------------------------------------
+Fri Jun 29 11:12:55 CEST 2007 - uwedr
+
+- Version: 1.8.76
+- Feature: Extended fileformat with object IDs to ease export from
+           tomboy to vym
+- Bugfix: Visibility of BranchProperty window is saved now 
+
+-------------------------------------------------------------------
+Mon Jun 25 14:53:10 CEST 2007 - uwedr
+
+- Version: 1.8.75
+- Feature: Completed german translation
+
+-------------------------------------------------------------------
+Wed Jun 20 13:52:37 CEST 2007 - uwedr
+
+- Version: 1.8.74
+- Feature: Center on selection with "."
+- Feature: Most important exports can be scripted now
+
+-------------------------------------------------------------------
+Mon Jun 18 17:08:46 CEST 2007 - uwedr
+
+- Version: 1.8.73 - entering beta testing 
+
+-------------------------------------------------------------------
+Mon June 18 17:01:16 CEST 2007 - uwe
+
+- Feature: Creating new map with selection as MapCenter
+- Feature: Simple export to CSV spreadsheet
+- Feature: Copy from past steps in history to current one
+- Bugfix: Undo/Redo dropping images into map
+- Bugfix: Undo/Redo of copy/paste steps
+- Bugfix: NoteEditor now appears on first click (not 2nd)
+- Bugfix: Disable autosave while there are redos available
+- Bugfix: After changing link color, that color is applied to all links
+          now
+- Bugfix: Pasting of FIOs
+- Bugfix: No selection of branches while editing heading
+- Bugfix: geometry of selection box gets updated while setting scroll or
+          hide flag
+- Bugfix: Possible segfault when redoing deleteChilds()                  
+
+-------------------------------------------------------------------
+Mon May  7 09:37:29 CEST 2007 - uwedr
+
+- Version: 1.8.72
+- Bugfix: autosave timeout now read from settings file
+- Bugfix: Settings for historywindow correclty read now
+- Bugfix: Closing property window toggle corresponding button
+
+-------------------------------------------------------------------
+Thu Apr 26 10:34:48 CEST 2007 - uwe
+
+- Feature: Editing of frame attributes in branch property window
+- Feature: autosave
+- Feature: number of undo/redo levels can be changed in settings 
+- Feature: branch property window settings are saved
+- Bugfix: Unscroll all childs has saveState now
+- Bugfix: Invisible selection after switching mapeditor
+
+-------------------------------------------------------------------
+Tue Apr 10 15:18:39 CEST 2007 - uwedr
+
+- Version: 1.8.71
+- Feature: Added basic macros and documentation
+
+-------------------------------------------------------------------
+Sat Mar 31 10:59:55 CEST 2007 - uwe
+
+- Version: 1.8.70
+- Feature: Color of selection can be changed now
+- Feature: Pen and brush for frames can be set
+- Bugfix: For frames the links always were drawn at bottom of heading 
+- Bugfix: BranchPropertyWindow updates when selection is changed
+
+-------------------------------------------------------------------
+Mon Mar  6 22:10:26 CET 2007 - uwe
+
+- Version: 1.8.69
+- Feature: Simple Editor for scripts
+- Feature: Added syntax highlighting for editor
+
+-------------------------------------------------------------------
+Tue Feb 20 22:16:09 CET 2007 - uwe
+
+- Version: 1.8.68
+- Bugfix: Crash when trying to temporary link to floatimage 
+
+-------------------------------------------------------------------
+Mon Feb 17 16:32:53 CET 2007 - uwedr
+
+- Version: 1.8.67
+- Feature: Unscroll all now only affects selected subtree 
+- Bugfix: Drawing error when temporary linking subtrees
+- Bugfix: Import of KDE Bookmarks
+- Bugfix: Export to KDE Bookmarks
+- Bugfix: Export to XHTML
+- Bugfix: Drag and Drop of URLs now only creates one branch
+
+-------------------------------------------------------------------
+Wed Feb 07 17:27:31 CET 2007 - uwedr
+
+- Version: 1.8.66
+- Feature: Using a new class to select objects
+- Bugfix: Remember last directory before  ASCII/LaTeX export
+- Bugfix: Editing in NoteEditor now updates actions (save) again
+- Bugfix: Deleting last branch automatically unscrolls parent now
+- Bugfix: Scroll/Unscroll has undo/redo now
+
+-------------------------------------------------------------------
+Fri Jan 19 22:53:27 CET 2007 - uwe
+
+- Version: 1.8.65
+- Feature: New Frame format
+- Feature: New vym file format to support new frames
+- Bugfix: xml-parsing code simplified
+- Bugfix: Fixed pretty annoying repositioning of view after editing a
+          heading. (don't call show() before positioning in heading...)
+- Bugfix: Wrong Cursors after pressing CTRL and inserting/relinking
+- Bugfix: Save PNG images with quality 100 to workaround image problems
+- Bugfix: Remember last directory before XML export
+
+-------------------------------------------------------------------
+Thu Jan 11 16:05:49 CET 2007 - uwedr
+
+- Version: 1.8.65
+- Feature: Properties dialog for branches instead of context menu entries
+
+-------------------------------------------------------------------
+Wed Jan 10 19:48:32 CET 2007 - uwe
+
+- Version: 1.8.64
+- Bugfix: move branch up/down calls scene()->update() now => much faster
+- Bugfix: Relinking of floatimages undo/redo
+
+-------------------------------------------------------------------
+Tue Jan  2 19:30:50 CET 2007 - uwedr
+
+- Version: 1.8.64
+- Bugfix: printing scales correctly again
+- Bugfix: Drag & Drop (basically) works again
+- Bugfix: Crash caused by BranchObj::getLastSelected
+- Bugfix: Signal handling by changes in TextEditor: Much faster now
+
+-------------------------------------------------------------------
+Thu Dec 21 14:13:13 CET 2006 - uwedr
+
+- Version: 1.8.63
+- Bugfix: printing is working again
+
+-------------------------------------------------------------------
+Mon Dec 11 12:31:46 CET 2006 - uwedr
+
+- Version: 1.8.61
+- Bugfix: move up/down to next subtree is working again
+
+-------------------------------------------------------------------
+Mon Dec  6 22:48:07 CET 2006 - uwe
+
+- Version: 1.8.61
+- Bugfix: Flags are working again
+- Bugfix: Floatimages have correct select box again
+
+-------------------------------------------------------------------
+Wed Nov 29 13:48:35 CET 2006 - uwedr
+
+- Version: 1.8.60
+- Bugfix: Image format is saved with floatimage
+- Feature: Only one history window for all editors. State is saved.
+- Feature: Canvas ported to QT 4.2 GraphicsView
+- Feature: Options to use AntiaAliasing and smooth pixmap
+           transformations
+- Feature: Thick links use polygons now, less objects in scene  
+
+-------------------------------------------------------------------
+Thu Nov 16 14:41:44 CET 2006 - uwedr
+
+- Bugfix: New recent file handling, fixes crash on Mac OS X 
+
+-------------------------------------------------------------------
+Tue Nov 14 10:00:12 CET 2006 - uwedr
+
+- Feature: Modifier Modes now change cursor when CTRL is pressed 
+
+-------------------------------------------------------------------
+Fri Nov 10 10:28:55 CEST 2006 - uwe
+
+- Feature: vym opens spanish documentation, if locale is es*
+- Bugfix: Position of floatimages is saved again 
+- Bugfix: Position of floatimages survives adjustCanvasSize()
+- Bugfix: Adding branch to scrolled branch unscroll the former 
+- Bugfix: More undo commands (removed saveStateComplete)
+
+-------------------------------------------------------------------
+Tue Oct 24 17:24:22 CEST 2006 - uwedr
+
+- Version: 1.8.58
+- Feature: More undo commands (and fixes there)
+
+-------------------------------------------------------------------
+Mon Oct 16 14:41:03 CEST 2006 - uwedr
+
+- Feature: Code simplification
+
+-------------------------------------------------------------------
+Thu Sep 14 12:01:28 CEST 2006 - uwedr
+
+- Version: 1.8.57
+- Feature: Note Editor completly based on QT4 now.
+
+-------------------------------------------------------------------
+Wed Sep  13 16:43:09 CEST 2006 - uwedr
+
+- Version: 1.8.56
+- Feature: New History window, All designer elements ported to QT4
+- Bugfix: No more hopping around of floats, when canvas is resized 
+          (by using relative positions for mainbranches. This might 
+                 confuse parsing 1.8.56 documents with vym <= 1.8.1
+
+-------------------------------------------------------------------
+Wed Sep  6 09:48:12 CEST 2006 - uwedr
+
+- Bugfix: Mac - XSL stylesheets are found 
+- Bugfix: Mac - fonts are scaling
+- Bugfix: Mac - hand cursor is shown correctly
+
+-------------------------------------------------------------------
+Tue Sep  5 15:38:20 CEST 2006 - uwedr
+
+- Version: 1.8.55
+- Bugfix: Undo/Redo moving floatimages
+- Bugfix: Shortcuts for scrolling branches/removing branch
+- Bugfix: update-bookmarks script is not only executed, but
+          also found now...
+- Feature: Findwindow ported to QT4
+
+-------------------------------------------------------------------
+Tue Sep  5 09:55:55 CEST 2006 - uwedr
+
+- Bugfix: More undo/redo (move of floatimages, relinking of branches) 
+
+-------------------------------------------------------------------
+Thu Aug 31 13:54:30 CEST 2006 - uwedr
+
+- Bugfix: More undo/redo commands
+- Bugfix: Actions updated after moving a branch now
+- Bugfix: vym refuses to start if vymTmpDir can't be created
+
+-------------------------------------------------------------------
+Wed Aug 30 14:14:56 CEST 2006 - uwedr
+
+- Version: 1.8.54
+- Bugfix: Editing headings now works both on Mac and Linux
+
+-------------------------------------------------------------------
+Mon Aug 28 13:15:35 CEST 2006 - uwe
+
+- Version: 1.8.53
+- Feature: Opening of all URLs in a subtree
+- Feature: Opening of all vymLinks in a subtree
+
+-------------------------------------------------------------------
+Tue Aug 15 13:39:42 CEST 2006 - uwedr
+
+- Version: 1.8.52
+- Feature: Changed format of configuration file a bit (new file anyway
+  with introduction of QT4)
+- Feature: Toolbar Layout is saved now
+
+-------------------------------------------------------------------
+Thu Jul 27 14:28:54 CEST 2006 - uwedr
+
+- Bugfix: Floatimages internally are saved as png, preserving the alpha 
+          channel
+
+-------------------------------------------------------------------
+Thu Jul 13 10:39:26 CEST 2006 - uwedr
+
+- Bugfix: Fixed broken check for non-existent OO-export configuration 
+
+-------------------------------------------------------------------
+Tue Jul  4 12:32:28 CEST 2006 - uwedr
+
+- Feature: Moved floats in XML Export, e.g. XHTML  shows floatimages at
+  beginning of export now
+
+-------------------------------------------------------------------
+Mon July 10 16:53:29 CEST 2006 - uwedr
+
+- Version: 1.8.50
+- Feature: Beginning of QT4 port
+
+-------------------------------------------------------------------
+Thu June 1 16:53:29 CEST 2006 - uwedr
+
+- Version: 1.7.18
+- Feature: Opening of tabs in Firefox or Mozilla
+- Feature: Documentation is up to date now
+- Bugfix: No more duplicate xLinks
+- Bugfix: Saving original filename of floatimages finally works
+- Bugfix: Positioning of floatimages while adjusting canvas size (also
+          optimized code a bit)
+
+-------------------------------------------------------------------
+Tue May  9 10:05:52 CEST 2006 - uwedr
+
+- Version: 1.7.17
+- Bugfix: Right click e.g. on URL Flag opened URL _and_ context menu 
+- Bugfix: Deleting selection works also if Delkey is disabled.
+
+-------------------------------------------------------------------
+Mon May  8 10:29:25 CEST 2006 - uwedr
+
+- Bugfix: Exclusive flags did not work properly. 
+- Bugfix: Wrong icon in texteditor for text underline
+- Bugfix: Changed screenshots in docu to represent new look
+- Bugfix: Fixed z-plane of floatimage. Images did hide flags.
+
+-------------------------------------------------------------------
+Mon Apr 24 11:59:22 CEST 2006 - uwedr
+
+- Bugfix: wrong paths in XHTML export (bnc#168033), caused by wrong
+          vymBaseDir
+
+-------------------------------------------------------------------
+Mon Apr 10 13:23:02 CEST 2006 - uwedr
+
+- Feature: More icons 
+
+-------------------------------------------------------------------
+Fri Mar 31 14:18:38 CEST 2006 - uwe
+
+- Feature: New environment variable VYMHOME 
+
+-------------------------------------------------------------------
+Thu Mar 30 11:00:21 CEST 2006 - uwedr
+
+- Version: 1.7.15
+- Feature: New icons. Icons and flags are not longer linked statically.
+
+-------------------------------------------------------------------
+Tue Mar 28 21:54:31 CEST 2006 - uwe
+
+- Version: 1.7.13
+- Feature: Konqueror can open URLs in new tabs now.
+
+-------------------------------------------------------------------
+Thu Mar 23 13:26:46 CET 2006 - uwedr
+
+- Version: 1.7.12
+- Bugfix: Problem with vymlinks pointing to higher directories (bnc#159770)
+- Bugfix: All exports support hiding of objects now
+- Bugfix: exportDir in XHTML export is correctly saved in map and
+  defaults to current directory
+
+-------------------------------------------------------------------
+Wed Mar 15 11:43:02 CET 2006 - uwedr
+
+- Version: 1.7.11
+- Bugfix: Workaround QT problem, where QT writes invalid XML code by not
+  escaping & in fontnames
+- Feature: Hide Export Flag lets you hide objects in exports
+- Feature: Floatimages now are basically ornamented objects. They could
+  have e.g. an URL later
+- Feature: On error the XML Parser shows the line which is causing the
+           error
+
+-------------------------------------------------------------------
+Wed Mar  8 13:58:40 CET 2006 - uwedr
+
+- Bugfix: Images preview in filedialog works again. Seemed to be a QT
+  issue when multiple fileselections were allowed. 
+
+-------------------------------------------------------------------
+Mon Mar  6 15:02:57 CET 2006 - uwedr
+
+- Feature: Added export to Taskjuggler. xslt by Matt. 
+
+-------------------------------------------------------------------
+Wed Mar  1 22:29:47 CET 2006 - uwe
+
+- Bugfix: Canvas Size corrected when flag is toggled 
+
+-------------------------------------------------------------------
+Wed Mar  1 15:38:11 CET 2006 - uwedr
+
+- Version: 1.7.10
+- Feature: Include Images Horizontalls
+
+-------------------------------------------------------------------
+Tue Feb 21 17:17:48 CET 2006 - uwedr
+
+- Feature: rudimentary import mmaps 
+
+-------------------------------------------------------------------
+Tue Feb 14 21:10:26 CET 2006 - uwe
+
+- Version 1.7.9
+- Feature: Import KDE bookmarks
+- Feature: Own class xsltproc for doing xml transformations
+
+-------------------------------------------------------------------
+Tue Jan 31 16:54:52 CET 2006 - uwedr
+
+- Version 1.7.8
+- Bugfix: Hide Include Images Horizontally (not implemented yet) 
+- Bugfix: Include Images Vertically was not read from saved file
+
+-------------------------------------------------------------------
+Tue Jan 25 16:07:53 CET 2006 - uwedr
+
+- Version 1.7.7
+- Feature: Export to Open Office 2.x (Open Document) basically works 
+- Feature: Export to XHTML uses smaller icon for URLs now
+
+-------------------------------------------------------------------
+Wed Jan 18 13:29:52 CET 2006 - uwedr
+
+- Feature: Multiple File selection while loading maps and images
+
+-------------------------------------------------------------------
+Tue Jan  3 12:20:08 CET 2006 - uwe
+
+- Feature: Small optimization in zip/unzip functions
+
+-------------------------------------------------------------------
+Mon Jan  2 21:03:05 CET 2006 - uwe
+
+- Feature: FATE support for URLs 
+
+-------------------------------------------------------------------
+Wed Dec 28 12:09:59 CET 2005 - uwe
+
+- Version 1.7.6
+- Feature: Added idAttr to BranchObj::saveToDir 
+- Bugfix: FloatObjects now use hideLinkIfUnselected, no more drawing
+  errors, if FO is selected (undefined link)
+- Bugfix: FloatImages don't get lost during save after they have been
+  relinked to new parent  
+- Bugfix: Editing heading of mapcenter now also corrects position  
+
+-------------------------------------------------------------------
+Mon Oct 10 13:18:29 CEST 2005 - uwedr
+
+- Bugfix: Copy/Paste was currently not possible for images. Now
+  completly rewrote mechanism. Instead of invisible map now XML import
+  is used (Multiple clipboards should be not difficult now) 
+
+-------------------------------------------------------------------
+Mon Oct  3 10:33:09 CEST 2005 - uwe
+
+- Bugfix: Added small fix from Khaled Ahmed needed for display of 
+  arabic languages 
+
+-------------------------------------------------------------------
+Mon Sep 12 21:39:38 CEST 2005 - uwedr
+
+- Version 1.7.5
+- Feature: Currently 15 levels of undo (GUI to set value still missing)
+- Feature: Experimental LaTeX Export (without headers and opions so far)
+
+-------------------------------------------------------------------
+Sun Sep  5 10:26:15 CEST 2005 - uwedr
+
+- Version 1.7.4
+- Feature: Link of a branch can be hidden, if object is not selected
+- Bugfix: Zoomed map no longer "jumps around" when branch is selected
+  or moved.
+- Bugfix: TextEditor now has grey background again, if it is empty
+- Bugfix: BranchObj no longer need to connect to TextEditor, BranchObj
+  is no longer a QOBJECT
+
+-------------------------------------------------------------------
+Thu Sep  1 12:26:24 CEST 2005 - uwedr
+
+- Bugfix: Some minor changes so that translations use arguments now
+  instead of several calls to tr()
+
+-------------------------------------------------------------------
+Tue Aug 30 13:38:31 CEST 2005 - uwedr
+
+- Bugfix: Fixed pasting vymlinks: Pasting a branch to a target in
+  another map caused vym to go into an endless loop, if the vymlink of the
+  branch pointed to the new map.
+- Bugfix: Invisible floatimages (which have a scrolled parent) no longer
+  can be selected  
+
+-------------------------------------------------------------------
+Fri Aug 19 09:12:49 CEST 2005 - uwedr
+
+- Feature: added debian subdirectory created by Steffen Joeris
+- Feature: added license to new aboutwindow
+
+-------------------------------------------------------------------
+Tue Aug 16 19:22:56 CEST 2005 - jhilmer
+
+- Bugfix: Fixed link handling in aboutdialog.
+
+-------------------------------------------------------------------
+Tue Aug 16 12:25:09 CEST 2005 - uwedr
+
+- Feature: Added keyboard shortcut to reset zoom factor
+- Bugfix: Added "..." to menu entries leading to another dialog
+- Bugfix: The setting option "Delete Key" is working again
+- Bugfix: A branch moved from left side to right had wrong orienation
+
+-------------------------------------------------------------------
+Tue Aug  2 09:59:24 CEST 2005 - uwedr
+
+-  Bugfix: Heading sizes now correct after moving e.g. mainbranch to 
+   a branch
+
+-------------------------------------------------------------------
+Mon Aug  1 22:40:29 CEST 2005 - jhilmer
+
+- Bugfix: Problems with closing of note editor when text was modified.
+- Feature: Added subscript and superscript to note editor
+       
+-------------------------------------------------------------------
+Thu Jul 28 11:57:38 CEST 2005 
+
+- Version 1.7.3
+- Bugfix: Frames didn't become invisible if scrolled
+
+-------------------------------------------------------------------
+Thu Jul 28 11:57:38 CEST 2005 
+
+- Version 1.7.2
+- Bugfix: if selection changed before undo, undo worked on wrong
+  branch
+- included math.h again to enable compiling with gcc4  
+
+-------------------------------------------------------------------
+Mi Jul 27 17:27:14 CEST 2005
+
+- Bugfix: if selection changed before undo, undo worked on wrong branch
+
+-------------------------------------------------------------------
+Mon Jul 25 22:22:21 CEST 2005
+
+- Bugfix: changed MapEditor::undo and ::saveState to also save selection
+
+-------------------------------------------------------------------
+Di Jul 19 16:42:31 CEST 2005
+
+- Version: 1.7.1
+- Feature: Drag and Drop also for .vym and files (Jakob Hilmer)
+- Feature: More speedup on moving/relinking branches
+
+-------------------------------------------------------------------
+
+Mi Jul 13 11:44:10 CEST 2005 
+
+- Drag and Drop also for URLs
+
+-------------------------------------------------------------------
+Di Jul 12 20:56:09 CEST 2005
+
+- Version: 1.7.0
+
+-------------------------------------------------------------------
+Mon Jul  4 21:13:42 CEST 2005 
+
+- Version: 1.6.9
+- Bugfix: TextEditor doesn't get minimized in KDE any longer (KDE-bug?)
+
+-------------------------------------------------------------------
+Tue Jun 14 11:43:44 CEST 2005
+
+- Feature: printer name is saved in vymrc now
+- Feature: added image drag/drop (by Jakob Hilmer)
+- Bugfix: Importing map into new map now has correct (empty) filename 
+
+-------------------------------------------------------------------
+2005-06-07 
+
+- Version: 1.6.8
+- Feature: Dramatic speedup in some operations 
+                               (e.g. move branch up/down) due to extended 
+                               undo engine
+-------------------------------------------------------------------
+ 2005-05-27 
+- Version: 1.6.7       
+- Feature:Changed default pdf-reader for Mac OSX 
+- Bugfix: xLinks stopped working in 1.6.6
+- Bugfix: drawing error when using modModeCopy
+- Bugfix: replaced lrint by qRound for BSD port
+               
+-----------------------------------------------------------
+ 2005-05-23
+
+- Version 1.6.6        
+- Feature: Exclusive standard flags            
+
+-----------------------------------------------------------
+2005-05-19 
+
+- Version: 1.6.5
+- Feature: removing a branch and keeping its childs
+- Feature: removing childs of a branch
+- Feature: insert branch and make selection its child
+- Feature: restructured branch context menu    
+           in a basic version (straight line)
+- Feature: New shortcuts  for use on Mac OS X
+- Feature: Importing directories generates vymlinks now 
+- Bugfix: Changing linkstyle now automatically redraws all
+             links again
+- Bugfix: Paste icon is disabled if clipboard is empty 
+               
+-----------------------------------------------------------
+2005-04-15
+
+- Version: 1.6.4       
+- Feature: xLinks (connection between 2 branches) works
+           in a basic version (straight line)  
+
+-----------------------------------------------------------
+2005-03-30
+
+- Version: 1.6.3
+- Bugfix: Saving of selection to a vym part (.vyp)
+- Bugfix: Closing the noteeditor by closing its window now
+          also toggles the responding toolbar button. &
+
+-----------------------------------------------------------
+2005-03-24
+
+- Version: 1.6.2       
+- Feature: Introduced Modifier modes: color, link, copy 
+- Feature: Linking branches is basically possible, though it can't be
+           edited/saved yet 
+
+-----------------------------------------------------------
+2005-01-30
+
+- Version: 1.6.1        
+- Feature: Optimized moving of branches: much faster especially 
+           with huge subtrees                                  
+- Bugfix: Segfault when loading vym part 
+- Bugfix: ugly unitialized lines, when temporary drawn link 
+          was moved from a temporary parent back to canvas               
+
+-----------------------------------------------------------
+2004-12-14  
+
+- Version: 1.6.0        
+- Feature: Added saving of xhtml settings in map 
+
+-----------------------------------------------------------
+2004-12-13  
+
+- Version: 1.5.2        
+- Feature: Added Import of maps with two modes: 
+           add/replace                                         
+- Feature: Added export of part of maps                 
+- Feature: Added joining of paragraphs in text editor           
+- Feature: Optimized undo: Only relevant parts are saved, which
+           dramatically improves e.g. moving branches up/down in most maps  
+- Bugfix: QTextEdit generates invalid XML code, which could lead to a
+          parse error, if font name contains a \&  (bnc#62283)   
+- Bugfix: Wrong order of mainbranches in Export           
+- Bugfix: zip archive was not deleted before save, which could lead to
+  much bigger files, e.g.  when working on older \vym maps or deleted
+  images   
+- Bugfix: Printing in Texteditor         
+- Bugfix: Wrong URLs in xhtml output                             
+- Bugfix: Segfault fixed at Cursor left/right in empty map  
+
+-----------------------------------------------------------
+2004-10-01 
+
+- Version: 1.5.1
+- Feature: More options in xhtml export: external scripts       
+
+-----------------------------------------------------------
+2004-09-26 
+
+- Version: 1.5.0        
+- Public release of all changes since 1.4.1             
+- Feature: New function to replace paragraphs in note editor
+       by linebreaks, this makes pasted text much nicer 
+- Feature: New option to toggle exporting of of floatimages 
+- Feature: z-plane of floatimages can be set (manually only) 
+- Bugfix: Wrong ordering of branches, if mainbranch is exactly left of
+  center 
+
+-----------------------------------------------------------
+2004-09-24 
+
+- Version: 1.4.7        
+- Feature: New Export to XHTML (by Thomas Schraitle)    
+- Bugfix: vymLink      
+- Bugfix: spaces and dots in filenames  
+- Bugfix: Error message if xsltproc is not installed 
+
+-----------------------------------------------------------
+2004-09-15     
+
+- Version: 1.4.6        
+- Feature: New file format: notes are saved as part of the .xml file
+- Feature: Note Editor supports Rich Text now.
+- Feature: Parser now also nows {\tt standardflag} (all letters lowercase)
+
+-----------------------------------------------------------
+2004-08-23     
+
+- Version: 1.4.5        
+- Feature: Correct handling of font size in Heading                     
+
+-----------------------------------------------------------
+2004-07-29     
+
+- Version: 1.4.4        
+- Selecting with cursor now works between subtrees      
+- Bugfix: vymLink was set to temporary dir in 1.4.3     
+
+-----------------------------------------------------------
+2004-07-19  
+
+- Version: 1.4.3        
+- Optimisation: Reduced canvas objects by only creating objects for used
+  flags                 
+- Better visualization of moving branch above/below target             
+- Find Window informs with dialog, if the search failed
+- System Flags are clickable now               
+- Reworked CSS and XST stylsheets (comments, indent, browser
+  compatibility)                                               
+- vymLinks are shown in statusbar              
+- current directory is save                    
+- Rewritten load/save to improve multimap handling and unzipped files
+- Bugfix: vymLinks don't get deleted when Cancel is pressed                                            
+- Bugfix: Fixed a bunch of bugs in XSL for HTML export             
+- Bugfix: More toolbar buttons disabled, if action not possible             
+- Bugfix: Renaming .vymfile now works          
+- Bugfix: mapChanged set when toggling flags           
+- Bugfix: CTRL-N was used twice                
+- Bugfix: Del didn't work on floatimage 
+
+-----------------------------------------------------------
+- Version: 1.4.2        
+- Bugfix: Float image could not be deleted  
+
+-----------------------------------------------------------
+2004-05-25  
+
+- Version: 1.4.1        
+- Bugfix: Color of branch not saved     
+- Bugfix: wrong path at HTML export                 
+- Bugfix: map is not save with special characters in path   
+
+-----------------------------------------------------------
+2004-05-17 
+
+- Version: 1.4.0        
+- Ask for confirmation before opening 
+                               a map in multiple editors                        
+- Save state of note editor (visible/minimized) 
+- Export to HTML                                                
+- Author and Comment is saved in map    
+- Stats are shown in Edit MapInfo               
+- Changes for OS X port (QCursor, QContextMenuEvent)    
+- Bugfix: Fonts from note editor are save now                  
+- Bugfix: invisible image when parent is scrolled              
+- Bugfix: Segfault pressing "enter" for floatimage     
+- Bugfix: Images can't be outside of exported area
+                               anymore. 
+- Bugfix: Filenames with blanks                 
+- Bugfix: Old maplink is shown when editing maplink 
+- Bugfix: always show cursor while editing heading  
+
+-----------------------------------------------------------
+2004-04-16 
+
+- Version: 1.3.5        
+- Export map to dir                                     
+- Export to any of QTs image formats    
+- Also right side of selection is always visible now. 
+
+-----------------------------------------------------------
+2004-04-07 
+
+- Version: 1.3.4        
+- Load last maps in file menu          
+- save last image path for loading      
+- Also export standard flags to dir.    
+
+-----------------------------------------------------------
+2004-03-26 
+
+- Version: 1.3.3        
+- Enabled <br> in headings as manual linebreak  
+- Heading can be copied to URL         
+- Bugfix: GIFs are automatically converted to PNG now
+
+-----------------------------------------------------------
+2004-03-26 
+
+- Version: 1.3.2        
+- Add and move branches above/below selection, Texteditor copy all, 
+
+-----------------------------------------------------------
+2004-03-25 
+
+- Version: 1.3.1        
+- Export to directory, changed naming in .vym 
+
+-----------------------------------------------------------
+2004-03-23 
+
+- Version: 1.3.0        
+- Bugfix: Check if map can be saved at all 
+
+-----------------------------------------------------------
+2004-03-22 
+
+- Version: 1.2.12       
+- Select image format before saving image       
+
+-----------------------------------------------------------
+2004-03-18 
+
+- Version: 1.2.11      
+-              Selecting mainbranches by up/down        
+-              Export ASCII (experimental)                                             
+-              Each map can be saved individually at quit              
+-              Bugfix: Opening VymLink crashes QT                              
+-              Bugfix: 50\% less objects on canvas                             
+-              Bugfix: Ignoring LANG, now always written as UTF8
+
+-----------------------------------------------------------
+2004-03-16 
+
+- Version: 1.2.10      
+- Sort Mainbranches by angle to y-axis 
+- Import directory structure                                           
+- Bugfix: Set FrameType of MapCenter while loading map 
+
+-----------------------------------------------------------
+2004-03-12 
+
+- Version: 1.2.9       
+- Jump to another vym map                       
+- Mainbranches are alwas ordered clockwise        
+
+-----------------------------------------------------------
+2004-03-03 
+
+- Version: 1.2.8        
+- Change frame types in context menu   
+
+-----------------------------------------------------------
+2004-02-25 
+
+- Version: 1.2.7       
+- Copy / Paste and save Floatimages  
+
+-----------------------------------------------------------
+2004-02-24 
+
+- Version: 1.2.6        
+- Closing vym in KDE now asks for save, too     
+- Context menu for branches                                      
+- Selection is saved in .vym file                                
+
+-----------------------------------------------------------
+2004-02-18 
+
+- Version: 1.2.5        
+- URLs to external links can be added 
+- All actions are deactived if not possible  
+
+-----------------------------------------------------------
+2004-02-16 
+
+- Version: 1.2.4        
+- Images: Can be loaded, saved, relinked to other parents
+
+-----------------------------------------------------------
+2004-01-27  
+
+- Version: 1.2.3        
+- Zoom: Reset and finer steps shrinking/enlarging       
+
+-----------------------------------------------------------
+2004-01-27 
+
+- Version: 1.2.2        
+- Editing of links (style and color)    
+
+-----------------------------------------------------------
+2004-01-27 
+
+- Version: 1.2.1       
+- Bugfix: LineEdit when adding branch has correct position again.                                                               
+
+-----------------------------------------------------------
+2004-01-23 
+
+- Version: 1.2.0        
+- Scrolled parts are automatically unscrolled when selected and scrolled
+  again later.                          
+- Bugfix: Save flag is updated when multiple maps are opened 
+- Bugfix: Moving of branches is faster and more accurat when adding to
+  mapcenter 
+
+-----------------------------------------------------------
+2003-12-04 
+
+- Version: 1.1.7        
+- Bugfix: Remember filename of note in noteeditor       
+
+-----------------------------------------------------------
+2003-12-02 
+
+- Version: 1.1.6        
+- Find Text also in Notes.      
+
+-----------------------------------------------------------
+2003-11-07 
+
+- Version: 1.1.5       
+- Bugfix: Correct setting and positioning when relinking branches       
+
+-----------------------------------------------------------
+2003-11-03 
+
+- Version: 1.1.4        
+- Scroll mode added (folding of subtrees).              
+- Bugfix: Wrong position of linedit in zoomed view 
+
+-----------------------------------------------------------
+2003-10-09  
+
+- Version: 1.1.3        
+-              Added clear button in find window, bugfixes     
+
+-----------------------------------------------------------
+2003-10-07  
+
+- Version: 1.1.2        
+- Links can be colored with color of heading      
+
+-----------------------------------------------------------
+2003-09-26  
+
+- Version: 1.1.1        
+- Improved visualization of linking to new branch 
+
+-----------------------------------------------------------
+2003-09-25  
+
+- Version: 1.1.0        
+- Find Function                                                        
+- Selection always stays in view                 
+
+-----------------------------------------------------------
+2003-09-18
+
+- Version: 1.0.1        
+- Find function scrolls to result now   
+- Bugfix: Adding branch with midmouse    
+- Bugfix: multiple repositioning of map, when noteeditor was changed
+  (speedup)     
+- New Linestyles (still hardcoded)                      
+
+-----------------------------------------------------------
+2003-09-16             
+
+- Version: 1.0.0        
+- First public stable release                   
+
+-----------------------------------------------------------
+- Version: 0.9.0        
+- added quick color picker (CTRL + Left Mouse)  ?       
+
+-----------------------------------------------------------
+- Version: 0.8.0        
+- added automatic canvas resizer, removed manual resizing of canvas  
+- added settings option to paste text into new branch   
+- simplified code       
+- Added heart flag      
+- Choose and switch between fixed and variable width fonts 
+- note editor           
+- Fixed segfault caused by undo and a call of updateNoteFlag of note
+  editor        
+- Added settings menu to configure autoselect and autoedit mode         
+- autoedit and autoselect mode  
+- Fixed ugly display problem with QT Palette (Klaas Freitag) 
+- Reduced temporary directories from 4 to 1     
+- Added wordwrap in printing of notes   
+- New toolbar buttons in texteditor     
+- Set background color  
+- Fixed bug: Flags in toolbar not updated when selecting map center      
+
+-----------------------------------------------------------
+- Version: 0.7.0        
+- No more segfault, when an object is deleted while being edited  
+- Keep focus constant when zooming in/out  
+- Export as png graphic  
+- Keep Center of map where it is while zooming  
+- Added Standard Flags (Smiley, Hook, Stopsign, ...)  
+- MDI: Multi Document Interface enables working on several maps
+  simultanously  
+- Enabled creating a new map via argument on commandline  
+- Changed file extension from .mmap to .vym  
+- noteeditor changes color, if empty or nothing is selected  
+- Changes in NoteEditor window are recognized by main window, too, thus
+  preventing loosing data when quitting the program.   
+
+-----------------------------------------------------------
+- Version: 0.6.0       
+- New rendering engine: Faster, no flickering   
+
+-----------------------------------------------------------
+- Version: 0.5.0        
+-  Changed printing to use maximum space on paper  
+-  Note editor is hidden, too, when mapeditor is minimized  
+-  New (compressed) file format  
+
+-----------------------------------------------------------
+- Version: 0.4.0     
+- Size of map is saved  
+- Multi Line Headings   
+- Reworked Rendering Engine: Much faster now.  
+- Reworked Undo: Much faster now.  
+- Enabled moving of map center  
+- Multi-line headings   
+
+-----------------------------------------------------------
+- Version: 0.3.0
+- Introduced Undo  
+- Fixed some bugs    
+
+-----------------------------------------------------------
+- Version: 0.2.0     
+- Moving view of map improved:  
+- New handling (acrobat reader style)  
+- New mousepointer  
+- Several tools to color a map  
+
+-----------------------------------------------------------
+- Version: 0.1.0  
+- Inital version, basic map layout   
+- Data is stored in XML 
diff --git a/tex/vym.tex b/tex/vym.tex
new file mode 100644 (file)
index 0000000..e20ceed
--- /dev/null
@@ -0,0 +1,1485 @@
+\documentclass[12pt,a4paper]{article}
+\usepackage[utf8]{inputenc}
+\usepackage{verbatim}
+\usepackage{hyperref}
+\usepackage{graphicx}
+%\usepackage{longtable}
+
+\setlength{\headheight}{0cm}
+\setlength{\headsep}{0cm}
+\setlength{\topskip}{0cm}
+\setlength{\topmargin}{-0.5cm}
+
+\setlength{\parskip}{1.5ex}
+\setlength{\parindent}{0cm}
+\setlength{\oddsidemargin}{0cm}
+\setlength{\textwidth}{16cm}
+\setlength{\textheight}{27cm}
+
+\newlength{\maximgwidth}
+\setlength{\maximgwidth}{14cm}
+\newcommand{\maximage}[1]{     
+       \begin{center}
+               \includegraphics[width=\maximgwidth]{#1} 
+       \end{center}
+}
+\newcommand{\hint}[1]{
+       \begin{center} 
+               \begin{tabular}{|rp{12cm}|} \hline
+                       {\bf Hint}:& #1\\       \hline
+               \end{tabular}
+                       \marginpar{\Huge !} 
+       \end{center} 
+}
+
+\newcommand{\vym}{{\sc vym }}
+\newcommand{\ra}{$\longrightarrow$}
+\newcommand{\la}{$\longleftarrow$}
+\newcommand{\ua}{$\uparrow$}
+\newcommand{\da}{$\downarrow$}
+\newcommand{\key}[1]{[#1]}
+
+\newenvironment{code}[1] { \verbatim #1}{\endverbatim  }
+
+\hypersetup{bookmarks, bookmarksopen,
+  pdftitle={VYM - a tool for visual thinking },
+  pdfauthor={Uwe Drechsel},    
+  pdfsubject={map},
+  pdfkeywords={map, tool},
+  pdfpagemode={UseOutlines},                                 
+  bookmarksopenlevel={1},   
+  colorlinks={true},     
+  linkcolor={blue},
+  urlcolor={green},
+  citecolor={red}} 
+
+
+\begin{document}
+\title{
+       \includegraphics[width=8cm]{images/vym-logo-new.png}
+       \\
+VYM \\ -- \\View Your Mind\\ {\small Version 1.12.0}}
+\author{\textcopyright Uwe Drechsel  }
+
+
+\maketitle
+
+\newpage
+
+\tableofcontents
+
+\newpage
+
+\section*{Credits}
+Many people have sent me their feedback and ideas, and all of that has
+helped a lot to make \vym better. Thanks to all of you!
+
+For this manual I would like to send some special thanks to
+
+\begin{itemize}
+       \item {\em Peter Adamson} for lots of feedback and proofreading of my
+             far from perfect english
+       \item The team of {\em AClibre (Academia y Conocimiento Libre)}
+          in Colombia for their translation of
+          the manual to spanish:
+                 \begin{center}
+                       \begin{tabular}{|p{7cm}|p{5.5cm}|} \hline
+                               Encargado & Actividad \\ \hline
+                               \begin{itemize}
+                                  \item Vanessa Carolina Guti\'errez Sanchez
+                                  \item Erika Tatiana Luque Melo
+                                  \item Jeffrey Steve Borb\'on Sanabria
+                                  \item John Edisson Ortiz Rom\'an
+                               \end{itemize} &
+                               \begin{itemize}
+                                       \item Traducci\'onl
+                                       \item Revisi\'on y correcciones varias
+                                       \item Estructuraci\'on y exporte
+                                       \item Revisi\'on y correcciones varias
+                               \end{itemize}     \\ \hline
+                       \end{tabular}   
+               \end{center}
+\end{itemize}
+\newpage
+
+
+\section{Introduction}
+\subsection{What is a \vym map?}
+A \vym map (abbreviated below as {\em map}) is a tree-like structure:
+\maximage{images/example1.png}
+Such maps can be drawn by hand on a sheet of paper or flip chart and help to
+structure your thoughts. While a tree like structure like the illustration above can be
+drawn manually \vym offers much more features to work with such maps.
+\vym is not just another drawing software application, but a tool to store and modify
+information in an intuitive way. For example you can reorder parts of
+the map by pressing a key or add various pieces of information like a complete
+email by a simple mouse click.
+
+Once you have finished collecting and organising your ideas, you can
+easily generate a variety of outputs including for example a
+presentation in Open~Office based on a {\em map}.
+
+\hint{You find the map shown above and others by clicking \begin{center}Help \ra Open vym
+examples\end{center} in the menu bar.}
+
+\subsection{Why should I use {\em maps}? Time, Space and your Brain.}
+\subsubsection*{Space}
+A {\em map} can concentrate very complex content in a small space such as a
+piece of paper. It helps to use both sides of your brain: the logical
+side and also your creative side (e.g. by using pictures, colours and
+keywords in a map, often called {\em anchors}).  It is a technique to help
+organize the way you think and stimulate your creativity: It can help you by developing, sorting and helping to memorise your ideas. 
+
+\subsubsection*{Time}
+Because you just use keywords and drawings, it is much faster than good
+old fashioned 'notes'. Your brain memorizes things by associating them with
+other things -- a {\em map} makes use of those connections and stimulates
+new asccociations. 
+
+
+\subsubsection*{Your Brain}
+In 1960 Prof. {\sc Roger Sperry} discovered that both hemispheres
+of the human brain undertake different tasks (of course both of them
+basically {\em can} do the same): 
+\begin{center}
+\begin{tabular}{|p{5.5cm}|p{5.5cm}|} \hline
+       Left side & Right side \\ \hline
+       \begin{itemize}
+          \item verbal speech and writing 
+          \item numbers
+          \item logical thinking
+          \item analysing and details
+          \item science
+          \item linear thinking
+          \item concept of time
+       \end{itemize} &
+       \begin{itemize}
+               \item body language
+               \item visual thinking, day dreams
+               \item intuition and emotion
+               \item overview of things
+               \item creativity
+               \item art, music, dancing
+               \item non-linear thinking, connecting things
+               \item spatial awareness
+       \end{itemize}     \\ \hline
+\end{tabular}  
+\end{center}
+In our science oriented western society we have learned to mainly rely on our
+left side of the brain, the "rational" one. In other cultures, such as the native americans and other "old" cultures, the right
+side is much more important. {\em Map} are just one way to stimulate the
+other side and make use of additional resources we all have.
+
+
+\subsection{Where could I use a {\em map}?}
+Here are some examples, how you can use those {\em maps}
+\begin{itemize}
+    \item to prepare articles, papers, books, talks, \ldots
+    \item to sort complex data
+    \item to memorize facts, peoples names, vocabulary, \ldots
+    \item to sort emails, files and bookmarks on your computer
+    \item to moderate conferences
+    \item to brainstorm solutions to problems
+    \item to record the tasks when planning a project
+\end{itemize}
+
+\subsection{What you shouldn't do with a {\em map}...}
+A {\em map} drawn by somebody shows the way that the author thinks. There is
+no question of right or wrong in the way it is drawn, so there is no way to criticise
+it. "It is, what it is" ({\sc F.~Lehmann}).The tool will be of considerable use to the author and only very limited use to anyone else. 
+
+However, when groups share in creating a {\em map} all of the group will benefit from its use. An example of such use is when a Tutor develops a {\em map} with a group of students during instruction. Another group use is when a Project leader gathers a group of specialists to help {\em map} the tasks that will be required to deliver a project.
+
+%\section{Tutorials}
+%TODO
+
+\subsection{Internet Ressources} 
+A good starting point to learn more about Mindmaps in general is Wikipedia:
+\begin{itemize}
+       \item English: 
+               \href{http://en.wikipedia.org/wiki/Mind_map}{http://en.wikipedia.org/wiki/Mind\_map}
+       \item German: 
+               \href{http://de.wikipedia.org/wiki/Mindmap}{http://de.wikipedia.org/wiki/Mindmap}
+\end{itemize}
+
+
+
+
+\section{The Concept of the \vym application}
+%TODO may add a general introduction here...
+\subsection{The Mainwindow and its satellites} \label{satellite}
+\vym comes with several windows, the central one being the {\em
+mapeditor}.
+More windows, each having a special purpose, can be opened and arranged
+around the mainwindow\footnote{
+       The advantage of having separate window instead of integrating them
+       in a combined workspace is flexibility in arranging the windows. For
+       example I usually have the {\em noteeditor} "behind" the {\em
+       mapeditor}. On Linux my windowmanager (KDE) allows me to enter text
+       into a small visible corner of the {\em noteeditor} withour clicking
+       the mouse button in it. I just push the mouse around to set the
+       window focus, a concept which is useful also working with 
+       \href{http://www.gimp.org}{http://www.gimp.org}.
+}. 
+The image below shows the {\em mapeditor}
+together with the often used {\em noteeditor}: 
+\maximage{images/windows.png}
+Most of the time you will work in the {\em mapeditor} by just adding new
+branches, moving around and reordering them. The various ways to do this
+will be explained in \ref{mapeditor}. You can store additional
+information e.g. the content of a email easily in a {\em branch}: Just
+type or copy\&paste it into the {\em noteeditor}. Working with notes is
+explained in \ref{noteeditor}
+Here is a list of the available satellite windows:
+\begin{itemize}
+       \item Noteeditor (see \ref {noteeditor})
+       \item Historywindow (see \ref{historywindow})
+       \item Branch Property Window (see \ref{propwindow})
+\end{itemize}
+
+
+\subsection{Menus and Context menus}
+At the top of each window you will find the menubar. The options provided there
+are similar to those you are probably used to from other applications. Note that
+many (and even more) options are available via {\em context menus}. Those
+are available if you right-click onto an object in a map (on Mac~OS~X
+Command-Click).
+
+\subsection{Toolbars}
+The toolbars in the mainwindows give quick access to many functions and
+also display the state of selected objects in the map. For example a
+branch may show certain {\em flags}, the corresponding flags are also
+set in the toolbar. 
+
+\hint {You can reposition all toolbars by simply grabbing and
+dragging them with the toolbar handle to a new position. For example you
+can move the flags-toolbar from its original horizontal position on top
+of the mapeditor to a vertical position on the right side.  Or just
+insert it again at its original position. Also hiding some of the
+toolbars is possible by right-clicking on the toolbar handle.}
+
+\subsection{Maps}
+The  {\em map} itself has always a {\em mapcenter}.  The
+mapcenter has {\em branches} radiating out from the centre just like the trunk 
+of a tree. Each branch in turn may have branches again.
+       \maximage{images/branches.png}
+We will call a branch directly connected to the mapcenter a {\em
+mainbranch}, because it determines the position of all its child
+branches.
+
+The mapcenter and the branches all have a {\em heading}. This is the
+text you see in the mapeditor. Usually it should just be one or a few
+key words, so that one can easily keep track of the whole map.
+
+
+In the toolbar above the mapeditor you see various symbols.
+       \maximage{images/default-flags.png}
+These are called {\em flags} and can be used to mark branches in the
+{\em map}, e.g. if something is important or questionable. 
+There are also more flags set by \vym automatically to show additional
+information, e.g. when a note is attached to a  particular branch.
+
+By default some of these flags are set exclusively e.g. when the 
+"thumb-up" flag is set, then the "thumb down" is reset and vice
+versa. You can change this default behaviour in the settings menu (see
+\ref{settings}).
+
+\section{Mapeditor} \label {mapeditor}
+\subsection{Start a new map}
+After \vym is started two windows will open: the {\em mapeditor} and the {\em noteditor}. Usually you will work in both windows, but at the moment we
+will just need the mapeditor. 
+
+Select the mapcenter "New map" in the middle of the mapeditor by
+left-clicking with the mouse. It will be highlighted yellow to show that is
+selected. There are several ways to add a new branch to the center:
+\begin{itemize}
+       \item Using the mouse: Open the context menu by clicking with the
+       right mouse button (CTRL-Click on Mac) onto the
+       mapcenter and choose Add \ra Add branch as child
+       \item Press \key{Ins} or \key{A}
+\end{itemize}
+A new branch will appear and you will be able to type the heading of the
+branch. Finish adding the new branch by pressing \key{Enter}.
+%tipp
+Sometimes it comes in handy to be able to add a new branch above or below the current
+one. 
+\begin{itemize}
+       \item Use \key{Shift-A} to add a branch above the selected one or... 
+       \item \key{Ctrl-A} to add one below. 
+\end{itemize}
+It is also
+possible to add a branch in such a way, that the current selection
+becomes the child of the new branch, which is like inserting it {\em
+before} the selection. This can be done using the context menu.
+
+\hint{To delete a branch press \key{CTRL-X}. If enabled in the Settings
+menu (see \ref{settings}), you can also use the \key{Del} key.}
+
+\subsection{Navigate through a map}
+\subsubsection*{Select branches}
+To select branches you can use the left button of your mouse or also the
+arrow keys. Depending on the {\em orientation} of a branch tap
+\key{\la} or \key{\ra} to move nearer to the mapcenter or deeper
+down into the branches. Within a set of branches, let's call them a 
+{\em subtree}, you can use \key{PgUp} and \key{PgDn} to go up and down. You can
+also use \key{Home} and \key{End} to select the first and last branch.
+
+
+\subsubsection*{Panning the view of a map}
+While adding more and more branches the size of the map may become
+larger than the mapeditor window. You can use the scrollbars on the
+right and the bottom of your mapeditor window to scroll the view up or down or left or right. It is easier to just scroll using the left mouse button: Click anywhere on the {\em canvas} itself. Choose an empty space somewhere between the branches. The
+mouse pointer will change from an arrow to a hand, now move or drag the visible
+map to show the desired part.
+
+If you select branches using the arrow keys, the map will scroll
+to ensure that the selected branch is always visible.
+
+\subsubsection*{Zooming the view of a map}
+Working with huge maps, the {\em zoom}-function comes in handy: You can
+use 
+\begin{itemize}
+       \item from the menu: View \ra Zoom in, View \ra Zoom out, View \ra reset Zoom.
+       \item the toolbar buttons 
+               \begin{center}
+                       \includegraphics[width=3cm]{images/zoom-buttons.png}
+               \end{center}    
+\end{itemize}  
+Clicking the crossed magnifying lens icon will reset the zoomed view to its original size.
+
+
+\subsubsection*{Find Function} \label{findwindow}
+With huge maps there is the need to have a
+find function. Choose Edit \ra Find to open the Find Window:
+\begin{center}
+       \includegraphics[width=6cm]{images/find-window.png}
+\end{center}   
+The find function will search for, the text you enter here, in all the branch headings and also in the associated notes. Everytime you press the "Find"-button it will look for the next occurence, which will then be selected automatically. If the search
+fails, a short message "Nothing found" will appear for a few
+seconds in the {\em statusbar} on the bottom of the mapeditor.
+
+\subsubsection*{Keep the overview -- scroll a part of the map}
+A very big subtree of a map e.g. a branch with hundreds of child branches would make
+it very hard to keep an overview over the whole map. You can hide all
+the children of a branch by {\em scrolling} it -- this function is often called {\em folding}. Think of the whole subtree as painted onto a
+broadsheet newspaper. You can scroll or fold the paper to a small roll, leaving just
+the headline visible.
+
+To scroll or unscroll a branch and its children,
+\begin{itemize}
+       \item press either the \key{Scroll Lock} key or the \key{S}
+       \item press the middle-mouse button or
+       \item choose the scroll icon from the toolbar.
+\end{itemize}
+If you select parts of a scrolled branch e.g. using the find function or
+by using the arrow-keys, it will unscroll temporary. This is shown as a
+scroll with a little hour glass. If the temporary unscrolled part is no
+longer needed, it will be hidden again automatically. It is also
+possible to unscroll all branches using "Edit\ra Unscroll all scrolled
+branches".
+
+You can also hide parts of the map while exporting it e.g. to a webpage
+or a presentation, see \ref{hideexport} for details.
+
+\subsection{Modify and move branches}
+\subsubsection*{Modify the heading}
+You can edit the heading by selecting the branch and then
+\begin{itemize}
+       \item pressing \key{Enter}
+       \item pressing \key{F2}
+       \item double-clicking with left mouse.
+\end{itemize}
+Just type the new heading (or edit the old one) and press \key{Enter}.
+
+\subsubsection*{Move a branch}
+The easiest way to move a branch is to select it with left-mouse and
+drag it to the destination while keeping the mouse button pressed.
+Depending on the branch  it will be
+\begin{itemize}
+       \item moved to the destination or
+       \item {\em linked} to a new {\em parent} (mapcenter or branch)
+\end{itemize}
+If you drag the branch over another one or over the mapcenter, you will
+notice that the  link connecting it to the old parent will be changed to
+lead to the  new parent which is now under your mousepointer. 
+If you release the button now, the branch will be relinked.
+
+If you release the button in the middle of nowhere, the result will
+depend on the type of branch you are releasing:
+\begin{itemize}
+       \item A mainbranch is directly connected to the mapcenter.
+               It will stay on its new position.
+       \item An ordinary branch will "jump" back to its original position.     
+\end{itemize}
+Thus you can easily rearrange the layout of the mainbranches to avoid
+overlapping of their subtrees.
+There is another convenient way to move branches, especially if you want
+to {\em reorder} a subtree: You can move a branch up or down in a
+subtree by
+\begin{itemize}
+       \item pressing \key{\ua} and \key {\da}
+       \item selecting Edit \ra Move branch
+       \item clicking on the toolbar buttons:
+               \begin{center}
+                       \includegraphics[width=1.5cm]{images/move-buttons.png}
+               \end{center}    
+\end{itemize}
+%tipp
+There is yet another way to move branches: If you press \key{Shift} or
+\key{Ctrl} while moving with the mouse, the branch will be added above
+or below the one the mouse pointer is over. This can also be used to reorder branches in a map.
+
+\subsection{Colours and Images - Using the right side of your brain}
+\subsubsection*{Change colour of a heading}
+You can also use colours to add more information to a map, e.g. use
+red, green and more colours to prioritize tasks. Again you can
+\begin{itemize}
+       \item use the menu and choose e.g Format \ra Set Color
+       \item use the toolbar
+               \begin{center}
+                       \includegraphics[width=3cm]{images/color-buttons.png}
+               \end{center}    
+\end{itemize}
+The first button (black in the graphic above) shows the current colour.
+Clicking on it let's you choose another colour. You can also "pick"
+another colour by selecting a branch with the desired colour and using the
+"pick colour" button. Both of the icons showing a palette actually apply
+the current colour to the selected branch. While the first one just
+colours the heading of the selection, the last one also colours all the
+children of the selected branch.
+
+%tipp
+A very useful function is the "copy colour" using the mouse: Select the
+branch which should get the new colour, then press \key{Ctrl} and
+simultanously click with left-mouse on another branch to copy its colour
+to the first one. Here the children of the selection also will get the new
+colour, if you just want to colour the selection itself, additionally
+press \key{Shift}.
+
+\subsubsection*{Use flags}
+\vym provides various flags. They are usually displayed in the toolbar on top of the
+mapeditor window. (Note: Like all toolbars you can also move them to the
+left or the right side of the window or even detach them. Just grab the
+very left "dotted" part of the toolbar with your left-mouse button.) 
+       \maximage{images/default-flags.png}
+If you have a branch selected, you can set any number of flags by
+clicking them in the toolbar. The toolbar buttons change their state and
+always reflect the flags set in the selected branch. So, to remove a flag from a branch, select the branch and then click the highlighted flag on the toolbar.
+
+At present \vym uses two kinds of flags: {\em System Flags} and {\em
+Standard Flags}. The standard flags are those shown in the toolbar.
+System flags are set by \vym to indicate e.g. that there is additional
+information in a note (more on this in \ref{noteeditor}). Later versions
+of \vym may have another kind of flags, which may be edited by the user.
+
+\subsubsection*{Images}
+The easiest way to add an image to a branch is by dragging it e.g. from a
+webbrowser to the mapeditor while a branch is selected there.
+
+You can also add an image to a branch by opening the context menu of the
+branch. Right click the selected branch, choose "Add Image". A
+dialog window enables you choose the image to load. 
+\footnote{Supported image types are: PNG, BMP, XBM, XPM and PNM. It may
+       also support JPEG, MNG and GIF, if specially configured during
+       compilation (as done when \vym is part of SUSE LINUX).}
+While an image is selected in the dialog, a preview of the
+image is displayed. It is also possible to select multiple images.     
+
+You can position the image anywhere you want, just drag it with left
+mouse. To relink it to another branch, press \key{Shift} while moving
+it. To delete it, press \key{Del}. 
+
+If you right-click onto an image, a context menu will open which let's
+you first choose one of several image formats. Then a file dialog opens
+to save the image. 
+
+Hint: This is used to "export" the image, it will be
+saved anyway in the map itself! You can also cut and
+copy images, but it is not possible to add objects to an image\footnote{
+       Images are regarded as "extra feature". It would make working with
+       the map much more complex if e.g. images could be linked to images.}
+
+The option \lq{\bf Use for export} \rq controls the output of exports
+e.g. to HTML: If set to no, the image won't appear in the {\em text}
+part of the output. This is useful for large images or if images are
+used as a kind of frame e.g. the famous cloud symbol around a part of
+the map. Those shouldn't appear in the middle of the text.
+
+At the moment image support is preliminary: Images will be saved
+together with all the other data of a map in the {\tt .vym}-file.
+Later versions will include more functionality like resizing the images,
+changing its z-value (put it into background) etc.
+
+\subsubsection*{Frames}
+A frame can be added to a branch in the {\em property window} (see
+\ref{propwindow}). 
+Alternatively, you can use use images as frames. Have a look at the demo
+map {\tt todo.vym} as an example, where the mapcenter is a cloud. You
+can use an external drawing program like {\tt gimp} to create an image,
+preferable with an transparency channel, so that you can design frames
+which don't use a rectangular borderline, just like that cloud.
+
+
+\subsection{Design of map background and connecting links }
+The design of the background of a map and also of the links connecting
+various parts of the map can be changed by
+\begin{itemize}
+       \item Selecting Format from the menu
+       \item Right clicking on the canvas, which will open a context menu
+\end{itemize}
+
+\subsubsection*{Background }
+The colour is set (and also displayed) as "Set background colour".
+Alternatevily you can set an background image, though this is not
+recommended in general. Working on the map becomes slow and the image
+currently cannot be positioned freely.
+
+\subsubsection*{Link colour}
+Links connecting branches can be coloured in one of two ways:
+\begin{itemize}
+       \item use the same colour for the heading and for the branch link line.
+       \item use {\em one} colour for all links and choose different colours for the branch headings text. The default colour for branch link lines is blue.
+\end{itemize}
+The latter can be set with "Set link colour". Check or uncheck the "Use
+colour of heading for link" option to toggle between the two designs for
+your map.
+
+\subsubsection*{Link style}
+\vym offers four different styles for the appearences of links:
+\begin{itemize}
+       \item Line
+       \item Parabel
+       \item Thick Line
+       \item Thick Parabel
+\end{itemize}
+The "thick" styles only apply to links starting at the mapcenter, link lines for the rest
+of the map are always painted "thin".
+
+
+\subsection{Links to other documents and webpages}
+\vym supports two kind of external links:
+\begin{itemize}
+       \item Document, which will be opened in an external webbrowser
+       \item \vym map, which will be opened in \vym itself
+\end{itemize}
+In addition to the external links there also internal ones, leading from one
+branch in a map to another one. Those are called {\em XLinks} and are explained
+in section~\ref{xlinks}.
+
+\subsubsection*{Webbrowser}
+Modern Webbrowsers like {\tt konqueror and Firefox} are able to display various
+types of files, both local or on the internet. To enter the URL of
+any document, press \key{U} or right-click  onto a branch to open the contextmenu then choose
+"References\ra Edit URL". If you want to use a file dialog to
+conveniently choose a local file you can use~\key{U}.
+
+After an URL was entered, a little globe will appear in the branch. By
+clicking on the globe in the toolbar or the context menu an external
+browser\footnote{
+       The browser can be changed in the Settings Menu (see \ref{settings}).}
+will be launched.
+\begin{center}
+       \includegraphics[width=0.5cm]{images/flag-url.png}
+\end{center}
+For more information on working with bookmarks and webbrowsers see
+section \ref{bookmarks}.
+
+In the context menu there is also an option to open all URLs found
+in the selected subtree of the map. That's useful to simultanously open
+a collection of URLs in the webbrowser, especially if the browser can
+open them in tabs (like Konqueror).
+
+
+\subsubsection*{\vym map}
+To link to to another map right click on a branch and choose "Edit \vym link". A file dialog opens where you can choose the map. A
+branch with a link is marked with 
+\begin{center}
+       \includegraphics[width=0.5cm]{images/flag-vymlink.png}
+\end{center}
+Clicking this flag beside the branch heading, in the toolbar or in the context menu of a branch will open the map in another tab (see \ref{tabs} for working with
+multiple maps). To delete an existing link, just right click the branch and select "Delete \vym link".
+
+In the context menu there is also an option to open all vymlinks found
+in the selected subtree of the map. That's useful to simultanously open
+a collection of related maps.
+
+Technical note: Internally \vym uses absolute paths, to avoid opening
+several tabs containing the same map. When a map is saved, this path is
+converted to a relative one (e.g. {\tt /home/user/vym.map} might become
+{\tt ./vym.map}. This makes it fairly easy to use multiple maps on
+different computers or export them to HTML in future.
+
+\subsection{Multiple maps} \label{tabs}
+You can work on multiple maps at the same time. Each new map is opened
+in another {\em tab}. The available tabs are shown just above the
+mapeditor. You can use the normal cut/copy/paste functions to
+copy data from one map to another.
+
+%todo
+
+%TODO
+%\subsubsection{Menus}
+%\subsubsection{Keyboard shortcuts}
+
+% Settings
+% Images
+% Copy & Paste
+% Working with tabs (multiple maps)
+% Exporting
+% Scrolling
+
+\section{Noteeditor} \label {noteeditor}
+If you want to attach more text to a branch e.g. a complete email, a
+cooking recipe, or the whole source code of a software project, you can
+use the noteeditor. 
+       \maximage{images/noteeditor.png}
+This editor displays text associated with a branch selected in the mapeditor. The noteeditor
+shows different background colours depending on whether text is associated with a selected branch.
+
+\subsection{States}
+Before you can type or paste text into it, you have
+to select a branch in the mapeditor. Note that the background colour
+of the noteeditor indicates its state:
+\begin{itemize}
+       \item grey: no text entered yet
+       \item white: some text has been entered
+\end{itemize}  
+In the mapeditor itself, to signal that there is a note with more
+information for a particular branch, a little "note" flag will appear next
+to the heading of the branch. This is illustrated in the lower branch on the right hand side:
+       \maximage{images/branches-flags.png}
+
+\subsection{Import and export notes}
+The note is always saved automatically within the \vym map itself.
+Nevertheless sometimes it is nice to import a note from an external file
+or write it. In the Note Editor use "File\ra~Import" and "File\ra~Export" to do so. 
+
+\subsection{Edit and print note}
+Editing works like in any simple texteditor, including undo and redo
+functions. You can delete the complete note by clicking the
+trashcan. Only the note itself is printed by clicking the printer icon.
+
+\subsection{RichText: Colours, paragraphs and formatted text}
+\vym supports formatted text (QT Rich Text) in the noteeditor since
+version 1.4.7.  Colours and text attributes (e.g. italic, bold) can be
+set with the buttons above the text.  The text itself is divided into
+paragraphs. For each paragraph the format can be set (e.g. centered,
+right). A paragraph is ended when a \key{Return} is entered. If you just
+want to begin a new line, press \key{CTRL-Return}.
+
+\subsection{Fonts and how to switch them quickly}
+The noteeditor is designed to be used for simple notes, not really as a full
+featured word processor. Because of many requests \vym supports 
+formatted text in the noteeditor\footnote{
+       \vym uses the QRichtText format, which is basically a subset of the
+       formatting provided in HTML.}
+Two default fonts are supported which can be set in the Settings menu
+(see \ref{settings}).
+One is a fixed width font, the other has variable width. The fixed font
+is usually used for emails, source code etc.\ while the variable font is
+used for simple notes, where one doesn't need fixed character widths.
+Both fonts can easily switched using the following symbol from the
+toolbar:
+\begin{center}
+       \includegraphics[width=0.5cm]{images/formatfixedfont.png}
+\end{center}
+In the Settings menu both fonts can be set. The default font can also be toggled between the fixed and variable font by selecting or deselecting the "fixed font is default" menu item.
+
+Additionally to the default fonts any font installed on your system can
+be used. Please note, that the chosen font also will be used for HTML
+exports, so if youy VYM mind map could ever be exported to a web or intranet page you should only use fonts which are available generally.
+
+\subsection{Find text}
+The noteeditor itself has no Find function, use Find in the mapeditor,
+which will also search all notes (see \ref{findwindow}).
+
+\subsection{Paste text into note editor}
+Often you will paste text into the editor from another application e.g.
+an email. Normally \vym will generate a new paragraph for each new line.
+This usually is not what you want, so you can choose from the menu
+
+
+\section{Hello world}
+This section is about how \vym can interact with other applications.
+Many applications can now read and write their data using XML, the
+eXtensible Markup Language. \vym also uses XML to save its maps, see
+\ref{fileformat} for a more detailed description. 
+
+So if you make use of another application that understands XML, chances are good that someone
+could write import/export filters for \vym. Volunteers are always
+welcome ;-)
+
+\subsection{Import} \label{import}
+
+\subsubsection*{KDE Bookmarks}
+The integrated bookmark editor in KDE (Konqueror etc.) is somewhat limited, so why not
+use \vym to maintain the bookmark mess? To create a new map containing
+your current KDE bookmarks just choose
+\begin{itemize}
+       \item File \ra Import\ra KDE Bookmarks
+\end{itemize}
+
+\subsubsection*{Mind Manager}
+\vym has currently a very basic import filter to convert maps created by
+{\em Mind Manager}\footnote{Mind Manager is a commercial i.e. non free, software application by Mindjet for Windows and the Mac. Both names are registered trademarks by Mindjet. For more information see their website at
+\href{http://mindjet.com}{http://mindjet.com}} into \vym maps. Notes and
+pictures are not converted at the moment. You can import files with
+\begin{itemize}
+       \item File \ra Import\ra Mind Manager
+\end{itemize}
+
+
+\subsubsection*{Directory structure}
+\vym can read a directory structure. This is mainly for
+testing \vym e.g. to easily create huge maps used for benchmarks (yes,
+there is still room to optimize \vym ;-)
+
+
+
+
+\subsection{Export}  \label{export}
+\label{hideexport}
+Often you may not want to export the whole map, but just parts of it. For
+example you may have additional info you want to talk about in a
+presentation, while those parts should not be visible to the audience.
+To achieve this you can "hide" parts of the map during exports by
+setting the "hide in export" flag.
+\begin{center}
+       \includegraphics[width=0.5cm]{images/flag-hideexport.png}
+\end{center}
+You can toggle this flag in the toolbar or by pressing \key{H}.
+Note that there is a global option in the settings menu (
+\ref{settings}) to toggle the use of this flag. By default the flag is
+enabled.
+
+\subsubsection*{Open Office}
+Open Office beginning with version~2 uses the so called "Open Document Format", which can be written by \vym. The options are
+currently limited, but it possible to export presentations which can be
+opened in Open Office Impress. By selecting
+\begin{itemize}
+       \item File  \ra Export\ra Open Office
+\end{itemize}
+you get a file dialogue where you can choose the output file and the
+file type:
+       \maximage{images/export-oo.png}
+The file types represent various templates, which can be created with
+some manual work from an existing Open Office document. The structure of
+\vym map is then inserted into a template. 
+There are some limitations at the moment:
+\begin{itemize}
+       \item \vym can't take care of page lengths, so you have to check and
+       probably reedit in Open Office to avoid text running over the end of
+       a page
+       \item Images and flags are not used at the moment
+       \item Notes are just written as plain text, without RichText 
+       \item The full range of templates are not available in all distributions.       
+\end{itemize}
+Some of the templates make use of {\em sections} i.e sections insert the
+headings of mainbranches as chapters for sections into the presentation.
+
+\subsubsection*{Image}
+\vym supports all image formats which are natively supported by the
+QT~toolkit:
+BMP, JPEG, PBM, PGM, PNG, PPN, XPM, and XBM.
+For use in websites and for sending images by email PNG is a good
+recommodation regarding quality and size of the image. \vym uses QTs
+default options for compressing the images.
+
+\subsubsection*{ASCII}
+Exporting an image as text is somewhat experimental at the moment. Later
+this will probably be done using stylesheets. So the output may change in
+future versions of \vym.
+
+\subsubsection*{\LaTeX}
+\vym can generate an input file for \LaTeX. Currently this is considered
+as experimental, there are no options (yet). 
+By selecting
+\begin{itemize}
+       \item File  \ra Export\ra \LaTeX 
+\end{itemize}
+you will be asked in a file dialog for the name of the output file. This
+file may then be included in a \LaTeX document using command: 
+\begin{verbatim}
+       \include{inputfile.tex}
+\end{verbatim}
+
+\subsubsection*{KDE Bookmarks}
+\vym will overwrite the KDE bookmarks file and then try to notify
+running Konquerors via DCOP of the changed file. \vym does not create a
+backup!
+\begin{itemize}
+       \item File \ra Export \ra KDE Bookmarks
+\end{itemize}
+
+
+\subsubsection*{XHTML (Webpages)}
+
+This is the format to use if you wish to create a webpage. To see an example
+visit the \vym homepage: 
+\href{http://www.InSilmaril.de/vym}{www.InSilmaril.de/vym}
+
+Some explanation on how this works: 
+Before a map is exported as XHTML, it will be first written as XML into a
+directory (see \ref{xmlexport}). Then the external program {\tt
+xsltproc}\footnote{On SUSE Linux and some other distributions {\tt xsltproc} is installed by
+default.}
+will be called to process the XML file and generate HTML code.
+A dialog allows the user to set various options:
+\begin{itemize}
+       \item {\bf Include image:} If set, \vym will creat an image map at
+       the top of the HTML output. Clicking on a branch in the map will
+       jump to the corresponding section in the output.
+
+       \item {\bf Colored headings:}
+       If set to yes, \vym will colour the headings in the text part  with the
+       same colours used in the \vym map.
+       \item {\bf Show Warnings:}
+       If set to yes, \vym will ask before overwriting data.
+       \item {\bf Show output:}
+       This is useful mainly for debugging. It will show how the processing of
+       the XML file works by calling the external {\tt xsltproc}.
+\end{itemize}
+Additionally the paths to the CSS and XSL stylesheets can be set. By
+default on SUSE~Linux they will be in {\tt /usr/share/vym/styles}.
+
+
+\subsubsection*{XML} \label{xmlexport}
+The map is written into a directory both as an image and as an XML file. The
+directory is set in a file dialog. If the directory is not empty, you
+will be warned and offered choices if you are at risk of overwriting existing contents.
+
+It is possible to export different maps into the same directory. Each
+file generated will have the map's name as prefix, e.g. {\tt todo.vym}
+becomes {\tt todo.xml}, {\tt todo.png}, {\tt todo-image-1.png} and so
+on. This is useful if, for example, a website comprises several combined maps that have to be stored in the same directory.
+
+\subsubsection*{Export a part of a map}
+Select a branch you want to export together with its children, then open
+the context menu and choose {\em Save Selection}. This will create a
+file with the suffix {\tt .vyp}, which is an abbreviation for \lq vym
+part\rq.
+
+
+\section{Advanced Editing}
+
+\subsection{Properties of an object} 
+For any branch you can open a satellite window (see \ref{satellite}):
+the {\em property window}:
+\begin{center}
+       \includegraphics[width=8cm]{images/propwindow.png}
+       \label{propwindow}
+\end{center}
+%FIXME create screenshot
+%FIXME explain the tabs
+
+\begin{itemize}
+       \item Frame
+       \item Link (see \ref{hideunselected})
+       \item Layout (see \ref{incimg})
+\end{itemize}
+
+\subsection{Changing the history: Undo and Redo}
+\vym keeps track of all changes done in a map. The default number of
+changes which can be undone is~75. The complete history can be seen in
+the {\em historywindow}:
+       \maximage{images/historywindow.png}
+       \label{historywindow}
+A single step back be undone or redone with \key{CTRL-Z} or \key{CTRL-Y},
+or by using the buttons in the toolbar or the {\em historywindow}.
+Inside the {\em historywindow}, you can click on a line to unwind all
+actions done until that point in time -- or redo all changes by clicking
+on the last line.
+
+\hint{
+       You can "paste from the past": Go back in time by e.g. with
+       \key{CTRL-Z}, then copy to clipboard by pressing \key{CTRL-C}.
+
+       Now do all actions again, e.g. by \key{CTRL-Y} or clicking on the
+       last action in {\em historywindow}. Now paste from the past with
+       \key{CTRL-V}.
+}
+
+\subsection{Macros} \label{macros}
+Macros have been added to \vym in version~1.9.0. 
+So far they have a preliminary character, maybe they are going to be
+replaced by full-featured scripting functionality later (though the
+commands will be more or less the same).
+
+Each function key
+\key{F1} to \key{F12} holds a macro, which is executed on the current
+selection if the key is pressed. The default macros change the colour of
+a subtree or set the frame of a branch:
+\begin{center}
+       \includegraphics[width=8cm]{images/macros.png}
+\end{center}
+Each macro is a \vym script, which is executed when the associated key
+is pressed. The default location of the scripts can be changed in the
+Settings menu. More information on using scripts in \vym is found in
+[\ref{settings})
+appendix~\ref{scripts}.
+
+\subsection{Bookmarks} \label{bookmarks}
+\subsubsection*{Open new tabs instead of new windows}
+If you use konqueror as your browser, \vym will remember the konqueror session which
+was opened first by \vym. You can also press \key{Ctrl} and click to
+open the link in a new tab.
+
+\vym can also open a new tab in Mozilla or Firefox using the remote
+command\footnote{\href{http://www.mozilla.org/unix/remote.html}{http://www.mozilla.org/unix/remote.html}}
+of these browsers.
+
+\subsubsection*{Drag and Drop}
+If you want to keep bookmarks in a map, select a branch where you want
+to add the bookmark, then simply drag the URL from your browser to the
+map. Also you could use an existing heading as URL: Right click onto the
+branch and select "Use heading for URL".
+
+
+\subsubsection*{Directly access bookmark lists of a browser}
+Please see the sections \ref{import} and \ref{export} about
+Import and Export filters.
+
+\subsubsection*{Special URLs}
+\vym can turn an existing heading of a branch into an URL. Currently
+this works for Bugentries in the Novell Bugtracking system: Open the
+context menu of a branch (usually by right-clicking it) and select
+\begin{itemize}
+       \item Create URL to Bugzilla
+\end{itemize}
+The URL will be build from the number in the heading.
+
+\subsection{Associating images with a branch} \label{incimg}
+The default setting for an image is for it to float "freely". Images can be
+positioned anywhere on the canvas, but may end up in the same place as other
+parts of the map obscuring that part of the map.
+
+The solution is to insert or include them "into" a branch. This can be done via
+the property window (see \ref{propwindow}):
+\begin{itemize}
+       \item Include images horizontally
+       \item Include images vertically
+\end{itemize}
+The image is still positioned relative to its parent branch, but the
+heading and border of the branch frame adapt to the floating image, see below: 
+       \maximage{images/includeImages.png}
+
+\subsection{Modifier Modes} 
+Modifiers are for example the \key{Shift}- the \key{Ctrl}- ot the \key{Alt}-keys. When
+pressed while applying mouse actions, they will cause \vym to use
+a "modified" version of the action which usually would be done. 
+
+%\key{Ctrl} or \key{Alt}is pressed while releasing the branch, it will be
+%added above/below the target, not as child of the target.
+
+Without a modifier key pressed, the first mouse click on a branch just selects
+it. For the behaviour of the \key{Ctrl} modifier there are several
+options, which can be set from the modifier toolbar:
+\begin{center}
+       \includegraphics[width=3cm]{images/modmodes.png}
+\end{center}
+The default mode is to copy the colour from the clicked branch to the already
+selected branch. The figure above shows the toolbar with the default modifier 
+selected. The second modifier
+let's you easily copy a whole branch with a single click. The third
+modifier lets you create links between branches called {\em xLinks}.
+They will be explained in the next section \ref{xlinks}.
+
+\subsection{Hide links of unselected objects} \label{hidelink}
+Sometimes it would be useful to position a branch freely, just like a
+mainbranch or an image. This is possible for all
+branches, you can use a mainbranch and hide its connecting link to the
+mapcenter or hide the link between a child branch and its parent. This can be used e.g. for legends or a collection of vymLinks
+pointing to other maps:
+\begin{center}
+       \includegraphics[width=9cm]{images/hiddenlink.png}
+\end{center}
+To hide the link between a branch and its parent open the
+\ref{propwindow} and check "Hide link if object is not selected" on
+"Link" tab.
+
+
+\subsection{XLinks} \label{xlinks}
+So far all the data in the \vym map has been treelike. Using xLinks you
+can link one branch to any other, just like attaching a rope between two
+branches in a real tree. This is especially useful in complex maps,
+where you want to have crossreferences which can not be displayed on the same
+visible area of the {\em mapeditor} window. The following example map still fits on one screen, but shows how data can be crosslinked. In the graphics there is a link from a task (prepare a presentation) to general information:
+       \maximage{images/xlink.png}
+Note that a xLink which points to a branch that is not visible (because
+it is scrolled), is just shown as a little horizontal arrow. In the
+screenshot above have a look at the \lq Tuesday\rq\ branch.
+
+\subsubsection*{Create a xLink}
+Choose the link mode from the modifier toolbar (by clicking the toolbar icon or pressing
+\key{L}). Select the branch, where the xLink should start. Press the
+modifier key \key{Ctrl} and then click on the selected branch where the
+link should start and drag the mouse pointer to the branch where the link is to end. (The link is drawn to follow the mouse pointer). When you release the mouse over a branch the xLink becomes permanent.
+
+\subsubsection*{Modify or delete a xLink}
+First select a branch at either end of the xLink. Then open the context
+menu and select \lq Edit xLink\rq. A submenu contains all the xLinks of
+the branch (if there are any). They are named like the branches, where
+they end. Choose one and the xLink dialogue opens, where you can set
+colour, width and also delete the xLink.
+
+\subsubsection*{Follow a xLink}
+In a complex \vym map it sometimes comes in handy to be able to jump to the other end
+of a xLink. You can do this by opening the context menu of the branch
+and clicking on \lq Goto xLink\rq and selecting the xLink you want to
+follow.
+
+
+
+\subsection{Adding and removing branches}
+The context menu of a branch shows some more ways to add and delete data
+e.g. you can delete a branch while keeping its children. The children become
+linked to the parent of the previously removed branch.
+Similar branches can be inserted into existing maps. For keyboard
+shortcuts also have a look at the context menu.
+
+\subsection{Adding a whole map or a part of a map}
+Select a branch where you want to add a previously saved map ({\tt
+.vym})or a part of a map ({\tt .vyp}) , then open the context menu and
+choose {\em Add \ra Add Map (Insert)}. For the import you can choose
+between {\em Add Map (Insert)} and {\em Add Map (Replace)}: The imported
+data will be added after the selected branch.
+
+
+\section{\vym on Mac OS X}
+\subsection{Overview}
+Basically there are two ways to run \vym on Macs:
+\subsubsection*{Qt Mac Edition:}
+       \vym here provides the well known Mac look and feel.  \vym is
+       available as Mac OS X application package in contained in a disk
+       image ({\tt vym.dmg}. It has been compiled and tested in
+       Mac~OS~10.4.  This package includes  runtime libraries of Qt by
+       Trolltech.
+       
+\subsubsection*{X11 version} \vym can also be run using the Linux
+version, but then menus and handling will also be those of the Linux
+version e.g. The menu bar will look different. 
+
+\subsection    {Contextmenu and special keys}
+Most Macs unfortunatly just have a single mouse button. In order to show
+the context menu which usually would be opened with the right mouse
+button, you can click while pressing the \key{kommand}-key.
+
+Especially on Laptops some of the keys usually used on PC keyboards seem
+to be missing. The QT-Mac Edition of \vym has its own keyboard
+shortcuts. To find the shortcuts just have a look at all the menu
+entries, the shortcut is visible next to an entry. Toolbar buttons also
+may have shortcuts, just position the mouse pointer over a button and
+wait for the little help window to appear. 
+
+\subsection {Viewing external links}
+\vym on Mac uses the system call {\tt /usr/bin/open} to view links.
+Mac~OS determines automatically if the link is a pdf or www page and
+opens the right browser.
+
+
+\newpage
+
+\begin{appendix}
+
+\section{\vym initialisation process and configuration}
+\subsection {Settings menu}
+       The {\em Settings} menu allows to configure \vym to your needs:
+
+\subsubsection*{Set application to open PDF files} Choose a PDF
+       viewer like {\tt acrobat} or {\tt konqueror} which is installed on
+       your system.
+
+\subsubsection*{Set application to open external links}
+       Choose your favourite webbrowser here.
+
+\subsubsection*{Set path for macros}
+       Set the default search path for macros, which will be executed when
+       you press one of the function keys. Each key corresponds to a file
+       ({\tt macro-1.vys..macro12.vys}) in the search path.
+
+\subsubsection*{Set number of undo levels}
+       Sets the number of undo/redo levels. The default setting is
+       75~levels.
+
+\subsubsection*{Autosave and autosave time}
+       Automatic saving of modified maps can be toggled on or off. The
+       autosave time is entered in seconds.
+
+\subsubsection*{Write backup on save}
+       When saving a map called {\tt example.vym}, \vym will rename the
+       existing file to {\tt example.vym\~{}} before writing the {\tt
+       example.vym} itself.
+
+\subsubsection*{Edit branch after adding it}
+       If set, the heading of a new branch will be edited immediatly after
+       adding the branch.
+
+\subsubsection*{Select branch after adding it}
+       If set, a new branch will be selected immediatly after adding it.
+       When you "brainstorm" on a given keyword, you don't want to go
+       deeper and deeper into details, but keep the focus on the keyword.
+       So the default setting here is to {\em not} select the freshly added
+       branch.
+       
+\subsubsection*{Select existing heading}
+       If set and you begin to edit the heading of a branch, the heading text in
+       the dialog will be selected. Usefully to copy\&paste to other
+       applications.
+
+\subsubsection*{Delete key}
+       If set, the \key{Delete} is enabled to, well, delete objects. This
+       can be switched off to avoid confusing with the nearby
+       \key{Insert}-key on PC keyboards.
+
+\subsubsection*{Exclusive flags}
+       If set, some of the standard flags can only be used exclusively,
+       e.g.~the smileys.
+
+\subsubsection*{Use hide flags}
+       If set, every branch which also has the hide flag set (see
+       \ref{hideexport}) will be hidden in exports.
+
+\subsection{Configuration file}
+On startup \vym will look for a configuration for user specific settings
+like window positions, toolbars etc. If this file does not already
+exist, it will be created. The file is located in the users home
+directory. The exact position depends on the platform:
+\begin{center}
+\begin{tabular}{cl}
+       {\bf Platform}  & {\bf Configuration file} \\ \hline
+       Linux           & {\tt $\sim$/.config/InSilmaril/vym.conf  } \\
+       Mac OS X        & {\tt /Users/NAME/Library/Preferences/com.insilmaril.vym.plist  } \\
+\end{tabular}
+\end{center}
+The file can be edited manually, or on Mac~OS~X with Property List
+Editor (installed with xtools).
+
+\subsection{Path to ressources}
+\vym will try to find its ressources (images, stylesheets, filters,
+etc.) in the following places:
+\begin{enumerate}
+       \item Path given by the environment variable {\tt VYMHOME}.
+       \item If called with the local option (see \ref{options} below),
+             \vym will look for its data in the current directory.
+       \item {\tt /usr/share/vym}
+       \item {\tt /usr/local/share/vym}
+\end{enumerate}
+
+\subsection{Command line options} \label{options}
+\vym has the following options:
+\begin{center}
+\begin{tabular}{cccp{8cm}}\\ 
+\bf Option     & \bf Comment & \bf Argument & \bf Description \\ \hline
+v & version &                  & Show version and codename of \vym\\
+l & local      &                       & Use local paths to stylesheets, translations, icons, 
+                          etc. instead of system paths. Useful for testing\\
+h & help       &                       & Show help\\
+r & run        & filename      & Load and run script\\
+q & quit       &                       & Quit immediatly after startup. Useful for benchmarks.\\
+\end{tabular}
+\end{center}
+You can also give several filenames at the commandline to let \vym open
+several maps at once.
+
+\section{Scripts} \label{scripts}   %FIXME
+
+TODO: This section of the \vym manual is not complete yet, sorry.
+
+\subsection{Example scripts}
+\subsubsection{Export a set of maps}
+\begin{code}
+\# Simple vym script to export images of various maps simultanously
+exportImage ();
+\end{code}
+The script above can be used to export all maps in a directory
+automatically. If the script is named {\tt export-image.vys}, call \vym with
+\begin{code}
+\$ vym --quit --run export-image.vys *.vym
+\end{code}
+
+
+\section{Contributing to \vym}
+So far I'd say I have written 98\% of the code on my own. No surprise,
+that \vym exactly fits my own needs. Nevertheless I would like to
+encourage all users of  \vym to contribute. Maybe not only with feature
+requests, but also with code, new import/export filters, translations
+etc. In this appendix I'll try to show how easy it is to expand the
+things you can do already with \vym. I really look forward to hear from
+you!
+
+\subsection{Getting help}
+
+\subsubsection*{Frequently asked questions}
+Please refer to the FAQ available on the \vym website:
+\begin{center}
+\href{http://www.InSilmaril.de/vym/faq.html}{http://www.InSilmaril.de/vym/faq.html}
+\end{center}
+
+\subsubsection*{Mailinglists}
+There are two mailinglists: {\tt vym-forum} is the \vym users forum to
+discuss various questions, while {\tt vym-devel} is intended for people
+interested in contributing to \vym. You can view the archives and
+subscribe at
+\begin{center}
+\href{https://sourceforge.net/mail/?group_id=127802}{https://sourceforge.net/mail/?group\_id=127802}
+\end{center}
+
+\subsubsection*{Contacting the author}\label{author}
+Especially for support questions please try the mailinglists first. If
+everything else fails you can contact the author Uwe Drechsel at
+\begin{center}
+\href{mailto:vym@InSilmaril.de}{vym@InSilmaril.de}
+\end{center}
+
+
+
+\subsection{How to report bugs}
+Though Sourceforge has its own bugreporting system, I'd rather prefer if
+you contact me directly (see \ref{author}) or even better: You can file
+a bugreport in Bugzilla, the bugtracking system of openSUSE:
+\begin{center}
+\href{http://en.opensuse.org/Submit_a_bug}{http://en.opensuse.org/Submit\_a\_bug}
+\end{center}
+I build \vym regulary for openSUSE, so you may report it against a
+recent version there, even if you  use another Operating System.
+Please don't forget to tell me what you are using:
+\begin{itemize}
+       \item the exact steps needed to reproduce the bug
+       \item the version and build date of \vym (see the Help \ra About
+       \vym)
+       \item hardware and Operating System
+\end{itemize}
+
+\subsection{Compiling from the sources}
+\subsubsection{Getting the sources} \label{getsources}
+You find the latest version of \vym at the project site:
+\begin{center}
+\href{https://sourceforge.net/projects/vym/}{https://sourceforge.net/projects/vym/}
+\end{center}
+There you can check them out of the source repository (CVS):\\
+
+\begin{verbatim}
+cvs -d:pserver:anonymous@cvs.sf.net:/cvsroot/vym checkout code
+\end{verbatim}
+
+\subsubsection{The Qt toolkit}
+Qt is C++ toolkit for multiplatform GUI and application development. It
+provides single-source portability across MS~Windows, Mac~OS~X, Linux
+and all major commercial Unix variants. Qt is also available for
+embedded devices. Qt is a Trolltech product. For more information see 
+\begin{center}
+\href{http://www.trolltech.com/qt/}{www.trolltech.com/qt} 
+\end{center}
+
+
+\subsubsection{Compiling \vym }
+Make sure you have installed your Qt environment properly, see the Qt
+documentation for details. You need to have the Qt command {\tt qmake}
+in your {\tt PATH}-environment, then run
+\begin{code}
+\$ qmake
+$ make  
+$ make install
+\end{code}
+The last command {\tt make install} needs root-permissions. Of course it
+may be omitted, if you just want to test \vym.
+
+%\subsubsection*{Compiling \vym on Macs}
+%FIXME
+
+\subsection{\vym file format} \label{fileformat}
+\vym maps usually have the suffix "{\tt .vym}" and represent a
+compressed archive of data. If you want to have a
+closer look into the data structure map called "mapname.vym", 
+just uncompress the map manually using
+\begin{code}
+\$ unzip mapname.vym
+\end{code}
+This will create directories named {\tt images} and {\tt flags} in your
+current directory and also the map itself, usually named {\tt
+mapname.xml}.
+The XML structure of \vym is pretty self explaining, just have a look at
+{\tt mapname.xml}.
+
+This XML file can be loaded directly into \vym, it does not have to be
+compressed. If you want to compress all the data yourself, use
+\begin{code}
+\$ zip -r mapname.vym .
+\end{code}
+to compress all data in your current directory.
+
+\subsection{New features}
+There are lots of features which might find their way into \vym.
+Together with \vym you should have received a directory with several
+example maps. You find them by clicking Help \ra Open~vym~example~maps.
+There you will find the map {\tt vym-projectplan.vym}. It lists quite a
+lot of things to be done in future. If you have more ideas, contact the
+development team at {\tt vym-devel@lists.sourceforge.net}.
+
+
+\subsection{New languages support}
+In order to add a new language to \vym you need 
+the sources (see \ref{getsources}) and
+an installation of Trolltechs QT. A part of QT are the development
+tools, from those tools especially the translation tool "Linguist" is
+needed. 
+
+In some Linux distributions the development tools are in an extra package, e.g. on SUSE LINUX you should have installed:
+\begin{code}
+libqt4-devel.rpm
+libqt4-devel-doc.rpm
+libqt4-devel-tools.rpm
+\end{code}
+If you don't have QT in your system, you can get it from 
+       \href{http://www.trolltech.com}{http://www.trolltech.com} Once you
+       are able to compile vym yourself, you can translate the text in vym
+       itself by performing the following steps:
+\begin{itemize}
+       \item Let's assume now your encoding is "NEW" instead of for example
+       "de" for german or "en" for english
+       
+       \item Copy the file {\tt lang/vym\_en.ts} to l{\tt ang/vym\_NEW.ts} (The code
+       itself contains the english version.)
+               
+       \item Add {\tt lang/vym\_NEW.ts} to the TRANSLATIONS section of vym.pro
+
+       \item Run Linguist on {\tt vym\_NEW.ts} and do the translation
+
+       \item Run {\tt lrelease} to create {\tt vym\_NEW.qm}
+
+       \item Do a make install to install the new vym and check your translation
+\end{itemize}
+
+If you feel brave, you can also translate the manual. It is written in
+LaTeX, you just have to change the file tex/vym.tex. (Linguist and QT
+are not needed, but it is useful to know how to work with LaTeX and esp.
+pdflatex to create the PDF.) 
+
+Please mail me every translation you have done. I can also give you a
+developer access to the project, if you want to provide translations
+regulary.  
+
+\subsection{New export/import filters}
+\vym supports various kinds of filters. Data can be written directly,
+inserted into templates or it can be written as XML data and then
+processed by XSL transformations. 
+
+Most of the import/export functionality is available in the classes
+ImportBase and ExportBase and subclasses. All of them can be found in
+{\tt imports.h} and {\tt exports.h}.
+
+\subsubsection*{Direct import/export}
+An example for a direct export is the XML export. This method touches
+the implementation of nearly every object of \vym, so whenever possible
+you should better use a XSL transformation instead.
+
+If you still want to know how it is done, start looking at 
+{\tt MapEditor::saveToDir} in {\tt mapeditor.cpp}.
+
+\subsubsection*{Templates}
+Templates have been introduced to export to opendoc format used e.g. by
+Open~Office. While I read the spec ($>$ 500 pages) about the format\footnote{
+\href{http://www.oasis-open.org/}{http://www.oasis-open.org/}}\ 
+I had the feeling that I did not want to write the export from scratch. 
+It would be too complex to adapt the styles to your own wishes, e.g. the
+layout.
+
+Instead I analyzed existing Open~Office documents. I found out that
+there are lots of redundant bits of information in a standard
+presentation, for example each list item is contained in its own list.
+In the end I came up with the default presentation style, which still
+could be simplified, just in case you have free time\ldots
+
+The existing templates are still work in progress, before you spend too
+much time developing your own style, please contact me.  Basically the
+following steps are needed to build your own style:
+\begin{enumerate}
+       \item Create an example in Open Office. Use a title, authors name,
+       page heading etc.\ which you can easily grep for in the output file.
+       
+       \item Unzip  the Open Office document into a directory.
+
+       \item The main file is called {\tt content.xml}. All data is in one
+       single line. You can split the XML tags using the script {\tt
+       scripts/niceXML}, which is part of the \vym distribution.
+
+       \item Copy the output of {\tt niceXML} to {\tt
+       content-template.xml}.
+
+       \item Looking closer you will find lots of unused definitions, for
+       example of styles. You can delete or simply ignore them.
+
+       \item Try to find your title, authors name. \vym will replace the
+       following strings while exporting:
+       \begin{center}
+       \begin{tabular}{lp{4cm}}
+               {\tt <!-- INSERT TITLE -->}             & title of map \\
+               {\tt <!-- INSERT AUTHOR-->      }       & author \\
+               {\tt <!-- INSERT COMMENT -->}   & comment \\
+               {\tt <!-- INSERT PAGES-->}              & content of map \\
+       \end{tabular}
+       \end{center}
+       The content itself is generated in a similar way by inserting lists
+       into {\tt page-template}. Here the following substitutions are made:
+       \begin{center}
+       \begin{tabular}{lp{7cm}}
+               {\tt <!-- INSERT PAGE HEADING-->}               & heading of a page
+               (mainbranch or child of mainbranch, depending on the use of
+               sections) \\
+               {\tt <!-- INSERT LIST -->       }       & all children of the branch above \\
+       \end{tabular}
+       \end{center}
+\end{enumerate}
+Currently images are exported and notes just will appear as text
+without formatting and colours.
+
+
+
+
+\subsubsection*{XSL Transformation}
+\vym uses XSL transformations while exporting (e.g. XHTML) and importing
+data (e.g. KDE bookmarks). There is a little code needed to provide the
+GUI, the rest is done using the {\tt .xsl} stylesheet and calling the
+{\tt xsltproc} processor, which is part of libxslt, the XSLT
+C  library  for  GNOME. 
+
+\end{appendix}
+\end{document}
+
+%TODO
+%\subsubsection{Menus}
+%\subsubsection{Keyboard shortcuts}
+%Where does vym save its settings? -> ~/.qt/vymrc
+
+
+% INDEX
+% mapeditor
+% noteditor
+% branch
+% mapcenter
+% heading
+% flag
+% orientation 
+% zoom
+% orientation
+% Toolbar
+% Zoom
+% Find
+% statusbar
+% link
+% mainbranch
+% subtree
+% reorder
+% scroll
+% fold
+% vymlink
+% xlink
+% modMode
+% context menu
+% Mac OS X
+
+
+
+\end{document}
diff --git a/tex/vym_es.tex b/tex/vym_es.tex
new file mode 100644 (file)
index 0000000..20658d8
--- /dev/null
@@ -0,0 +1,868 @@
+\documentclass{article}
+\usepackage{a4}
+\usepackage[latin1]{inputenc}
+\usepackage{verbatim}
+\usepackage{hyperref}
+\usepackage{graphicx}
+\usepackage{longtable}
+
+
+%\input{udmath}
+
+
+\hypersetup{bookmarks, bookmarksopen,
+  pdftitle={VYM - Una herramiento para pensamiento visual },
+  pdfauthor={Uwe Drechsel},    
+  pdfsubject={map},
+  pdfkeywords={map, tool},
+  pdfpagemode={UseOutlines},                                 
+  bookmarksopenlevel={1},   
+  colorlinks={true},     
+  linkcolor={blue},
+  urlcolor={green},
+  citecolor={red}} 
+
+
+\newcommand{\vym}{{\sc vym }}
+\newcommand{\ra}{$\longrightarrow$}
+\newcommand{\la}{$\longleftarrow$}
+\newcommand{\ua}{$\uparrow$}
+\newcommand{\da}{$\downarrow$}
+\newcommand{\key}[1]{[#1]}
+
+\begin{document}
+\title{
+       \includegraphics[width=8cm]{images/vym-logo-new.png}
+       \\
+VYM \\ -- \\View Your Mind\\ {\small Versi\'on 1.8.0}}
+\author{\textcopyright Uwe Drechsel  }
+
+
+\maketitle
+
+\newpage
+
+\tableofcontents
+
+\newpage
+\section{Creditos}
+\subsection{Autor}
+Uwe Drechsel
+\subsection{Traducci\'on}
+Traducci\'on a cargo del proyecto ACLibre (Academia y Conocimiento Libre)
+
+P\'agina web: 
+               \href{http://ieee.udistrital.edu.co/aclibre}{http://ieee.udistrital.edu.co/aclibre}
+
+Correo: 
+               \href{mailto:aclibre@gmail.com}{aclibre@gmail.com}
+\subsection{Participantes}
+\begin{center}
+\begin{tabular}{|p{7cm}|p{5.5cm}|} \hline
+       Encargado & Actividad \\ \hline
+       \begin{itemize}
+          \item Vanessa Carolina Guti\'errez Sanchez
+          \item Erika Tatiana Luque Melo
+          \item Jeffrey Steve Borb\'on Sanabria
+          \item John Edisson Ortiz Rom\'an
+       \end{itemize} &
+       \begin{itemize}
+               \item Traducci\'onl
+               \item Revisi\'on y correcciones varias
+               \item Estructuraci\'on y exporte
+               \item Revisi\'on y correcciones varias
+       \end{itemize}     \\ \hline
+\end{tabular}  
+\end{center}
+
+\section{Introducci\'on}
+\subsection{?`Qu\'e es un mapa \vym?}
+Un mapa \vym (en pocas palabras mapa) es una estructura con forma de \'arbol:
+\begin{center}
+       \includegraphics[width=12cm]{images/example1_es.png}
+\end{center}
+Estos mapas pueden ser dibujados a mano o en un portafolio y ayudan a estructurar ideas. Mientras que una estructura en forma de \'arbol, como las de arriba, puede ser dibujada a mano, \vym ofrece gran variedad de opciones para trabajar con estos mapas. \vym no es otro software de dibujo, sino una herramienta para guardar y modificar informaci\'on de una manera intuitiva. Por ejemplo, puede reordenar partes del mapa con solo presionar una tecla o agregar informaci\'on, como un correo electr\'onico completo, con solo hacer un click.
+
+Una vez que ha finalizado en recoger y organizar sus ideas, puede f\'acilmente generar por ejemplo, una presentaci\'on en OpenOffice basada en un mapa.
+
+\subsection{?`Por qu\'e debo usar mapas? Tiempo, Espacio y su Cerebro?}
+\subsubsection*{Espacio}
+Un mapa puede concentrar contenido muy complejo en un espacio peque\~no como por ejemplo un pedazo de papel. Los mapas ayudan a utilizar los dos lados del cerebro: tanto el l\'ogico como el creativo (mediante el uso de im\'agenes, colores y palabras claves en el mapa). Esta es una t\'ecnica para organizar la manera en que piensa: Puede ayudarlo a trav\'es del desarrollo, clasificaci\'on y memorizaci\'on de sus ideas.
+
+\subsubsection*{Tiempo}
+Como solo utiliza palabras claves y dibujos, es mucho mas r\'apido que las tradicionales notas. Su cerebro memoriza las cosas asoci\'andolas con otras - un mapa hace uso de esas conexiones y estimula nuevas asociaciones.
+
+
+\subsubsection*{Su Cerebro}
+En 1960 el Prof. Roger Sperry descubri\'o que los hemisferios del cerebro humano realizan diferentes tareas (por supuesto que ambos pueden realizar b\'asicamente lo mismo):
+\begin{center}
+\begin{tabular}{|p{5.5cm}|p{5.5cm}|} \hline
+       Lado izquierdo & Lado derecho \\ \hline
+       \begin{itemize}
+          \item Dialogo y Escritura
+          \item N\'umeros
+          \item Razonamiento L\'ogico
+          \item An\'alisis y Detalles
+          \item Ciencia
+          \item Razonamiento Lineal
+          \item Concepto del Tiempo
+       \end{itemize} &
+       \begin{itemize}
+               \item Lenguaje Corporal
+               \item Razonamiento visual, so\~nar despierto.
+               \item Intuici\'on y Emociones.
+               \item Perspectiva de las cosas.
+               \item Creatividad
+               \item Arte, M\'usica, Baile
+               \item Razonamiento no-lineal, conectando cosas
+               \item Ubicaci\'on en el espacio
+       \end{itemize}     \\ \hline
+\end{tabular}  
+\end{center}
+En nuestra sociedad orientada a la ciencia hemos aprendido a depender principalmente del lado izquierdo del cerebro, del "racional". En otras culturas, especialmente los nativo americanos y otras culturas antiguas, el lado derecho es mucho mas importante. Los mapas son solo una forma de estimular ese otro lado y hacer uso de los recursos adicionales que todos tenemos.
+
+
+\subsection{?`D\'onde puedo utilizar un mapa?}
+Aqu\'i hay algunos ejemplos de como puede utilizar los mapas:
+\begin{itemize}
+    \item Para preparar art\'iculos, ensayos, libros, charlas, \ldots
+    \item Para organizar informaci\'on compleja
+    \item Para memorizar hechos, personas, vocabulario, \ldots
+    \item Para ordenar correos electr\'onicos, archivos y marcadores en su computador
+    \item Para moderar conferencias.
+\end{itemize}
+
+\subsection{Que no debe hacer con un mapa...}
+Un mapa dibujado por alguien muestra la forma en que su autor piensa. No existe lo correcto o incorrecto en la forma en que es dibujado, as\'i que no existe forma de criticarlo. "Es, lo que es" ({\sc F.~Lehmann}).
+
+\subsection{Recursos de Internet} 
+Un buen punto de partida para conocer mas acerca de los mapas en general es la Wikipedia:
+\begin{itemize}
+       \item Ingl\'es: 
+               \href{http://en.wikipedia.org/wiki/Mind_map}{http://en.wikipedia.org/wiki/Mind\_map}
+       \item Alem\'an: 
+               \href{http://de.wikipedia.org/wiki/Mindmap}{http://de.wikipedia.org/wiki/Mindmap}
+\end{itemize}
+
+
+
+
+\section{Concepto de \vym}
+\subsection{Ventanas: Editor de mapas (mapeditor) y Editor de notas (noteeditor)}
+\vym utiliza 2 ventanas: Un editor para el mapa y otro para las notas que son parte del mapa. Las llamaremos  {\em mapeditor} y {\em noteeditor}: 
+\begin{center}
+       \includegraphics[width=8cm]{images/windows_es.png}
+\end{center}
+Usualmente trabajara en el {\em Editor de mapas} para agregar, mover y reordenar las ramas. Las diferentes maneras de realizar esto se explicaran en \ref{mapeditor}. Puede guardar informaci\'on adicional en una {\em rama}, por ejemplo el contenido de un correo electr\'onico: Simplemente escriba o copie y pegue el correo en el {\em Editor de notas}. El trabajo con notas es explicado en \ref{noteeditor}.
+
+\subsection{Barras del Men\'u y Men\'u desplegables}
+En el tope de cada ventana encontrar\'a una barra de men\'u. Las opciones que all\'i se encuentran son similares a aquellas de otras aplicaciones. Note que muchas de la opciones (e incluso muchas m\'as) est\'an disponibles en los men\'u desplegables. Los cuales aparecen si hace un click derecho sobre un objeto en el mapa (en Mac OS X Comando-Click).
+
+\subsection{Barra de Herramientas}
+La barra de herramientas en la ventana principal ofrece r\'apido acceso a muchas funciones y adem\'as permite visualizar el estado de un objeto. Por ejemplo una parte del mapa puede ser ocultada cuando el mapa se exporta a una presentaci\'on de Open Office. Para indicar esto en el mapa, la rama tendr\'a un peque\~no s\'imbolo en forma de nube, el cual tambi\'en puede ser activado en la barra de herramientas.
+
+Observe que puede reposicionar todas las barras de herramientas con solo arrastrarla. Por ejemplo puede mover la barra de herramientas con las banderas desde su posici\'on horizontal en la parte de arriba del Editor de mapas hasta una posici\'on vertical al lado derecho de la ventana. Incluso puede extraerlas y separarlas de las ventanas. O insertarla de nuevo en su posici\'on original.
+
+\subsection{Mapas}
+El mapa siempre tiene un {\em centro}. Este centro posee ramas como el tronco de un \'arbol. Cada {\em rama} a su vez albergar\'a otras {\em ramas}.
+\begin{center}
+       \includegraphics[width=10cm]{images/branches_es.png}
+\end{center}
+Llamaremos a las ramas conectadas directamente al centro del mapa {\em
+ramas principales}, ya que determinan la posici\'on de sus ramas hijas.
+
+El centro del mapa y todas las ramas tienen un {\em encabezado}. Este texto es el que se ve en el Editor de mapas. Por lo general debe ser una o pocas palabras, para tener un seguimiento mas sencillo del mapa.
+
+
+En la barra de herramientas sobre el editor de mapas pueden verse varios s\'imbolos.
+\begin{center}
+       \includegraphics[width=8cm]{images/default-flags.png}
+\end{center}
+Estos son llamados {\em banderas} y pueden ser utilizadas para marcar en las ramas del mapa, por ejemplo, si algo es importante o cuestionable. Tambi\'en hay mas banderas configuradas autom\'aticamente por el \vym para mostrar informaci\'on adicional, por ejemplo cuando a existe para una rama en particular.
+
+Por defecto algunas de estas banderas est\'an configuradas exclusivamente, por ejemplo cuando el pulgar hacia arriba esta seleccionado el pulgar hacia abajo no lo esta y vice versa. Puede modificar esta conducta por defecto en el men\' u de configuraciones.
+
+\section{Editor de Mapas} \label {mapeditor}
+\subsection{Abrir un mapa nuevo}
+Luego de iniciar el \vym, 2 ventanas se abrir\'an: el Editor de mapas y el Editor de notas. Por lo general trabajara en ambas ventanas, pero por los momentos nos detendremos en el Editor de mapas.
+
+Seleccione el centro del mapa "Nuevo mapa" en el medio del editor haciendo click izquierdo con el rat\'on. Cambiara a amarillo para mostrar que ha sido seleccionado. Existen varias formas de agregar una nueva rama al centro:
+\begin{itemize}
+       \item Utilizando el rat\'on: Abra el men\'u desplegable haciendo click con el bot\'on derecho del rat\'on (CTRL-Click en Mac) sobre el centro del mapa y escoge la opci\'on Adicionar \ra Agregar rama como hija. 
+       \item Presione \key{Ins} o \key{A}
+\end{itemize}
+Una rama nueva aparecer\'a y podr\'a escribir el encabezado de esa rama. Para finalizar presione \key{Enter}.
+
+A veces es \'util agregar una rama por encima o debajo de la actual, para ello utilice \key{Ins} junto a \key{Shift} o \key{Ctrl}. Tambi\'en es posible agregar una rama de manera que la selecci\'on actual se convierta en hija de la nueva rama, que seria como insertarla {\em antes} de lo seleccionado. Esto puede realizarse utilizando el men\'u desplegable.
+
+\subsection{Navegando a trav\'es del mapa}
+\subsubsection*{Seleccionar ramas}
+
+Para seleccionar las ramas puede utilizar el bot\'on izquierdo del rat\'on o las teclas con flechas. Dependiendo de la {\em orientaci\'on} de la rama pulse \key{\la} o \key{\ra} para acercarse o alejarse del centro del mapa. Dentro de un grupo de ramas, que reciben el nombre de sub-\'arbol, puede utilizar \key{\ua} o \key{\da} para ir hacia arriba o abajo. Tambi\'en puede utilizar \key{Pos1} y \key{End} para seleccionar la primera o la ultima rama.
+
+\subsubsection*{Zoom}
+Mientras agrega mas y mas ramas el mapa podr\'ia superar en tama\~no a la ventana del Editor de mapas. Puede utilizar las barras de desplazamiento a la derecha y en la parte de abajo de la ventana del Editor para arrastrarlo, pero es mas f\'acil hacerlo utilizando el bot\'on izquierdo del rat\'on: Haga click sobre el espacio en blanco entre las ramas. El puntero del rat\'on cambiara su forma de flecha al de una mano, ahora mueva la parte visible del mapa para mostrar la parte deseada.
+
+Si selecciona las ramas utilizando las flechas en el teclado, el mapa se arrastrara asegur\'andose de que la rama seleccionada este siempre visible.
+
+Para trabajar con mapas muy grandes, la funci\'on del {\em zoom} es muy \'util. Puede usar:
+
+\begin{itemize}
+       \item Desde el men\'u Vista \ra Acercar
+       \item Los botones de la barra de herramientas 
+               \begin{center}
+                       \includegraphics[width=3cm]{images/zoom-buttons.png}
+               \end{center}    
+\end{itemize}  
+
+La lupa con la cruz devuelve el zoom a su tama\~no original.
+
+
+\subsubsection*{Funci\'on de B\'usqueda} \label{findwindow}
+Con mapas muy grandes existe la necesidad de contar con una funci\'on de b\'usqueda. Seleccione Editar \ra Buscar para abrir la ventana de b\'usqueda:
+\begin{center}
+       \includegraphics[width=6cm]{images/find-window_es.png}
+\end{center}
+El texto que introduzca aqu\'i sera buscado en todos los encabezados y en las notas. Cada vez que presione el bot\'on "Buscar" pasara a la siguiente coincidencia y sera seleccionada autom\'aticamente. Si la b\'usqueda fracasa aparecer\'a el siguiente mensaje "No matches found for <palabra>" o unos pocos segundos en la {\em barra de estado} en la parte de abajo del Editor de mapas.        
+
+\subsubsection*{Mantener la perspectiva --- arrastrar una parte del mapa}
+Un sub-\'arbol muy grande en un mapa, por ejemplo una rama con cientos de hijos, dificulta mantener la perspectiva de todo el mapa. Puede esconder todos los hijos de una rama acopl\'andolos a ella - esta funci\'on tambi\'en es llamada doblar {\em folding}. Imagine todo el sub-\'arbol dibujado sobre un gran peri\'odico. Puede acoplar o doblar el peri\'odico en un rollo peque\~no, dejando visible solo el encabezado.
+
+Para acoplar o desacoplar una rama y sus hijos, presione:
+\begin{itemize}
+       \item tecla \key{Scroll} o \key{S}
+       \item El bot\'on del centro del rat\'on o
+       \item Selecci\'on el peque\~no rollo en la barra de herramientas.
+\end{itemize}
+Si selecciona partes de una rama acoplada, por ejemplo utilizando la funci\'on de b\'usqueda o usando las flechas en el teclado, se desacoplara temporalmente. Para indicar esto, aparecer\'a un rollo con un reloj de arena. Si la parte temporalmente desacoplada ya no es necesaria, se ocultada de nuevo autom\'aticamente. Tambi\'en es posible desacoplar todas las ramas utilizando la opci\'on "Editar \ra Desacoplar todas las ramas acopladas". 
+
+Tambi\'en puede ocultar partes del mapa cuando lo exporta, por ejemplo a una p\'agina web o a una presentaci\'on, vea \ref{hideexport} para mas detalles.
+
+
+
+\subsection{Modificar y mover ramas}
+\subsubsection*{Modificar el encabezado}
+Puede editar el encabezado seleccionando la rama y luego:
+\begin{itemize}
+       \item presione \key{Enter}
+       \item haga doble click izquierdo con el rat\'on.
+\end{itemize}
+Luego escriba el nuevo encabezado (o edite el viejo) y presione \key{Enter}.
+
+\subsubsection*{Mover una rama}
+La manera mas f\'acil de hacerlo es presionando la rama con el bot\'on izquierdo del rat\'on y arrastrarla hacia el lugar deseado. Dependiendo de la rama esta:
+\begin{itemize}
+       \item Se mover\'a hasta su destino o
+       \item Se vincular\'a con un nuevo padre (el centro del mapa u otra rama)
+\end{itemize}
+Si arrastra la rama sobre otra o sobre el centro del mapa, notara que el link que la conectaba con su antiguo padre cambiara apuntando al nuevo que esta ahora debajo del puntero del rat\'on. Si suelta el bot\'on ahora, el link se actualizara.
+
+Si suelta el bot\'on en el medio de la nada, el resultado depender\'a del tipo de rama:
+\begin{itemize}
+       \item Una rama principal sera conectada directamente al centro de mapa y se quedara en su nueva posici\'on.
+       \item Una rama cualquiera saltara de nuevo a su posici\'on origina.
+\end{itemize}
+De esta manera puede f\'acilmente reorganizar como est\'an extendidas las ramas principales para evitar que cubran los sub-arboles. Tambi\'en existe otra forma de mover las ramas, especialmente si quiere {\em reorganizar} un sub-\'arbol: Puede mover una rama hacia arriba o abajo en un sub-\'arbol:
+
+\begin{itemize}
+       \item Presionando \key{\ua} y \key {\da}
+       \item Seleccionando Editar \ra Subir/Bajar
+       \item Haciendo click en los botones de la barra de herramientas:
+               \begin{center}
+                       \includegraphics[width=1.5cm]{images/move-buttons.png}
+               \end{center}    
+\end{itemize}
+%tipp
+Todav\'ia existe una forma mas de mover las ramas: Si presiona \key{Shift} o
+\key{Ctrl} mientras mueve el rat\'on, la rama de agregara por encima o debajo de aquella sobre la cual se encuentre el puntero. Esto tambi\'en ayuda a reorganizar un mapa.
+
+\subsection{El lado izquierdo de su cerebro - colores e im\'agenes}
+\subsubsection*{Cambiar el color de un encabezado}
+Tambi\'en puede utilizar colores para agregar mas informaci\'on a un mapa, por ejemplo utilice rojo, verde y otros colores para dar prioridad a tareas.  De nuevo puede:
+\begin{itemize}
+       \item Utilizar el men\'u y escoger por ejemplo Format \ra Configurar Color
+       \item Utilizar la barra de herramientas
+               \begin{center}
+                       \includegraphics[width=3cm]{images/color-buttons.png}
+               \end{center}    
+\end{itemize}
+El primer bot\'on (de color negro en la imagen de arriba) muestra en color actual. Haciendo click sobre el, le permitir\'a escoger otro color. Tambi\'en puede escoger otro color seleccionando la rama con el color deseado y utilizando el bot\'on de configurar color. Los botones que muestran unas paletas de color, colorean la rama seleccionada con el color actual. Mientras que la primera colorea el encabezado de la selecci\'on, la otra tambi\'en colorea los hijos de la rama seleccionada.
+
+%tipp
+Una funci\'on \'util es la de "copiar el color" utilizando el rat\'on: Seleccione la rama que desea colorear, luego presione \key{Ctrl} y simult\'aneamente haga click izquierdo con el rat\'on sobre otra rama para copiar el color a la primera. Los hijos de esa rama tambi\'en obtendr\'ian el nuevo color, si solo desea colorear lo seleccionado adicionalmente presione \key{Shift}.
+
+\subsubsection*{Uso de Banderas}
+\vym provee varias banderas. Las puede ver en la parte superior de de la ventana del Editor de mapas. (Nota: Como todas las barras de herramientas puede, moverla hacia el lado izquierdo o derecho e incluso extraerla. Solo agarre la parte punteada a la izquierda de la barra de herramientas con el bot\'on izquierdo del rat\'on.)
+\begin{center}
+       \includegraphics[width=8cm]{images/default-flags.png}
+\end{center}
+Si tiene una rama seleccionada, puede colocar cualquier numero de banderas con solo hacer click sobre ellas en la barra de herramientas. Los botones en la barra cambian su estado y siempre reflejan el conjunto de banderas en la rama seleccionada.
+
+Actualmente \vym utiliza 2 tipos de banderas: {\em Banderas del Sistema} y {\em Banderas Comunes}. Las bandera comunes son aquellas que aparecen en la barra de herramientas. Las banderas del sistemas son configuradas por el \vym para indicar por ejemplo que hay informaci\'on adicional en una nota (mas acerca de esto en \ref{noteeditor}). Las ultimas versiones de \vym puede que tengan otros tipos de banderas, que pueden ser editadas por el usuario.
+
+
+\subsubsection*{Im\'agenes}
+La forma mas f\'acil de agregar una imagen a una rama es arrastr\'andola, por ejemplo desde un navegador al Editor de mapas mientras la rama se encuentra seleccionada.
+
+Tambi\'en puede agregar una imagen a una rama utilizando el men\'u desplegable, seleccione la opci\'on Adicionar \ra Agregar Imagen. Una ventana de di\'alogo le permitir\'a escoger la imagen que se va a cargar\footnote{Tipo de im\'agenes soportadas: PNG, BMP, XBM, XPM y PNM. Puede que tambi\'en soporte JPEG, MNG y GIF, si es configurado durante la compilaci\'on (como se hace cuando \vym es parte de SUSE LINUX).}.
+Mientras seleccione una imagen en la ventana de di\'alogo, podr\'a tener una vista previa de ella. Tambi\'en es posible seleccionar m\'ultiples im\'agenes.
+
+Puede posicionar la imagen donde quiera, solo arrastrela con el bot\'on izquierdo del rat\'on. Para vincularla a otra rama, presione \key{Shift} mientras la mueve. Para borrarla presione \key{Del}.  
+
+Si hace click con el bot\'on derecho sobre una imagen, un men\'u desplegable se abrir\'a el cual le permitir\'a escoger una de varios formatos para im\'agenes. Luego se abrir\'a una ventana de di\'alogo para guardar la imagen. Pista: Esto es utilizado para "exportar" la imagen, de todas formas sera guardado en el mismo mapa!. Tambi\'en pude cortar y copiar la imagen, pero no es posible agregar objetos a una imagen\footnote{
+       Las im\'agenes son consideradas como "caracter\'isticas especiales". Trabajar con el mapa seria mas complejo si por ejemplo las im\'agenes estuvieran vinculadas a otras.}
+       
+La opci\'on \lq{\bf Exportar} \rq controla la salida de exportaciones por ejemplo a HTML: Si esta no esta configurada, la imagen no aparecer\'a en la parte del {\em texto} de salida. Esto es \'util cuando se manejan grandes im\'agenes o im\'agenes utilizadas como bordes, por ejemplo el famoso s\'imbolo en forma de nube en alguna parte del mapa. Esos no deben aparecer en medio del texto.
+
+Por los momentos el soporte de im\'agenes es preliminar: Las im\'agenes ser\'an guardadas junto al resto de la informaci\'on del mapa en el archivo {\tt .vym}.
+Versiones futuras incluir\'an mayor funcionalidad como redimensionar el tama\~no, cambiar los valores z (colocarla en el fondo), etc.
+
+\subsubsection*{Bordes}
+Un borde puede sera agregado a una rama haciendo click con el bot\'on derecho del rat\'on. Un men\'u desplegable aparecer\'a, en donde podr\'a seleccionarlo. Por el momento solo puede escoger entre un rect\'angulo y "Sin Borde", sin embargo puede utilizar im\'agenes como bordes. De un vistazo al mapa de demostraci\'on {\tt todo.vym}, donde el centro del mapa es una nube. Puede utilizar un programa de dibujo como el {\tt gimp} para crear im\'agenes, preferiblemente con un canal de transparencia, de esta forma podr\'a dise\~nar bordes que no utilizan lineas rectangulares, como la nube.
+
+\subsection{Dise\~no del Fondo}
+El dise\~no del fondo del mapa y los links que conectan a distintas partes del mapa pueden ser modificados:
+
+\begin{itemize}
+       \item Seleccionando la opci\'on Formato desde el men\'u.
+       \item Haciendo click derecho en el espacio entre las ramas, lo cual abrir\'a un men\'u desplegable.
+\end{itemize}
+
+\subsubsection*{Color de Fondo}
+El color es configurado (y adem\'as mostrado) en Configurar color de fondo.
+
+\subsubsection*{Color del Link}
+Los links que conectan  a las ramas tambi\'en pueden ser coloreados en cualquiera de las siguientes formas:
+\begin{itemize}
+       \item Utilice el color del encabezado donde se encuentra la rama
+       \item Utilice {\em un} color para todos los links. El color por defecto es azul.
+\end{itemize}
+El ultimo puede ser configurado con Set Link Color. Seleccione o no la opci\'on "Usar color para encabezado de enlace" para escoger uno de los 2 dise\~nos para su mapa.
+
+\subsubsection*{Estilo del Link}
+\vym Ofrece cuatro estilos diferentes para la apariencia de los links:
+\begin{itemize}
+       \item Linea
+       \item Par\'abola
+       \item Linea Gruesa
+       \item Par\'abola Gruesa
+       
+\end{itemize}
+Los estilos "grueso" solo se aplican a los links que comienzan en el centro del mapa, el resto del mapa sera dibujado normal.
+
+
+\subsection{Enlaces hacia otros documentos y p\'aginas web}
+\vym soporta dos tipos de enlaces:
+\begin{itemize}
+       \item Documentos, los cuales se abrir\'an en un navegador externo
+       \item Mapa \vym, que se abrir\'a en el mismo \vym.
+\end{itemize}
+Adicionalmente a los enlaces externos tambi\'en hay enlaces internos, que lo llevan de una rama a otra en el mapa. Esos son llamados {\em XLinks} y son explicados en la secci\'on ~\ref{xlinks}..
+
+\subsubsection*{Webbrowser}
+Navegadores modernos como el {\tt konqueror} pueden mostrar distintos tipos de archivos, tanto locales como de la internet. Para introducir la URL de cualquier documento, haga click derecho sobre la rama y seleccione "Editar URL". Introduzca la direcci\'on del documento (o copie y pegue desde el navegador). Los siguientes son ejemplos de direcciones validas:
+\begin{verbatim}
+       http://www.insilmaril.de/vym/index.html
+       file:/usr/share/doc/packages/vym/doc/vym.pdf
+\end{verbatim}
+Si se ha introducido una URL, un peque\~no globo aparecer\'a en la rama. Haciendo click en el globo que esta en la barra de herramientas o en el men\'u desplegable, un navegador \footnote{
+       El navegador puede ser cambiado en el men\'u de configuraci\'on.}
+externo se iniciara.
+\begin{center}
+       \includegraphics[width=0.5cm]{images/flag-url.png}
+\end{center}
+Para m\'as informaci\'on sobre el trabajo con marcadores y navegadores web observe la secci\'on \ref{bookmarks}.
+
+
+\subsubsection*{Mapa \vym}
+Para hacer un enlace a otro mapa haga click derecho sobre la rama y seleccione "Edit \ra Enter \vym Link". Una ventana de di\'alogo se abrir\'a donde puede escoger el mapa. Una rama con un enlace es se\~nalada con
+\begin{center}
+       \includegraphics[width=0.5cm]{images/flag-vymlink.png}
+\end{center}
+Haciendo click a esta bandera en la barra de herramientas  o en el men\'u desplegable de la rama, abrir\'a el mapa en otra pesta\~na (vea la secci\'on \ref{tabs} para trabajar con m\'ultiples mapas). Para borrar un enlace, solo presione el bot\'on "Cancelar".
+
+Nota: Internamente \vym trabaja con direcciones absolutas para evitar abrir varias ventanas que contengan el mismo mapa. Cuando se guarda un mapa, la direcci\'on se convierte a una relativa (por ejemplo{\tt /home/user/vym.map} se convertir\'ia en {\tt ./vym.map}). Esto facilita el uso de m\'ultiples mapas en distintas computadoras o para exportarlos a HTML en un futuro.
+
+\subsection{M\'ultiples mapas} \label{tabs}
+Puede trabajar en varios mapas al mismo tiempo. Cada mapa nuevo es abierto en una nueva {\em pesta\~na}. Las pesta\~nas disponibles se encuentran en la parte superior del editor de mapas. Puede utilizar las funciones de /cortar/copiar/pegar para copiar la informaci\'on de un mapa a otro.
+
+\section{Editor de notas} \label {noteeditor}
+Si desea guardar mas texto en una rama como un correo electr\'onico completo, una receta de cocina o todo el c\'odigo fuente de un software, puede utilizar el editor de notas.
+\begin{center}
+       \includegraphics[width=8cm]{images/noteeditor_es.png}
+\end{center}
+Este editor muestra el texto asociado a una rama seleccionada en el editor de mapas. Para visualizar que a lo mejor no hay texto todav\'ia, el editor de notas  muestra diferentes colores de fondo dependiendo de su estado:
+
+\subsection{Estados}
+Antes de que pueda escribir o pegar texto en el, tiene que seleccionar una rama en el editor de mapas.  F\'ijese que el color de fondo indica el estado del editor:
+\begin{itemize}
+       \item negro: no ha seleccionado ninguna rama
+       \item gris: no ha introducido texto
+       \item blanco: el texto esta disponible
+\end{itemize}  
+Para ver en el editor de mapas si una rama posee una nota con mas informaci\'on, una bandera aparecer\'a junto al encabezado de la rama. Observe la rama en la parte de abajo al lado derecho:
+\begin{center}
+       \includegraphics[width=8cm]{images/branches-flags_es.png}
+\end{center}
+
+\subsection{Importar y exportar notas}
+Las notas siempre son autom\'aticamente guardadas dentro de los archivos  de \vym. Sin embargo, a veces es bueno importarlas desde un archivo externo o escribirlas. Utilice "Archivo \ra Importar" y "Archivo \ra Exportar".
+
+\subsection{Editar e imprimir una nota}
+Editar se realiza de la misma forma que en cualquier editor de texto sencillo, incluyendo las funciones rehacer y deshacer. Puede borrar una nota completa haciendo click en la papelera. Solo se imprime la nota si hace click en el icono de la impresora.
+
+Cuando utiliza los mecanismos de copiar\&pegar del X11, el editor creara un p\'arrafo para cada linea nueva. Por lo general esto no se quiere, as\'i que puede convertir todos los p\'arrafos en una sola linea usando la funci\'on "Editar~\ra~Convertir P\'arrafos" o \key{ALT-X}..
+
+\subsection{RichText: Colores, p\'arrafos y texto con formato}
+\vym Soporta texto con formato (QT Rich Text) en el editor de notas desde la versi\'on 1.4.7. Colores y atributos del texto (por ejemplo cursiva, negrita) pueden ser seleccionados con los botones que se encuentran arriba del texto. El mismo texto es divido en p\'arrafos. Para cada p\'arrafo se puede configurar un formato (por ejemplo centrado, a la derecha). Un p\'arrafo finaliza cuando \key{Return} es introducido. Si simplemente desea comenzar una nueva linea, presione \key{CTRL-Return}.
+
+\subsection{Fuentes y como cambiarlas r\'apidamente}
+El editor de notas esta destinado para ser usado con notas simples y no como un editor de texto con todas las opciones. Debido a la cantidad de peticiones, ahora \vym soporta texto con formato en el editor de notas\footnote{
+       \\vym utiliza el formato QRichText, el cual es un subconjunto del formato provisto en HTML.}. 
+Dos fuentes por defectos son soportadas las cuales se pueden seleccionar en el men\'u de configuraci\'on. Una es una fuente de ancho definido y la otra es de ancho variable. La fuente de ancho definido es usualmente utilizada en correos electr\'onicos, c\'odigo fuente, etc. Mientras que la fuente de ancho variable es utilizada para notas sencillas, donde no se necesitan caracteres con el ancho definido. Se pueden cambiar las fuentes f\'acilmente utilizando el siguiente s\'imbolo en la barra de herramientas:
+\begin{center}
+       \includegraphics[width=0.5cm]{images/formatfixedfont.png}
+\end{center}
+En el men\'u de configuraci\'on ambas fuentes se pueden seleccionar e incluso establecer por defecto.
+
+Adicionalmente a las fuentes por defecto, cualquier fuente instalada en el sistema tambi\'en se podr\'a utilizar. Note que la fuente escogida tambi\'en sera utilizada para las exportaciones en HTML, por lo que deber\'ia usar solo fuentes que se encuentran disponibles generalmente.
+
+\subsection{B\'usqueda de texto}
+El editor de notas como tal no posee una funci\'on de b\'usqueda, utilice la que se encuentra en el editor de mapas, que adem\'as busca entre todas las notas (vea la secci\'on \ref{findwindow}).
+
+\subsection{Pegar texto en el editor de notas}
+En ocasiones pegara texto en el editor desde otra aplicaci\'on, por ejemplo un correo electr\'onico. Normalmente \vym generara un p\'arrafo por cada linea nueva. Por lo general esto es algo que usted no desea, por lo que puede escoger en el men\'u.
+
+\subsection{Acciones avanzadas}
+\subsubsection*{Editar \ra Convertir P\'arrafos:}
+Esto convierte texto seleccionado (o todo el texto sino selecciono algo) en lineas consecutivas. Esto es especialmente \'util cuando se trabaja con c\'odigo fuente.
+
+
+\subsubsection*{Editar \ra Unir L\'ineas:}
+Intenta dar formato al texto, de manera que las lineas vac\'ias sean utilizadas para limitar los p\'arrafos del texto seleccionado (o todo sino selecciono algo). Esta funci\'on es \'util para textos como correos electr\'onicos, res\'umenes de reuniones, etc.
+
+\section{Hola Mundo}
+Esta secci\'on muestra como \vym interact\'ua con otras aplicaciones. Otras aplicaciones pueden leer y escribir la informaci\'on utilizando XML (eXtensible Markup Language). \vym tambi\'en utiliza XML para guardar los mapas, vea la secci\'on \ref{fileformat}  para una descripci\'on mas detallada.
+
+As\'i que si su aplicaci\'on comprende XML, los dem\'as podr\'an escribir filtros para importar/exportar en \vym. Los voluntarios son siempre bienvenidos
+
+
+\subsection{Importar} \label{import}
+
+\subsubsection*{Marcadores KDE}
+El editor de marcadores integrado en KDE se encuentra de alguna forma limitado, as\'i que ¿porque no utilizar \vym para ordenar los marcadores? Para crear un mapa que contenga los marcadores en KDE seleccione
+\begin{itemize}
+       \item Archivo \ra Importar\ra KDE Bookmarks
+\end{itemize}
+
+\subsubsection*{Mind Manager}
+Actualmente \vym cuenta con un filtro b\'asico para convertir mapas creados por {\em Mind Manager}\footnote{
+Mind Manager es un software profesional de Mindjet. Ambos nombres son marcas registradas por Mindjet. Para mas informaci\'on visite su p\'agina web: \href{http://mindjet.de}{http://mindjet.de}} dentro de mapas \vym. Las notas e im\'agenes no son convertidas por los momentos. Puede importar archivos con
+
+\begin{itemize}
+       \item Archivo \ra Exportar \ra Open Office
+\end{itemize}
+
+
+\subsubsection*{Estructura del Directorio}
+\vym puede leer la estructura de un directorio. Esto es principalmente para probar \vym, por ejemplo puede crear f\'acilmente grandes mapas para realizar comparaciones (si, todav\'ia se puede optimizar \vym). ;-)
+
+
+\subsection{Exportar}  \label{export}
+\label{hideexport}
+Algunas veces no querr\'a exportar todo el mapa, sino solo una parte de el. Por ejemplo, puede tener informaci\'on adicional la cual mencionara en la presentaci\'on, esas partes no deben estar visibles a la audiencia. Para lograr esto puede "esconder" partes del mapa durante la exportaci\'on seleccionando la bandera de "esconder durante la exportaci\'on"
+\begin{center}
+       \includegraphics[width=0.5cm]{images/flag-hideexport.png}
+\end{center}
+Puede escoger esta bandera desde la barra de herramientas o presionando \key{H}. F\'ijese que existe una opci\'on global para el uso de esta bandera en el men\'u de configuraciones. Por defecto se encuentra habilitada.
+
+\subsubsection*{Open Office}
+Desde la versi\'on 2 se utiliza el formato de documento de Open Oficce, el cual puede ser escrito por \vym. Las opciones se encuentran limitadas, pero es posible exportar presentaciones que pueden ser abiertas en Open Office Impress. Seleccionando
+\begin{itemize}
+       \item Archivo \ra  Exportar \ra Open Office
+\end{itemize}
+Se abrir\'a una ventana de di\'alogo donde podr\'a escoger la salida y el tipo de archivo:
+\begin{center}
+       \includegraphics[width=12cm]{images/export-oo_es.png}
+\end{center}
+
+El tipo de archivo representa varias plantillas, las cuales se pueden crear con algo de trabajo a mano desde un documento existente en Open Office. Luego se inserta la estructura del mapa \vym en la plantilla. Existen algunas limitaciones por los momentos:
+\begin{itemize}
+       \item \vym no puede hacerse cargo del largo de las p\'agina, para evitar que el texto se corra mas all\'a del final de la p\'agina tendr\'a que revisarlo y probablemente editarlo en Open Office.
+       \item Las im\'agenes y banderas no se utilizan por los momentos
+       \item Las notas son escritas en textos simples sin RichText.
+\end{itemize}
+Algunas de las plantillas hacen uso de {\em secciones} por ejemplo inserta los encabezados de las ramas principales como cap\'itulos para secciones dentro de una presentaci\'on.
+Some of the templates make use of {\em sections} e.g. insert the
+headings of mainbranches as chapters for sections into the presentation.
+
+\subsubsection*{Imagen}
+\vym soportar todos los formatos de imagen que son originalmente soportadas por las herramientas de QT: BMP, JPEG, PBM, PGM, PNG, PPN, XPN y XBM. Para utilizar en sitios web y enviar im\'agenes por correo electr\'onico se recomienda PNG, el cual considera la calidad y el tama\~no de la imagen. \vym utiliza las opciones de QT por defecto para comprimir las im\'agenes.
+
+\subsubsection*{ASCII}
+       Exportar una imagen como texto es algo experimental hasta los momentos. Probablemente se podr\'a hacer luego con el uso de hojas de estilo. As\'i que el resultado puede cambiar en futuras versiones de \vym.
+
+\subsubsection*{\LaTeX}
+\vym puede generar un archivo de entrada para \LaTeX. Esto es considerado como experimental, todav\'ia no existen opciones. Seleccionado
+\begin{itemize}
+       \item   Archivo \ra Exportar \ra \LaTeX
+\end{itemize}
+       se le preguntara en una ventana de di\'alogo por el nombre del archivo de salida. Este archivo debe ser incluido en el documento \LaTeX utilizando el comando
+\begin{verbatim}
+       \include{inputfile.tex}
+\end{verbatim}
+
+\subsubsection*{Marcadores KDE}
+\vym sobreescribir\'a el archivo de marcadores de KDE e intentar\'a notificar a los konquerors el cambio del archivo v\'ia DCOP. 
+¡ \vym no crea copias de seguridad !
+\begin{itemize}
+       \item Archivo \ra Exportar \ra KDE Bookmarks
+\end{itemize}
+
+\subsubsection*{XHTML (Paginas Web)}
+
+Este es el formato que querr\'as utilizar para crear una p\'agina web. Por ejemplo observa la p\'agina oficial de \vym:
+\href{http://www.InSilmaril.de/vym}{www.InSilmaril.de/vym}
+
+Una explicaci\'on de como trabaja esto: 
+Antes de que un mapa es exportado a XHTML, sera escrito primero como XML en un directorio (ver \ref{xmlexport}). Luego el programa externo {\tt
+xsltproc} \footnote{En Linux SUSE xsltproc es instalado por defecto.}  
+sera llamado para procesar el archivo XML y genera el c\'odigo HTML. Una ventana de di\'alogo le permite escoger varias opciones:
+\begin{itemize}
+       \item {\bf Incluir una imagen:}  Si esta configurado, \vym creara un mapa de imagen en la parte superior de la salida HTML. Haciendo click sobre una rama del mapa lo llevara a la secci\'on correspondiente de la salida.
+       \item {\bf Encabezados con color:}
+       Si esta seleccionado, \vym coloreara los encabezados en el texto con los mismos colores del mapa.
+       \item {\bf Mostrar Advertencias: }
+       Si esta seleccionado, \vym preguntara primero antes de sobreescribir la informaci\'on,
+       \item {\bf Mostrar la salida:}
+       Esto resulta \'util principalmente para la depuraci\'on. Mostrara como el procesamiento del archivo XML trabaja, llamando a  {\tt xsltproc}.
+\end{itemize}
+Adem\'as las direcciones para el CSS y XSL stylesheets se pueden configurar. Por defecto en LINUX SUSE se encuentran en
+{\tt /usr/share/vym/styles}.
+
+
+ varios mapas combinados tienen que ser guardados en el mismo directorio.
+\subsubsection*{XML} \label{xmlexport}
+
+El mapa es escrito dentro de los directorios como una imagen y como XML. El directorio se selecciona en una ventana de di\'alogo. Si el directorio no esta vac\'io, se le preguntara si se arriesga a sobreescribir su contenido.
+
+Es posible exportar diferentes mapas a un mismo directorio. Cada archivo generado tendr\'a el nombre del mapa como un prefijo, por ejemplo {\tt todo.vym} se convertir\'a en {\tt todo.xml}, {\tt todo.png}, {\tt todo-image-1.png} y as\'i sucesivamente. Esto es \'util si por ejemplo para una p\'agina web.
+
+\subsubsection*{Exportar una parte del mapa}
+Seleccione la rama que desea exportar junto a sus hijos, luego en el men\'u desplegable y seleccione {\em Guardar Selecci\'on}. Esto creara un archivo con la extensi\'on {\tt .vyp}, el cual es la abreviaci\'on de \lq \vym part\rq.
+
+\section{Edici\'on Avanzada}
+
+\subsection{Como trabajar con Marcadores} \label{bookmarks}
+\subsubsection*{Abra una nueva pesta\~na en vez de una nueva ventana}
+Si usa konqueror como buscador, \vym recordar\'a el konqueror que fue abierto antes por \vym. Tambi\'en puede presionar \key{Ctrl} y de click para abrir el link en una nueva pesta\~na.
+
+\vym tambi\'en puede abrir pesta\~nas en Mozilla o Firefox usando el comando remoto\footnote{\href{http://www.mozilla.org/unix/remote.html}{http://www.mozilla.org/unix/remote.html}}
+para estos.
+
+\subsubsection*{Arrastrar y soltar}
+Si desea mantener el marcador en el mapa, seleccione una rama donde deseee agregar el marcador,
+despu\'es simplemente arrastre la URL desde su buscador hasta el mapa. Tambi\'en puede usar un encabezado existente como 
+URL: Click derecho sobre la rama y selecciones "Usar encabezado por URL".
+
+\subsubsection*{Acceso directo a la lista de marcadores de un buscador}
+Por favor observe las secciones \ref{import} y \ref{export} about
+Import and Export filters.
+
+\subsubsection*{URLs especiales}
+\vym puede tornar un encabezado existente de una rama en una URL. Actualmente
+este trabaja para ingreso de Bgus en un sistema de Bugtracking de Novell: Abra el 
+men\'u de contexto de una rama (usualmente click derecho en \'el) y seleccione
+\begin{itemize}
+       \item Crear URL con Bugzilla
+\end{itemize}
+La URL ser\'a constuida desde el n\'umero en la cabecera.
+
+\subsection{Incluir im\'agenes en uan rama} 
+La configuraci\'on por defecto de una im\'agen flotar "libremente". Estas pueden ser
+posicionadas en cualquier lugar, pero siempre terminar\'an en el mismo lugar como
+las otras partes del mapa.
+
+La soluci\'on es incluirla "dentro" de uan rama. Esto puede ser hecho v\'ia
+el men\'u de contexto de su rama padre:
+\begin{itemize}
+       \item Incluir imagen horizontalmente
+       \item Incluir imagen verticalmente
+\end{itemize}
+La imagen a\'un no est\'a posicionada relativa a su rama padre, pero el
+encabezado y borde de la rama se adaptan a la im\'agen flotante, observe a continuaci\'on:
+\begin{center}
+       \includegraphics[width=11cm]{images/includeImages_es.png}
+\end{center}
+
+\subsection{Modificadores} 
+Los modificadores son por ejemplo las teclas \key{Shift} o \key{Alt}. Mientras se presionan junto con el rat\'on, estos ocasionan que \vym utilice las acciones "modificadas". Por ejemplo puede mover las ramas con el rat\'on. Si presiona \key{Ctrl} o \key{Alt} mientras suelta la rama, esta sera agregada por encima o debajo del blanco pero no como un hijo.
+
+Sin un modificador presionado, el primer click a una rama solo la selecciona. Para crear el comportamiento de \key{Ctrl} hay varias opciones, que pueden ser seleccionadas desde la barra de herramientas:
+
+
+\begin{center}
+       \includegraphics[width=3cm]{images/modmodes.png}
+\end{center}
+Por defecto esta copiar el color de la rama donde hicimos click a la que seleccionaremos. En la barra de herramientas el modificador por defecto esta seleccionado para copiar el color de la rama.  El segundo modificador le permite f\'acilmente copiar el color de una rama entera con un solo click. El tercer modificador le permite crear {\em xLinks}, los cuales se explicaran en la siguientes secci\'on.
+
+\subsection{Esconder enlaces de objetos no seleccionados}
+A veces es \'util posicionar libremente una rama, como una rama principal o una imagen. Aunque esto no es posible (todav\'ia) para todas las ramas, puede utilizar una rama y ocultar su enlace de conexi\'on al centro del mapa. Se pude utilizar por ejemplo con leyendas o una colecci\'on de Links de \vym que apuntan a otros mapas:
+
+\begin{center}
+       \includegraphics[width=9cm]{images/hiddenlink_es.png}
+\end{center}
+
+
+\subsection{XLinks} \label{xlinks}
+Hasta ahora todo la informaci\'on en el mapa \vym se parece a la de un \'arbol. Utilizando xLinks puede enlazar una rama con otra, como amarrando una cuerda entre las dos ramas en un \'arbol real. Esto es muy \'util en mapas complejos, donde se quiera tener referencias cruzadas que no se ajusten al \'area visible en la pantalla. El siguiente ejemplo, el cual forma parte del paquete \vym, se ajusta a la pantalla, pero muestra como la informaci\'on puede estar entrelazada. En el gr\'afico hay un enlace desde una tarea (prepara una presentaci\'on) hacia informaci\'on general:
+
+\begin{center}
+       \includegraphics[width=12cm]{images/xlink_es.png}
+\end{center}
+F\'ijese que un xLink que apunta a una rama que no se encuentra visible (porque estas acoplada), se muestra como una peque\~na flecha horizontal. En la imagen de la pantalla arriba observe la rama \lq Jueves\rq\ .
+
+\subsubsection*{Crear un xLink}
+Seleccione el tipo de link en el modificador de la barra de herramientas (haciendo click o presionando \key{L}. Seleccione la rama donde el xLink comenzara. Presiones la tecla modificadora \key{Ctrl} y simult\'aneamente haga click sobre la rama donde el enlace terminara. (El enlace es dibujado antes de que suelte el bot\'on del rat\'on). Si suelta el rat\'on sobre una rama el xLink se volver\'a permanente.
+
+\subsubsection*{Modificar o borrar un xLink}
+En el men\'u desplegable de la rama seleccione la opci\'on \lq Editar xLink\rq. Un submen\'u contiene todos los xLinks de la rama (si existe alguno). Son nombrados como las ramas donde finalizan. Seleccione uno y se abrir\'a una ventana de di\'alogo, donde puede seleccionar el color, ancho o borrar el xLink.
+
+\subsubsection*{Seguir un xLink}
+En un mapa complejo \vym resulta \'util saltar al final del xLink. Puede realizar esto a trav\'es del men\'u desplegable de la rama y haciendo click en \lq Ir a xLink\rq y seleccione el xLink que desea seguir.
+
+\subsection{Agregando y removiendo ramas}
+El men\'u desplegable de una rama muestra mas formas de agregar y borrar informaci\'on por ejemplo puede borrar una rama y conservar sus hijos.  Los hijos se enlazan al padre de la rama que fue removida. Ramas parecidas pueden insertarse a mapas existentes. Para atajos en el teclado revise el men\'u desplegable.
+
+\subsection{Agregando un mapa o parte de el}
+Seleccione la rama donde desea agregar un mapa guardado ({\tt .vym}) o parte de un mapa ({\tt .vyp}), luego en el men\'u desplegable seleccione {\em Agregar \ra Importar}. Para importar puede escoger ente {\em Agregar o Reemplazar}: La informaci\'on importada se agregar\'a o reemplazar\'a la selecci\'on.
+
+\section{\vym en Mac OS X}
+\subsection{Descripci\'on}
+B\'asicamente existen 2 maneras para correr \vym en Macs:
+\subsubsection*{Edici\'on QT Mac:}
+       \vym esta disponible como una aplicaci\'on comprimida para Mac OS X. Ha sido compilada u probada en Mac OS 10.3, Pero tambi\'en debe trabajar en Tiger. Utilizando la versi\'on Mac de la librer\'ia Trolltechs QT. 
+\subsubsection*{X11}
+       \vym puede tambi\'en correr la versi\'on de Linux, pero entonces los men\'us y el manejo tambi\'en ser\'an como los de esa versi\'on de Linux, por ejemplo la barra del men\'u se vera diferente. 
+
+\subsection    {Men\'u desplegable y teclas especiales}
+
+La mayor\'ia de las Mac desafortunadamente tienen un solo bot\'on para el rat\'on. Para mostrar el men\'u desplegable, el cual se abre con el bot\'on derecho del rat\'on, puede hacer click mientras presiona una tecla \key{kommand}.
+
+Especialmente en port\'atiles faltan algunas de las teclas utilizadas en los ordenadores de escritorio. La edici\'on QT-Mac de \vym tiene sus propios atajos por teclado. Para conseguir los atajos solo eche un vistazo a todas las funciones del men\'u, junto observara los atajos. Los botones de la barra de herramientas tambi\'en poseen atajos, solo coloque el puntero del rat\'on sobre el bot\'on y espere a que aparezca la peque\~na ventan de ayuda.
+
+\subsection {Visualizando enlaces externos}
+
+En Mac, \vym usa la llamada al sistema {\tt /usr/bin/open} para ver los enlaces. Mac OS determina autom\'aticamente si el enlaces es un 
+
+\begin{appendix}
+
+\section{Iniciando \vym}
+\subsection{Direcci\'on para recursos}
+\vym intentara encontrar sus recursos (im\'agenes, hojas de estilo, filtros, etc.) en las siguientes ubicaciones:
+\begin{enumerate}
+       \item Direcci\'on dada por la variable del entorno {\tt VYMHOME}.
+       \item 1.Si fue llamado por una opci\'on local (vea la secci\'on \ref{options} m\'as adelante), \vym buscara por la informaci\'on en el 
+       \item {\tt /usr/share/vym}
+       \item {\tt /usr/local/share/vym}
+\end{enumerate}
+
+\subsection{Opciones de la linea de comando.} \label{options}
+\vym tiene las siguientes opciones
+\begin{center}
+\begin{tabular}{ccp{8cm}}\\ 
+\bf Opci\'on   & \bf Comentario & \bf Descripci\'on \\ \hline
+v & versi\'on & Muestra la versi\'on de \vym \vym\\
+l & local      & Utiliza direcciones locales para hojas de estilo, traducciones, iconos, etc. \'Util para realizar pruebas\\
+h & ayuda      & Muestra ayuda\\
+q & abandonar  & Abandona inmediatamente luego de haber iniciado. \'Util para realizar comparaciones.\\
+\end{tabular}
+\end{center}
+Tambi\'en puede dar varios nombres de archivo en la linea de comando para que \vym abra varios mapas al mismo tiempo.
+\section{Contribuyendo con \vym}
+Hasta ahora he dicho que he escrito 98\% del c\'odigo yo mismo. No es sorpresa que \vym se adapte a mis necesidades. Sin embargo me gustar\'ia animar a todos los usuarios de \vym a contribuir. No solo con peticiones para mejorar opciones, sino tambi\'en con el c\'odigo, nuevos filtros para importar/exportar, traducciones, etc. En este ap\'endice tratare de mostrar lo f\'acil que es expandir las cosas que puede actualmente hacer con \vym. Espero pronto saber de ustedes!
+
+\subsection{Obteniendo ayuda}
+
+\subsubsection*{Preguntas t\'ipicas (FAQ)}
+Dir\'ijase a FAQ disponible en la p\'agina web de \vym:
+\begin{center}
+\href{http://www.InSilmaril.de/vym/faq.html}{http://www.InSilmaril.de/vym/faq.html}
+\end{center}
+
+\subsubsection*{Listas de correo}
+Existen dos listas de correo: {\tt vym-forum} es el foro de los usuarios de \vym para discutir las preguntas, mientras que {\tt vym-devel} esta dirigida a gente que desea contribuir con \vym. Puede revisar los archivos y suscribirse en
+\begin{center}
+\href{https://sourceforge.net/mail/?group_id=127802}{https://sourceforge.net/mail/?group\_id=127802}
+\end{center}
+
+\subsubsection*{Contactar al autor}\label{author}
+Intente en la listas de correo primero si necesita soporte t\'ecnico. Si todo lo anterior falla puede contactar al Uwe Drechsel a
+\begin{center}
+\href{mailto:vym@InSilmaril.de}{vym@InSilmaril.de}
+\end{center}
+
+\subsubsection*{Contactar los traductores}\label{author}
+Para indicar errores de traducci\'on, sugerencias y afines envie un correo a
+\begin{center}
+\href{mailto:aclibre@gmail.com}{aclibre@gmail.com}
+\end{center}
+
+
+
+\subsection{Como reportar errores}
+A pesar de que Sourceforge tiene su propio sistema para reportar errores, preferir\'ia que me contactara primero (vea la secci\'on \ref{author}) e incluso mejor: Puede reportar el error en Bugzilla, el sistema de reporte de errores del sistema de openSUSE:
+\begin{center}
+\href{http://en.opensuse.org/Submit_a_bug}{http://en.opensuse.org/Submit\_a\_bug}
+\end{center}
+Yo compilo \vym regularmente para openSUSE, as\'i que deber\'ia reportarlo all\'i aunque utilice otro Sistema Operativo. No olvide mencionar
+\begin{itemize}
+       \item Los pasos exactos necesarios para reproducir el error
+       \item La versi\'on y fecha del \vym (vea Ayuda \ra Acerca de \vym)
+       \vym)
+       \item Hardware y Sistema Operativo
+\end{itemize}
+
+\subsection{Compilando desde el C\'odigo Fuente}
+\subsubsection{Obteniendo las fuentes} \label{getsources}
+Encontrara la ultima versi\'on de \vym en el sitio del proyecto:
+\begin{center}
+\href{https://sourceforge.net/projects/vym/}{https://sourceforge.net/projects/vym/}
+\end{center}
+All\'i puede ver los repositorios (CVS) del c\'odigo fuente:
+
+\begin{verbatim}
+cvs -d:pserver:anonymous@cvs.sf.net:/cvsroot/vym checkout code
+\end{verbatim}
+
+\subsubsection{Herramientas Qt}
+Qt es un conjunto de herramientas de C++ para el desarrollo de aplicaciones e interfaces gr\'aficas multiplataforma. Provee de un solo c\'odigo portable entre MS Windows, Mac OS X, Linux y todas las variantes comerciales de Unix. Qt tambi\'en esta disponible para dispositivos integrados. Qt es un producto Trolltech. Para mas informaci\'on:
+\begin{center}
+\href{http://www.trolltech.com/qt/}{www.trolltech.com/qt} 
+\end{center}
+
+
+\subsubsection{Compilando \vym}
+Aseg\'urese de que instalo el entorno Qt apropiadamente, vea la documentaci\'on de Qt para mas detalles. Necesita tener el comando {\tt qmake} en las variables de entorno, luego ejecute
+
+\begin{verbatim}
+qmake
+make  
+make install
+\end{verbatim}
+El ultimo comando make install necesita los permisos de root. Por su puesto se puede omitir, si solo desea probar \vym.
+
+%\subsubsection*{Compiling \vym on Macs}
+%TODO
+
+\subsection{Formato de los archivos \vym } \label{fileformat}
+Por lo general los mapas tienen la extensi\'on "{\tt .vym}" y representan un archivo comprimido de la informaci\'on. Si desea tener una vista a fondo de la estructura de la informaci\'on del mapa llamado "mapname.\vym", descomprima el mapa manualmente utilizando
+\begin{verbatim}
+       unzip mapname.vym
+\end{verbatim}
+Esto creara directorios llamados {\tt images} y {\tt flags} en el directorio actual y en el propio mapa, por lo general llamado mapname.xml. La estructura XML de \vym se explica por si sola, solo eche un vistazo a {\tt mapname.xml}.
+
+El archivo XML puede ser cargado directamente en \vym, no tiene que estar comprimido. Si desea comprimir toda la informaci\'on utilice
+\begin{verbatim}
+       zip -r mapname.vym .
+\end{verbatim}
+para comprimir la informaci\'on del directorio donde se encuentra.
+
+\subsection{Nuevas Opciones}
+Existen muchas opciones que han encontrara en \vym. Junto con \vym recibi\'o un directorio con algunos mapas, por ejemplo en SUSE LINUX 
+\begin{center}
+       {\tt /usr/share/doc/packages/vym/demos}
+\end{center}
+donde encontrara el mapa {\tt todo.vym}. Muestra muchas cosas que se har\'an en el futuro. Si tiene mas ideas, conecte al equipo desarrollador a 
+{\tt vym-devel@lists.sourceforge.net}.
+
+
+\subsection{Soporte a nuevos lenguajes}
+Para agregar otro lenguaje a \vym necesita el c\'odigo fuente (vea la secci\'on \ref{getsources})  y la instalaci\'on de Trolltechs QT. Una parte de QT son las herramientas de desarrollo, de esas herramientas es necesaria la herramientas de traducci\'on "Lingü\'istica".
+
+En algunas distribuciones de Linux las herramientas de desarrollo se encuentran en un paquete extra, por ejemplo en SUSE LINUX debe instalar:
+\begin{verbatim}
+    qt3-devel.rpm
+    qt3-devel-doc.rpm
+    qt3-devel-tools.rpm
+    qt3-man.rpm
+\end{verbatim}
+Sino posee QT en su sistema, lo puede conseguir en 
+       \href{http://www.trolltech.com}{http://www.trolltech.com}
+Una vez que ya pueda compilar \vym, puede traducir el texto de \vym realizando los siguientes pasos:
+\begin{itemize}
+       \item Supongamos que la codificaci\'on es "Nueva" en lugar de "de" para el alem\'an o "es" para el espa\~nol
+       
+       \item Copie el archivo {\tt lang/vym\_en.ts} en {\tt ang/vym\_Nueva.ts} (El propio c\'odigo contiene la versi\'on en ingles). 
+               
+       \item Agregue  {\tt lang/vym\_Nueva.ts} a la secci\'on de TRADUCCIONES de \vym.pro. 
+
+       \item Ejecute Linguist en {\tt vym\_Nueva.ts} y realice la traducci\'on.  
+
+       \item Ejecute {\tt lrelease}  para crear {\tt vym\_Nueva.qm} to create 
+
+       \item Ejecute make install para instalar el nuevo \vym y revisar la traducci\'on.
+\end{itemize}
+
+Si lo desea tambi\'en puede traducir el manual. Esta escrito en LaTeX, solo debe cambiar el archivo text/\vym.tex. (Linguist o QT no se necesitan pero si se necesita saber como trabajar con LaTeX, espec\'ificamente pdfltex para crear un PDF).
+
+Por favor env\'ie todas las traducciones que realice. Tambi\'en puedo darle acceso como desarrollador en el proyecto, si desea proveer traducciones regularmente.
+
+\subsection{Nuevos filtros para exportar e importar}
+\vym soporta distintos tipos de filtros. La informaci\'on puede ser escrita directamente, insertada en plantillas o escrita como XML y luego procesada por transformaciones XSL.
+
+Muchas de las funciones de importar/exportar se encuentra en las clases ImportBase y ExportBase y subclases. Estas las pueden conseguir en {\tt imports.h} y {\tt exports.h}.
+
+\subsubsection*{Importa y Exportar directamente}
+n ejemplo de exportaci\'on directa es el de XML. Este m\'etodo toca las implementaciones de casi todos los objetos de \vym, as\'i que mientras pueda mejor utilice transformaci\'on XSL.
+
+Si todav\'ia quiere saber como se realiza esto, comience por observar
+{\tt MapEditor::saveToDir} en {\tt mapeditor.cpp}.
+
+\subsubsection*{Plantillas}
+Las plantillas se introducen para exportar a formatos opendoc utilizados por ejemplo por Open Office. Mientras leo las especificaciones (menor a 500 paginas) acerca del formato\footnote{
+\href{http://www.oasis-open.org/}{http://www.oasis-open.org/}}\ 
+me da la sensaci\'on de que no quiero escribir la exportaci\'on desde el inicio. Seria muy complejo adaptar el estilo a sus propios deseos, por ejemplo el layout.
+
+En su lugar analizo los documentos existentes del Open Office. Encontr\'e que existen un gran numero de bits redundantes en la informaci\'on de una presentaci\'on cl\'asica, por ejemplo cada lista de detalles es contenida en su propia lista. Al final expuse el estilo de la presentaci\'on por defecto, que todav\'ia puede ser simplificado, solo en caso de que tenga tiempo libre\ldots
+
+Las plantillas existentes todav\'ia est\'an bajo desarrollo, antes de que pase mucho tiempo desarrollando su propio estilo, por favor contacteme. B\'asicamente se necesitan los siguientes pasos para construir su propio estilo:
+\begin{enumerate}
+       \item Crea un ejemplo en Open Office. Utilice un titulo, nombre de autor, encabezado de pagina, etc. \ que f\'acilmente puede escoger para la salida del archivo.
+       
+       \item Descomprima el documento Open Office en un directorio.
+
+       \item El archivo principal es llamado {\tt content.xml}. Toda la informaci\'on esta en una sola linea. Puede dividir las etiquetas XML utilizando el script {\tt        scripts/niceXML}, el cual es parte de la distribuci\'on de \vym.
+
+       \item Copie la salida de  {\tt niceXML} en {\tt content-template.xml}.
+
+       \item Observe que encontrara un gran numero de definiciones sin utilizar, por ejemplo de algunos estilos. Los puede borrar o simplemente ignorarlos.
+
+       \item 1.Intente encontrar su titulo, nombre de autor. \vym reemplazara las siguientes cadenas mientras realiza la exportaci\'on:
+       \begin{center}
+       \begin{tabular}{lp{4cm}}
+               {\tt <!-- INSERT TITLE -->}             & title of map \\
+               {\tt <!-- INSERT AUTHOR-->      }       & author \\
+               {\tt <!-- INSERT COMMENT -->}   & comment \\
+               {\tt <!-- INSERT PAGES-->}              & content of map \\
+       \end{tabular}
+       \end{center}
+       El contenido es generado de manera similar insertando listas en {\tt page-template}. Se realizan las siguientes sustituciones:
+       \begin{center}
+       \begin{tabular}{lp{7cm}}
+               {\tt <!-- INSERT PAGE HEADING-->}               & Encabezado de la pagina (rama principal o                                                             hijo de la rama principal, dependiendo                                                  del uso de las secciones). \\
+               {\tt <!-- INSERT LIST -->       }       & Todos los hijos de ramas de arriba. \\
+       \end{tabular}
+       \end{center}
+\end{enumerate}
+Actualmente las im\'agenes son exportadas y las notas solo aparecen como texto sin formato y colores.
+
+
+\subsubsection*{Transformaciones XSL}
+\vym utiliza transformaciones XSL mientras exporta (por ejemplo XHTML) e importa informaci\'on (por ejemplo marcadores KDE). Se necesita de un poco de c\'odigo para la interfaz gr\'afica del usuario, el resto es realizado utilizando la hoja de estilo {\tt .xsl} e invocando el procesador {\tt xsltproc}, el cual forma parte de libxslt, la librer\'ia XSLT C para GNOME.
+
+\end{appendix}
+\end{document}
+\end{document}
+
diff --git a/tex/vym_fr.tex b/tex/vym_fr.tex
new file mode 100644 (file)
index 0000000..7093894
--- /dev/null
@@ -0,0 +1,1911 @@
+%% LyX 1.5.1 created this file.  For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[12pt,french,a4paper]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\setcounter{secnumdepth}{2}
+\setcounter{tocdepth}{2}
+\usepackage{array}
+\usepackage{graphicx}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+%% Bold symbol macro for standard LaTeX users
+\providecommand{\boldsymbol}[1]{\mbox{\boldmath $#1$}}
+
+%% Special footnote code from the package 'stblftnt.sty'
+%% Author: Robin Fairbairns -- Last revised Dec 13 1996
+\let\SF@@footnote\footnote
+\def\footnote{\ifx\protect\@typeset@protect
+    \expandafter\SF@@footnote
+  \else
+    \expandafter\SF@gobble@opt
+  \fi
+}
+\expandafter\def\csname SF@gobble@opt \endcsname{\@ifnextchar[%]
+  \SF@gobble@twobracket
+  \@gobble
+}
+\edef\SF@gobble@opt{\noexpand\protect
+  \expandafter\noexpand\csname SF@gobble@opt \endcsname}
+\def\SF@gobble@twobracket[#1]#2{}
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
+
+
+
+\usepackage{hyperref}
+
+
+%\usepackage{longtable}
+
+
+\setlength{\headheight}{0cm}
+\setlength{\headsep}{0cm}
+\setlength{\topskip}{0cm}
+\setlength{\topmargin}{-0.5cm}
+
+\setlength{\parskip}{1.5ex}
+\setlength{\parindent}{0cm}
+\setlength{\oddsidemargin}{0cm}
+\setlength{\textwidth}{16cm}
+\setlength{\textheight}{27cm}
+
+\newlength{\maximgwidth}
+\setlength{\maximgwidth}{14cm}
+\newcommand{\maximage}[1]{     
+\begin{center}
+\includegraphics[width=\maximgwidth]{#1} 
+\end{center}
+}
+\newcommand{\hint}[1]{
+\begin{center} 
+\begin{tabular}{|rp{12cm}|} \hline
+{\bf Astuce }:& #1\\   \hline
+\end{tabular}
+\marginpar{\Huge !} 
+\end{center} 
+}
+
+\newcommand{\vym}{{\sc vym }}
+\newcommand{\ra}{$\longrightarrow$}
+\newcommand{\la}{$\longleftarrow$}
+\newcommand{\ua}{$\uparrow$}
+\newcommand{\da}{$\downarrow$}
+\newcommand{\key}[1]{[#1]}
+
+%\newenvironment{code}[1]{ \verbatim #1}{\endverbatim  }
+
+\hypersetup{bookmarks, bookmarksopen,
+  pdftitle={VYM - a tool for visual thinking },
+  pdfauthor={Uwe Drechsel},    
+  pdfsubject={map},
+  pdfkeywords={map, tool},
+  pdfpagemode={UseOutlines},                                 
+  bookmarksopenlevel={1},   
+  colorlinks={true},     
+  linkcolor={blue},
+  urlcolor={green},
+  citecolor={red}} 
+
+\usepackage{babel}
+\addto\extrasfrench{\providecommand{\og}{\leavevmode\flqq~}\providecommand{\fg}{\ifdim\lastskip>\z@\unskip\fi~\frqq}}
+\makeatother
+
+\begin{document}
+
+\title{\includegraphics[width=8cm]{images/vym-logo-new} \\
+ VYM \\
+ -- \\
+View Your Mind\\
+ {\small Version 1.10.0}\\
+{\small (version française)}}
+
+
+\author{\textcopyright Uwe Drechsel }
+
+\maketitle
+\newpage{}
+
+\tableofcontents{}
+
+\newpage{}
+
+
+\section*{Remerciements}
+
+Beaucoup de gens m'ont envoyé leurs impressions et leurs idées et
+tout cela m'a aidé à faire \vym meilleur. Merci à tous !
+
+Pour ce manuel, je remercie particulièrement :
+
+\begin{itemize}
+\item {\em Peter Adamson} pour un grand nombre de retours et pour la
+relecture de mon anglais très imparfait,
+\item L'équite du {\em AClibre (Academia y Conocimiento Libre)} en Colombie
+pour leur traduction du manuel en espagnol : 
+
+
+\begin{center}
+\begin{tabular}{|p{7cm}|p{5.5cm}|}
+\hline 
+Encargado  & Actividad \tabularnewline
+\hline 
+\begin{itemize}
+\item Vanessa Carolina Gutiérrez Sanchez 
+\item Erika Tatiana Luque Melo 
+\item Jeffrey Steve Borbón Sanabria 
+\item John Edisson Ortiz Román 
+\end{itemize}
+ & \begin{itemize}
+\item Traducciónl 
+\item Revisión y correcciones varias 
+\item Estructuración y exporte 
+\item Revisión y correcciones varias 
+\end{itemize}
+\tabularnewline
+\hline
+\end{tabular}
+\par\end{center}
+
+\end{itemize}
+\newpage{}
+
+
+\section*{Note du traducteur}
+
+Correspondances entre les mots de la version originale en anglais
+et la version française. Certains mots trop spécifiques à \vym  ont
+été gardés en anglais.
+
+
+\subsection*{traduits}
+
+\begin{description}
+\item [{ancre}] \emph{anchor }
+\item [{canevas}] \emph{layout }
+\item [{carte}] \emph{map }
+\item [{défaire/refaire}] \emph{undo/redo }
+\item [{emoticon}] \emph{smiley }
+\item [{escamotage}] \emph{folding }
+\item [{fils}] \emph{child }
+\item [{indicateur}] \emph{flag }
+\item [{menu~de~contexte}] \emph{context menu} 
+\item [{menu~des~préférences}] \emph{settings menu }
+\item [{mode~modificateur}] \emph{modifier (CTRL) }
+\item [{navigateur}] \emph{webbrowser }
+\item [{onglets}] \emph{bookmark }
+\item [{patrons}] \emph{frame }
+\item [{titre}] \emph{heading }
+\item [{signets}] \emph{bookmark }
+\item [{sous-arbre}] \emph{jeu de branches en dessous}
+\item [{barre~de~travail}] \emph{toolbars}
+\end{description}
+
+\subsection*{non traduits}
+
+\begin{description}
+\item [{mapeditor}] fenêtre d'édition de la carte 
+\item [{mapcenter}] milieu du mapeditor 
+\item [{noteeditor}] fenêtre d'édition des notes
+\item 
+\end{description}
+\clearpage 
+
+
+\section{Introduction}
+
+
+\subsection{Qu'est-ce qu'une carte \vym ?}
+
+Une carte \vym (on abrégera sous le nom de {\em carte}) est une
+structure en forme d'arbre : \maximage{images/example1_fr.png}
+De telles cartes peuvent être faites à la main sur une feuille de
+papier ou en brouillon et aident à structurer vos pensées. Alors qu'une
+structure en forme d'arbre comme sur l'image ci-dessus peut être tracée
+à la main, \vym offre des possibilités supplémentaires.
+
+\vym n'est pas un logiciel de dessin supplémentaire, mais un outil
+pour mémoriser et modifier l'information de façon intuitive. Par exemple,
+vous pouvez réorganiser des parties de la carte en appuyant sur une
+touche ou ajouter des informations comme un email complet simplement
+par un clic de souris.
+
+Un fois que vous avez fini de rassembler et d'organiser vos idées
+vous pouvez générer des sorties ---basées sur une {\em carte}---
+sous divers formats incluant une présentation dans Open-Office.
+
+\hint{Vous trouverez la carte ci-dessus et les autres en cliquant
+:
+
+\begin{center}
+Help \ra Open vym examples 
+\par\end{center}
+
+dans la barre de menu.}
+
+
+\subsection{Pourquoi utiliser des {\em cartes}? l'Espace, le Temps et votre
+cerveau}
+
+
+\subsubsection*{Espace}
+
+Une {\em carte} peut concentrer un contenu très complexe sur un
+petit espace comme une feuille de papier. Cela aide les deux côtés
+de votre cerveau : le côté logique et le côté créatif (par exemple
+en utilisant des dessins, des couleurs et des mots clé, souvent appelés
+{\em ancres}. C'est une technique pour aider à organiser votre
+façon de penser et stimuler votre créativité : cela vous aide en développant,
+classant et mémorisant vos idées.
+
+
+\subsubsection*{Temps}
+
+Parce que vous utilisez des mots clé et des dessins, c'est plus rapide
+que les bonnes vieilles \og notes \fg. Votre cerveau mémorise les
+choses par association avec d'autres choses -- une {\em carte}
+utilise ces connexions et stimule de nouvelles associations.
+
+
+\subsubsection*{Votre cerveau}
+
+En 1960 le professeur \textsc{Roger Sperry} découvre que les deux
+hémisphères du cerveau humain s'occupent de domaines différents mais
+{\em peuvent } faire les mêmes choses : 
+
+\begin{center}
+\begin{tabular}{|p{5.5cm}|p{5.5cm}|}
+\hline 
+Côté gauche  & Côté droit\tabularnewline
+\hline 
+\begin{itemize}
+\item expression verbale et écrite,
+\item nombres,
+\item pensée logique, 
+\item analyse et détails,
+\item science,
+\item pensée linéaire,
+\item concept de temps.
+\end{itemize}
+ & \begin{itemize}
+\item langage du corps, 
+\item pensée visuelle, rêves éveillés,
+\item intuition et émotion,
+\item capacité de synthèse,
+\item créativité,
+\item art, musique, danse, 
+\item pensée non linéaire, relation entre les choses,
+\item conscience spatiale.
+\end{itemize}
+\tabularnewline
+\hline
+\end{tabular}
+\par\end{center}
+
+Dans notre société des sciences occidentales, nous avons appris à
+relier principalement le côté gauche de notre cerveau, le côté \og
+rationel \fg{}. Dans d'autres cultures, comme celles des vieilles
+cultures indiennes ou d'autres \og vieilles\fg{} cultures, l'autre
+côté (le droit) est plus important. Les {\em cartes} sont juste
+un moyen de stimuler l'autre coté et d'utiliser les capacités supplémentaires
+dont nous disposons tous.
+
+
+\subsection{Où puis-je utiliser une {\em carte}?}
+
+Voici quelques exemples et comment vous pouvez utiliser ces {\em
+cartes} : 
+
+\begin{itemize}
+\item pour préparer des articles, des papiers, des livres, des discussions,
+etc, 
+\item pour trier des idées complexes, 
+\item pour mémoriser des faits, des noms de personnes, du vocabulaire, etc, 
+\item pour trier des emails, des fichiers et les signets de votre ordinateur, 
+\item la préparation d'un exposé, 
+\item des séances de remue-méninges pour résoudre des problèmes, 
+\item pour enregistrer les tâches lors de l'organisation d'un projet. 
+\end{itemize}
+
+\subsection{Ce que vous ne pouvez pas faire avec une {\em carte}...}
+
+Une {\em carte} tracée par quelqu'un montre la façon de penser
+de son auteur. Elle n'a pas à être juste ou fausse, elle n'est pas
+criticable.\og C'est ce que c'est \fg{}(\textsc{F.~Lehmann}).
+L'outil est d'une très utile à son créateur mais d'un usage très limité
+pour les autres.
+
+Cependant quand un groupe s'investit dans la création d'une {\em
+carte}, tout le groupe bénéficie de son utilisation. Quand un professeur
+développe une {\em carte} avec un groupe d'élèves pendant un cours
+ou quand un chef de projet recueille les informations d'un groupe
+de spcialistes pour l'aider à \og{}{\em encarter}\fg{} les
+tâches nécessaires pour réaliser ce projet.
+
+%\section{Tutorials}
+%TODO
+
+
+
+\subsection{Ressources internet}
+
+Un bon point de départ est d'en apprendre plus sur les {\em cartes
+heuristiques} dans Wikipedia : 
+
+\begin{itemize}
+\item Anglais : \href{http://en.wikipedia.org/wiki/Mind_map}{http://en.wikipedia.org/wiki/Mind\_map} 
+\item Allemand : \href{http://de.wikipedia.org/wiki/Mindmap}{http://de.wikipedia.org/wiki/Mindmap} 
+\item Français : \href{http://fr.wikipedia.org/wiki/Mindmap}{http://fr.wikipedia.org/wiki/Mindmap}
+(N.d.T.)
+\end{itemize}
+
+\section{Le Concept de \vym }
+
+%TODO may add a general introduction here...
+
+
+
+\subsection{La fenêtre principale et ses satellites}
+
+\label{satellite} \vym vient avec plusieurs fenêtres, celle centrale
+est le {\em mapeditor}. D'autres fenêtres, chacune avec une fonction
+particulière peut être ouverte et installée à côté de la fenêtre principale%
+\footnote{L'avantage des fenêtres séparées par rapport à une seule est une plus
+grande flexibilité dans leur position. Par exemple j'utilise le {\em
+noteeditor} \og derrière \fg{} le {\em mapeditor}. Sur Linux
+mon gestionnaire de fenêtres (KDE) me permet de rentrer du texte dans
+un petit coin visible du {\em noteeditor} sans cliquer dessus avec
+la souris. Je positionne la souris sur la fenêtre pour y concentrer
+le focus, un concept utile aussi lorsqu'on travaille avec \href{http://www.gimp.org}{http://www.gimp.org}. %
+}. L'image en dessous montre le {\em mapeditor} avec le {\em noteeditor} souvent
+utilisé : \maximage{images/windows_fr.png} La plupart du temps
+vous travaillerez dans le {\em mapeditor} en ajoutant des nouvelles
+branches, en les déplaçant et en les réarrangeant. Les diverses manières
+de le faire sont expliquées dans \ref{mapeditor}. Vous pouvez enregistrer
+des informations complémentaires par exemple le contenu d'un email
+facilement dans une {\em branche}: copiez et collez dans le {\em
+noteeditor}. La façon de travailler avec des notes est expliqué dans
+\ref{noteeditor}.
+
+Les fenêtres auxiliaires sont : 
+
+\begin{itemize}
+\item Noteeditor (voir \ref{noteeditor}) 
+\item Fenêtre historique (voir \ref{historywindow}) 
+\item Fenêtre des propriétés des branches (voir \ref{propwindow}) 
+\end{itemize}
+
+\subsection{Menus et menus de contexte}
+
+En haut de chaque fenêtre se trouve la barre de menus. Certaines options
+sont sans doute similaires à celles d'autres applications. Notez que
+beaucoup (et sans doute plus) sont disponibles à travers les {\em
+menus de contexte}. Ceux-ci sont disponibles si vous appuyez sur
+bouton droite de la souris en pointant un objet (sur Mac~OS~X Command-Click).
+
+
+
+
+\subsection{Barres de travail}
+
+Les barres de travail dans les fenêtres permettent un accès rapide
+à beaucoup de fonctions et affichent l'état des objets sélectionnés
+dans la carte. Par exemple une branche peut avoir certains {\em
+indicateurs} positionnés, ils sont aussi positionnés dans la barre
+de travail.
+
+\hint{Vous pouvez repositionner toutes les barres de travail en les
+déplaçant simplement par la poignée. Par exemple vous pouvez déplacer
+le menu de travail des indicateurs de sa position d'origine en haut
+du mapeditor pour une position verticale sur le côté droit, ou le
+remettre dans sa position originale. Il est possible de cacher certains
+menus de travail en pointant sa poignée et en cliquant sur le bouton
+droit de la souris.}
+
+
+\subsection{Cartes}
+
+Chaque {\em carte} a son centre {\em mapcenter}. Ce centre a
+des branches partant dans tous les sens comme celles d'un arbre. Chaque
+branche peut aussi avoir d'autres branches. \maximage{images/branches_fr.png}
+Nous appellerons un branche directement connectée au mapcenter une
+{\em branche principale} car elle détermine la position des autres
+branches \og fils \fg{}.
+
+Le mapcenter et les branches ont un {\em titre}. C'est le texte
+que vous voyez dans le mapeditor. C'est ordinairement un ou plusieurs
+mots clé, permettant de comprendre facilement toute la carte.
+
+Dans la barre de menus au-dessous du  mapeditor on voit des symboles
+variés. \maximage{images/default-flags.png} Nous les appellerons
+{\em indicateurs}. Ils sont utilisés pour marquer les branches
+dans la {\em carte}, par exemple si quelque chose est important
+ou douteux. Il y a aussi des indicateurs positionnés automatiquement
+par \vym pour des informations supplémentaires, par exemple qu'une
+note est attachée à une branche particulière.
+
+Par défaut certains de ces indicateurs sont affichés uniquement quand
+l'indicateur \og pouce vers le haut \fg{} est positionné. Ils ne
+le sont plus lorsque l'indicateur \og pouce en bas \fg{} est positionné.
+Vous pouvez changer ce comportement par défaut dans le menu des préférences
+(voir \ref{settings}).
+
+
+\section{Mapeditor}
+
+\label{mapeditor} 
+
+
+\subsection{Commencer une nouvelle carte}
+
+Au démarrage de \vym deux fenêtres vont s'ouvrir : le {\em mapeditor}
+et le {\em noteditor}. Vous travaillerez avec les deux fenêtres
+mais pour l'instant nous n'avons besoin que du mapeditor.
+
+Sélectionner le milieu de la carte \og NEW MAP \fg{} dans le milieu
+du mapeditor en cliquant le bouton gauche de la souris. Il va s'allumer
+en jaune pour montrer qu'il est sélectionné. Il y a plusieurs moyens
+d'ajouter une nouvelle branche au centre :
+
+\begin{itemize}
+\item avec la souris : ouvrir le menu du contexte en cliquant le bouton
+droit de la souris (CTRL-Click sur Mac) sur le milieu de la carte
+et choisir \og Add\ra Add branch as child \fg{} (ajouter une branche
+comme fils).
+\item Appuyer sur les touches \key{Ins} ou \key{A} 
+\end{itemize}
+Une nouvelle branche va apparaître et vous pouvez taper le titre de
+la branche. Terminer l'ajout en appuyant sur \key{Enter}. %tipp
+Quelquefois il est pratique d'ajouter une nouvelle branche au-dessus
+ou au-dessous de la branche courante en faisant au choix :
+
+\begin{itemize}
+\item Touche \key{Shift-A} pour ajouter un branche au-dessus de celle
+sélectionnée,
+\item Touche \key{Ctrl-A} pour ajouter une branche en dessous.
+\end{itemize}
+Il est aussi possible d'ajouter une branche qui soit le \og père \fg{}
+de la branche courante, c'est à dire insérer {\em devant}  la branche
+courante. Cela peut-être fait par le menu de contexte.
+
+\hint{Pour effacer une branche appuyer sur \key{CTRL-X}. Si cela
+est validé dans le menu des préférences (voir \ref{settings}), vous
+pouvez aussi utiliser la touche \key{Del}.}
+
+
+\subsection{Circuler dans une carte}
+
+
+\subsubsection*{Sélectionner des branches}
+
+Pour sélectionner des branches vous pouvez utiliser le bouton gauche
+de la souris ou les flèches de direction. Suivant l'{\em orientation}
+du départ de la branche utiliser la touche \key{\la} ou \key{\ra}
+pour se déplacer plus près de la racine ou plus profondément dans
+les branches. Dans un jeu de branches que nous appellerons {\em
+sous-arbre}, vous pouvez utiliser \key{\ua} et \key{\da} pour
+monter et descendre. Vous pouvez aussi utilisez \key{Home} et \key{End}
+pour sélectionner la première ou la dernière branche.
+
+
+\subsubsection*{Déplacer la partie visible de la carte}
+
+À force d'ajouter des branches, la carte peut devenir plus grande
+que la fenêtre du mapeditor. Vous pouvez utiliser les ascenseurs à
+droite et en bas de la fenêtre pour déplacer la vue. C'est plus facile
+en utilisant le bouton gauche de la souris. Cliquez n'importe où sur
+la {\em surface active de la fenêtre} : choisissez un espace libre
+entre des branches. Le pointeur de la souris va se transformer en
+main, maintenant déplacez la souris pour voir la partie désirée.
+
+Si vous sélectionnez les branches en utilisant les flèches, la carte
+va se déplacer pour que la branche sélectionnée soit toujours visible.
+
+
+\subsubsection*{Zoomer la carte}
+
+Lorsqu'on travaille sur des grandes cartes, la fonction {\em zoom}
+devient pratique. Vous pouvez utiliser :
+
+\begin{itemize}
+\item à partir du menu : View \ra Zoom in, View \ra Zoom out, View \ra
+reset Zoom. 
+\item la barre de fonction~\includegraphics[width=3cm]{images/zoom-buttons} 
+\end{itemize}
+Cliquer sur la loupe avec la croix rouge ré-affiche la carte à sa
+taille originale.
+
+
+\subsubsection*{Fonction de recherche}
+
+\label{findwindow} Avec une grande carte, une fonction de recherche
+devient nécessaire. Ouvrir la fenêtre de recherche :
+
+\begin{center}
+\includegraphics[width=6cm]{images/find-window} 
+\par\end{center}
+
+La fonction va rechercher le texte dans toutes les branches et dans
+les notes associées. À chaque fois que vous appuyez sur le bouton
+\og Find \fg{} il va rechercher la prochaine occurrence qui est
+sélectionnée automatiquement. Si la recherche échoue, un court mess
+sage \og Nothing found \fg{} (rien trouvé) va apparaître en bas
+dans la {\em barre de status} du mapeditor.
+
+
+\subsubsection*{\label{hideunselected}Garder la visibilité, cacher une partie de
+la carte}
+
+Une très grande arborescence (une branche avec une centaine d'enfants
+par exemple) rend difficile la vue d'ensemble de la carte. Vous pouvez
+cacher les enfants en les {\em enroulant}. Cette fonction est souvent
+appelée {\em escamotage} (folding). Pensez que tout le sous-arbre
+est dessiné sur un rouleau de papier. Vous pouvez le dérouler ou l'enrouler
+pour ne voir que la première ligne.
+
+Pour escamoter ou ré-afficher une branche et ses fils vous pouvez
+au choix : 
+
+\begin{itemize}
+\item appuyez sur \key{Scroll Lock} ou \key{S},
+\item appuyer sur le bouton milieu de la souris,
+\item choisir l'icône sur le menu de travail.
+\end{itemize}
+Si vous sélectionnez une branche cachée --par la fonction de recherche
+ou en utilisant les flèches de direction par exemple-- elle va devenir
+provisoirement visible. Cela est montré comme un défilement avec une
+petite loupe. Si la partie \og dé-cachée \fg{} n'est plus nécessaire,
+elle est de nouveau cachée automatiquement. Il est possible de rendre
+toutes les branches visibles en utilisant le menu \og Edit\ra Unscroll
+all scrolled branches \fg{}.
+
+Vous pouvez cacher des parties de la carte pour l'exporter dans une
+page web ou pour une présentation par exemple voir \ref{hideexport}
+pour plus de détails.
+
+
+\subsection{Modifier et déplacer les branches}
+
+
+\subsubsection*{Modifier le titre}
+
+On peut éditer le titre en sélectionnant la branche puis au choix
+:
+
+\begin{itemize}
+\item appuyer sur \key{Enter} 
+\item ou \key{F2} 
+\item faire un double clic avec le bouton gauche de la souris.
+\end{itemize}
+Écrivez votre nouveau titre (ou éditez le) puis appuyez sur \key{Enter}
+pour valider.
+
+
+\subsubsection*{Déplacer une branche}
+
+Le moyen le plus simple de déplacer une branche est de la sélectionner
+avec le bouton gauche de la souris et de la déplacer à sa destination
+en maintenant le bouton enfoncé. Suivant la branche elle sera :
+
+\begin{itemize}
+\item déplacée vers la destination,
+\item {\em liée } à un nouveau {\em parent} (mapcenter ou branche) 
+\end{itemize}
+Si vous déplacez la branche au dessus d'une autre ou du mapcenter,
+vous pourrez constater que le lien le connectant à l'ancien parent
+va être changé pour aller au nouveau situé sous le curseur de la souris.
+Si vous relâchez alors le bouton, la branche va être reliée.
+
+Si vous relâchez le bouton n'importe où, le résultat dépendra du type
+de branche que vous déplacez :
+
+\begin{itemize}
+\item Une branche principale directement connectée au mapcenter. Il va rester
+à sa nouvelle position,
+\item Une autre branche \og ordinaire \fg{} va rejoindre sa position d'origine.
+\end{itemize}
+Vous pouvez ainsi facilement réarranger la disposition des branches
+principales pour qu'elles ne recouvrent pas leurs branches filles.
+Il y a un autre avantage à déplacer les branches, surtout si vous
+voulez {\em réorganiser} un sous-arbre. Vous pouvez monter ou descendre
+une branche par l'action suivante au choix :
+
+\begin{itemize}
+\item appuyer sur \key{Page Up} ou \key{Page Down},
+\item sélectionner Edit \ra Move branch,
+\item appuyer sur les icônes de la barre de menu : \includegraphics[width=1.5cm]{images/move-buttons} 
+\end{itemize}
+%tipp
+Il y a un autre moyen de déplacer des branches : si vous appuyez sur
+\key{Shift} or \key{Ctrl} en bougeant la souris, la branche va
+être ajoutée au-dessus ou au-dessous de la branche sur laquelle la
+souris est. Cela peut être utilisé pour classer les branches dans
+une carte.
+
+
+\subsection{Des couleurs et des images : utiliser le côté droit de votre cerveau}
+
+
+\subsubsection*{Changer la couler d'un titre}
+
+Vous pouvez utiliser des couleurs pour mettre plus d'informations
+sur la carte par exemple mettre du rouge, du vert et d'autres couleurs
+pour montrer la priorité des tâches. Pour ce faire : 
+
+\begin{itemize}
+\item utiliser le menu et choisir : Format \ra Set Color 
+\item utiliser la barre de menu :
+
+
+\begin{center}
+\includegraphics[width=3cm]{images/color-buttons} 
+\par\end{center}
+
+\end{itemize}
+Le premier bouton (noir dans la figure ci-dessus) montre la couleur
+courante. Cliquer dessus vous permet de choisir une autre couleur.
+Vous pouvez \og piquer \fg{} la couleur d'une autre branche en la
+sélectionnant et en utilisant le bouton \og pipette \fg{}. Les deux
+icônes avec une palette colorent la branche sélectionnée avec la couleur
+courante. Alors que la première ne colore que la sélection, la deuxième
+colore tous les fils de la branche sélectionnée.
+
+%tipp
+Une autre fonction très utile est le \og copier couleur \fg{} en
+utilisant la souris : sélectionner une branche qui doit avoir la nouvelle
+couleur appuyez \key{Ctrl} et simultanément cliquez avec le bouton
+gauche sur une autre branche pour copier sa couleur dans la branche
+sélectionnée. Tout le sous-arbre sera coloré. Si vous ne voulez colorer
+que la sélection appuyez sur \key{Shift} au lieu de \key{Ctrl}.
+
+
+\subsubsection*{Utiliser les indicateurs}
+
+\vym possède des indicateurs variés. Ils sont visibles dans la barre
+de menu en haut de la mapeditor. (Note : Comme toutes les barres de
+menu, vous pouvez les déplacer sur le côté droit ou gauche ou même
+les détacher. Prenez la ligne pointillée à gauche de la barre de menu
+avec le bouton gauche de la souris.) \maximage{images/default-flags.png}
+Si vous avez une branche sélectionnée, vous pouvez positionner n'importe
+quel indicateur en les cliquant sur la barre de menu. Les boutons
+de la barre de menu changent d'état et reflètent l'état des indicateurs
+de la branche sélectionnée. Ainsi pour effacer un indicateur d'une
+branche, sélectionnez la branche et cliquez sur le bouton de la barre
+de menu enfonce.
+
+Pour l'instant \vym utilise deux sortes d'indicateurs : les {\em
+Indicateurs Standard} et les {\em Indicateurs Système}. Les indicateurs
+standard sont ceux que l'on voit dans la barre de menu. Les Indicateurs
+Système sont positionnés par \vym pour indiquer qu'il y a par exemple
+de l'information supplémentaire dans une note (plus d'information
+dans \ref{noteeditor}). Dans des versions futures de \vym il pourra
+y avoir une autre sorte d'indicateurs éditables par l'utilisateur.
+
+
+\subsubsection*{Images}
+
+Le moyen le plus simple pour ajouter une image à une branche est de
+la déplaçer par exemple à partir d'un navigateur dans le mapeditor
+pendant qu'elle branche est sélectionnée.
+
+Vous pouvez aussi ajouter une image en ouvrant le menu contextuel
+d'une branche. Cliquez à droite sur la branche sélectionnée, choisissez
+\og Add Image \fg{}. Une fenêtre de dialogue vous permet de la choisir.%
+\footnote{Les formats d'images supportés sont : PNG, BMP, XBM, XPM et PNM. Sont
+aussi supportables JPEG, MNG et GIF, si spécialement configuré pendant
+la compilation dans  SUSE LINUX).%
+} Quand une image est sélectionnée dans le dialogue, un aperçu est
+affiché. Il est possible de sélectionner plusieurs images.
+
+Vous pouvez placer l'image où vous voulez, vous n'avez qu'à la déplacer
+avec la souris en appuyant sur le bouton gauche. Pour la lier à une
+autre branche, appuyer sur la touche \key{Shift} en la déplaçant.
+Pour l'effacer appuyer sur la touche \key{Del}.
+
+Si vous cliquez à droite sur une image, un menu de contexte s'ouvre
+qui vous permet de sélectionner un des multiples format d'image. Puis
+une fenêtre s'affiche pour sauver l'image.
+
+\hint{On utilise cela  pour \og exporter \fg{} l'image, l'image
+sera sauvegardée dans la carte elle-même. Vous pouvez aussi copier-coller
+des images mais il n'est pas possible de lui ajouter des objets. Les
+images sont considérées comme des \og particularités supplémentaires%
+\footnote{extra feature (N.d.T.)%
+} \fg{}. Elles pourraient rendre le travail avec la carte beaucoup
+plus complexe par exemple en liant des images à des images.}
+
+L'option \og Use for export \fg{} contrôle la sortie des exportations
+par exemple en HTML : si positionné à NON, l'image n'apparaîtra pas
+dans le {\em texte} de la sortie. C'est utile pour les grandes
+images ou si des images sont utilisées comme trames comme par exemple
+le nuage autour d'une partie de la carte. Elle n'apparaîtront pas
+au milieu du texte.
+
+Pour le moment le support des images est provisoire : les images sont
+sauvées avec les autres données de la carte dans le fichier \texttt{.vym}.
+Des versions futures incluront plus de possibilités comme le redimensionnement
+des images et changer sa transparence et l'inclure dans le fond de
+la carte), etc.
+
+
+\subsubsection*{Trames}
+
+Une trame peut être ajoutée à une branche dans la {\em fenêtre des
+propriétés} (voir \ref{propwindow}). Vous pouvez aussi utiliser
+des images comme trames. Regardez la carte de démonstration \texttt{todo.vym}
+comme exemple, où le mapcenter est un nuage. Vous pouvez utiliser
+un programme de dessin externe comme\texttt{ gimp} pour créer une
+image, de préférence avec un canal de transparence, ainsi vous pouvez
+créer des trames qui n'ont pas de bord rectangulaire, comme un nuage.
+
+
+\subsection{Conception du fond des cartes et des liens de connections}
+
+La conception du fond d'une carte et aussi des liens reliant les diverses
+parties de la carte peuvent être changés par :
+
+\begin{itemize}
+\item la sélection du format à partir du menu,
+\item en cliquant à droite sur le fond de la carte, ce qui ouvre un menu
+de contexte.
+\end{itemize}
+
+\subsubsection*{Trame de fond}
+
+La couleur est choisie (et aussi affichée) par \og Set background
+colour \fg{}. Vous pouvez aussi choisir une image de fond d'écran
+quoique cela ne soit pas recommandé. Travailler sur la carte devient
+lent et l'image ne peut être positionnée librement.
+
+
+\subsubsection*{Couleur des liaisons}
+
+Les liaisons reliant les branches peuvent être colorées de deux façons
+: 
+
+\begin{itemize}
+\item utiliser la même couleur pour le titre et la ligne représentant la
+liaison,
+\item utiliser {\em une} couleur pour toutes les liaisons et choisir
+des couleurs différentes pour les titres. La couleur par défaut des
+liaisons des branches est bleu.
+\end{itemize}
+Cette dernière couleur peut être choisie par \og Set link colour \fg{}.
+Positionner ou invalider l'option \og Use colour of heading for link \fg{}
+pour basculer entre deux choix dans votre dessin.
+
+
+\subsubsection*{Style de liaison}
+
+\vym offre quatre styles différents pour l'apparence des liaisons
+:
+
+\begin{itemize}
+\item ligne,
+\item parabole,
+\item grosse ligne,
+\item parabole épaisse.
+\end{itemize}
+Les styles \og épais \fg{} ne sont actifs que pour les liaisons
+partant du mapcenter, les liaisons pour le reste de la carte sont
+toujours \og fines \fg{}.
+
+
+\subsection{Liens à d'autres documents et aux pages web}
+
+\vym admet deux types de liens externes :
+
+\begin{itemize}
+\item document qui va être ouvert dans un navigateur externe,
+\item carte \vym, qui sera ouverte par \vym lui-même.
+\end{itemize}
+En supplément aux liens externes, il y en a d'autres internes, reliant
+une branche à une autre sur la même carte. Elles sont appelées {\em
+XLinks} et sont expliquées à la section ~\ref{xlinks}.
+
+
+\subsubsection*{navigateur}
+
+Les navigateurs modernes comme \texttt{konqueror et Firefox} sont
+capables d'afficher des types de fichiers variés locaux ou sur Internet.
+Pour saisir l'~URL d'un document appuyez sur la touche \key{U}
+ou cliquez à droite sur une branche pour ouvrir le menu contextuel
+puis choisir \og References\ra Edit URL \fg{}. Si vous voulez ouvrir
+une fenêtre de dialogue pour choisir plus facilement un fichier local
+tapez ~\key{SHIFT-U}.
+
+Lorsqu'une URL a été entrée, un petit globe apparaît dans la branche.
+On cliquant sur ce globe ou dans le menu contextuel, le navigateur%
+\footnote{Le navigateur peut être changé dans le menu Settings (voir \ref{settings}).%
+} externe sera lancé :
+
+\begin{center}
+\includegraphics[width=0.5cm]{images/flag-url} 
+\par\end{center}
+
+Pour plus d'informations sur le travail avec les signets et les navigateurs
+voir \ref{bookmarks}.
+
+Dans le menu de contexte, il y a une option pour ouvrir toutes les
+URL trouvées dans le sous-arbre de la branche sélectionnée. C'est
+très pratique pour ouvrir tout un jeu de liens dans le navigateur
+surtout si celui-ci dispose d'index (comme \texttt{konqueror}%
+\footnote{ou \texttt{firefox} (N. d. T.)%
+}).
+
+
+\subsubsection*{carte \vym }
+
+Pour lier une branche à une autre carte \vym  cliquer à droite sur
+une branche et choisir : \og Édit \vym links \fg{}. Une fenêtre
+de dialogue sur les fichiers s'ouvre pour vous permettre de choisir
+le fichier voulu. Une branche avec un lien est marquée par :
+
+\begin{center}
+\includegraphics[width=0.5cm]{images/flag-vymlink} 
+\par\end{center}
+
+Cliquer sur cet indicateur, dans la barre de menu ou dans le menu
+de contexte va ouvrir cette carte dans un autre onglet. (voir \ref{tabs}
+pour le travail sur plusieurs cartes). Pour effacer un lien existant,
+cliquer à droite sur la branche et choisir \og Delete \vym link \fg{}.
+
+Dans le menu contextuel, il y a aussi une option pour ouvrir tous
+les liens vers des fichiers \vym  du sous-arbre de la branche sélectionnée
+dans la carte. C'est utile pour ouvrir simultanément une collection
+de cartes en relation avec la carte courante.
+
+Note technique : en interne \vym utilise des chemins absolus, pour
+éviter d'ouvrir plusieurs fois la même carte. Quand la carte est sauvegardée,
+le chemin est converti en relatif (par exemple \texttt{/home/user/vym.map}
+devient\texttt{ ./vym.map}. Cela rend aisé d'utiliser des cartes différentes
+sur plusieurs ordinateurs et de les exporter en HTML pour plus tard.
+
+
+\subsection{cartes multiples}
+
+\label{tabs} Vous pouvez travailler sur plusieurs cartes en même
+temps. Chaque nouvelle carte est ouverte dans un {\em onglet}.
+Les onglets des cartes disponibles sont situés en haut du mapeditor.
+Vous pouvez utiliser les fonctions couper-copier-coller pour transférer
+des données d'une carte à l'autre.
+
+%todo
+
+
+%TODO
+%\subsubsection{Menus}
+%\subsubsection{Keyboard shortcuts}
+
+
+% Settings
+% Images
+% Copy & Paste
+% Working with tabs (multiple maps)
+% Exporting
+% Scrolling
+
+
+
+\section{Noteeditor}
+
+\label{noteeditor}Si vous voulez mettre plus de texte sur une branche
+(par exemple un email complet ou une recette de cuisine ou une palanquée
+de code source) vous pouvez utiliser le noteeditor. \maximage{images/noteeditor_fr.png}
+Cet éditeur affiche le texte associé à la branche sélectionnée dans
+le mapeditor. 
+
+
+\subsection{États}
+
+Avant de pouvoir écrire ou mettre du texte dans le noteeditor, vous
+devez sélectionner une branche dans le mapeditor. La couleur du fond
+du noteeditor indique son état : 
+
+\begin{itemize}
+\item gris : pas de texte,
+\item blanc : du texte existe.
+\end{itemize}
+Dans le mapeditor, pour signaler qu'il y a une note avec plus d'informations
+pour une branche particulière, un petit indicateur \og note \fg{}
+apparaît dans l'entête de la branche. Regardez dans la branche en
+bas à droite de la carte suivante :\maximage{images/branches-flags_fr.png}
+
+
+\subsection{Importer et exporter des notes }
+
+Une note est automatiquement sauvée dans la carte \vym. Il est agréable
+d'importer une note à partir d'un fichier externe ou d'écrire cette
+note dans un fichier externe. Dans le noteeditor utiliser \og File\ra~Import \fg{}
+et \og File\ra~Export \fg{} pour l'import-export.
+
+
+\subsection{Éditer et imprimer une note}
+
+L'édition fonctionne comme un éditeur de texte classique, incluant
+les fonctions annule-recommence. Vous pouvez effacer entièrement la
+note en cliquant sur la corbeille. En cliquant sur le bouton d'impression
+seule la note et imprimée.
+
+
+\subsection{RichText: couleurs, paragraphes et texte formatté}
+
+\vym supporte le texte formatté (QT Rich Text) dans le noteeditor
+depuis la version 1.4.7. Les couleurs et les attributs de texte (par
+exemple italique, gras) sont positionnés avec les boutons au-dessus
+du texte. Le texte lui-même est divisé en paragraphes. Pour chaque
+paragraphe l'alignement peut être spécifié (par exemple centré ou
+à droite). Un paragraphe est terminé par appui sur la touche \key{Return}.
+Si vous voulez juste commencer une nouvelle ligne tapez \key{CTRL-Return}.
+
+
+\subsection{Les fontes et comment les changer rapidement}
+
+Le noteeditor est fait pour éditer de petites notes, ce n'est pas
+un traitement de texte complet. Suite à beaucoup de demandes, \vym
+supporte le texte formatté dans le noteeditor%
+\footnote{\vym utilise le format QRichtText, qui est un sous-ensemble du formattage
+fourni en HTML.%
+}. Deux fontes par défaut sont installées qui peuvent être choisies
+par le \og Settings menu \fg{} (voir \ref{settings}). Une fonte
+à chasse fixe, l'autre variable. La fonte à chasse fixe est utilisée
+pour les emails, le code source, etc l'autre pour les simples notes.
+Les deux fontes peuvent être facilement commutées en cliquant sur
+le bouton suivant dans la barre de menu :
+
+\begin{center}
+\includegraphics[width=0.5cm]{images/formatfixedfont} 
+\par\end{center}
+
+Dans le \og Settings menu \fg{} les deux fontes peuvent être choisies.
+La fonte par défaut peut aussi être changée en sélectionnant ou désélectionnant
+\og fixed font is default \fg{}.
+
+En supplément toute fonte installée sur votre système peut être utilisée.
+Notez que la fonte choisie sera aussi utilisée pour les exports HTML,
+si vous voulez exporter votre carte \vym  l'intranet ou sur le web,
+vous devrez utiliser des fontes disponibles partout.
+
+
+\subsection{Recherche de texte}
+
+Le noteeditor n'a pas sa propre fonction de recherche, utiliser \og Find \fg{}
+dans le mapeditor qui recherche également dans toutes les notes (voir
+\ref{findwindow}).
+
+
+\subsection{Coller du texte dans le noteeditor}
+
+Vous voulez souvent coller du texte dans le noteeditor à partir d'une
+autre application par exemple un email. Normalement \vym va créer
+un nouveau paragraphe pour chaque ligne. Si ce n'est pas ce que voulez
+vous pouvez choisir à partir de la barre de menu
+
+
+\section{Hello world%
+\footnote{\og bonjour monde \fg{} ou comment faire une carte de base%
+}}
+
+Cette section décrit comment \vym réagit au contact d'autres applications.
+Maintenant beaucoup d'applications lisent et écrivent leurs données
+en XML, le \og eXtensible Markup Language \fg{}. \vym utilise aussi
+XML pour sauver ses cartes, voir \ref{fileformat} pour une description
+plus détaillée.
+
+Si vous utilisez une autre application qui utilise le XML, il est
+possible de faire un filtre d'import-export pour \vym. Les volontaires
+sont accueillis avec plaisir ;-)
+
+
+\subsection{Import}
+
+\label{import}
+
+
+\subsubsection*{Signets KDE }
+
+L'éditeur de signets intégrés à KDE (Konqueror etc.) est limité, ainsi
+pourquoi ne pas utiliser \vym pour gérer les signets? Pour créer
+une nouvelle carte contenant contenant les signets courants choisir
+: \og File \ra Import\ra KDE Bookmarks \fg{}
+
+
+\subsubsection*{Mind Manager}
+
+\vym a pour l'instant un filtre d'importation rudimentaire pour convertir
+les cartes créées par {\em Mind Manager}%
+\footnote{Mind Manager est un logiciel commercial c'est à dire non libre. Il
+est développée par Mindjet pour Windows et le Mac. Les deux sont des
+marques enregistrées par Mindjet. Pour plus d'informations voir leur
+site web \href{http://mindjet.com}{http://mindjet.com}%
+} en cartes \vym. Les notes et les images ne sont pas converties pour
+l'instant. Vous pouvez importer des fichiers avec : \og File \ra
+Import\ra Mind Manager \fg{}.
+
+
+\subsubsection*{Structure et répertoires}
+
+\vym peut lire une structure de répertoires. C'est pour tester \vym,
+par exemple pour créer facilement de très grandes cartes utilisées
+pour les essais (oui il y a encore de la place pour optimiser \vym
+;-)
+
+
+\subsection{Export}
+
+\label{export} \label{hideexport} Souvent vous ne voulez pas exporter
+la carte entière, juste une partie. Par exemple, vous pouvez avoir
+une information supplémentaire dont vous voulez parler dans une présentation,
+alors que ces parties ne seront pas visibles pendant la présentation.
+Pour y arriver, vous pouvez \og cacher \fg{} des parties de la carte
+pendant les exports en positionnant l'indicateur \og hide in export \fg{}. 
+
+\begin{center}
+\includegraphics[width=0.5cm]{images/flag-hideexport} 
+\par\end{center}
+
+Vous pouvez basculer cet indicateur à partir de la barre de menu ou
+en tapant \key{H}. Notez qu'il y a une option globale dans le menu
+de préférences( \ref{settings}) pour basculer l'utilisation de cet
+indicateur. Par défaut cet indicateur est validé.
+
+
+\subsubsection*{Open Office}
+
+À partir de la version 2 Open utilise le \og Open Document Format \fg{},
+qui peut être écrit par \vym. Les options sont actuellement limitées.
+Il est possible d'exporter des présentations qui peuvent être ouvertes
+par Open Office Impress. En sélectionnant : \og File \ra Export\ra
+Open Office \fg{}.
+
+Vous obtenez une fenêtre de dialogue où vous pouvez choisir le fichier
+de sortie et le type de fichier : \maximage{images/export-oo.png}
+Les types de fichiers représentent différents types de patrons, qui
+peuvent être créés à partir d'un document Open Office avec un peu
+de travail manuel. La structure de la carte \vym est alors insérée
+dans ce patron. Il y a pour l'instant quelque limitations :
+
+\begin{itemize}
+\item \vym ne peut gérer la longueur des pages, vous devez tester et sans
+doute re-éditer le document Open Office pour éviter que le texte ne
+continue après la fin de la page,
+\item images et les indicateurs ne sont pas utilisés pour le moment,
+\item les notes sont écrites en texte brut , sans RichText 
+\item la gamme complète des patrons n'est pas disponible dans toutes les
+distributions.
+\end{itemize}
+Certains patrons utilisent des {\em sections} c'est à dire qu'ils
+insèrent le titre des branches principales comme des titres de section
+dans la présentation.
+
+
+\subsubsection*{Image}
+
+\vym supporte tous les formats d'image qui sont nativement supportés
+par le QT~toolkit : BMP, JPEG, PBM, PGM, PNG, PPN, XPM et XBM. Pour
+utilisation sur les sites web ou envoyer des images par email, PNG
+est un bon compromis taille/qualité. \vym utilise les options par
+défaut de Qt pour comprimer les images.
+
+
+\subsubsection*{ASCII}
+
+L'exportation en image est expérimental en ce moment. Plus tard cela
+sans doute fait avec des feuilles de style. La forme de la sortie
+risque de changer dans de futures versions de \vym.
+
+
+\subsubsection*{\LaTeX{}}
+
+\vym peut générer un fichier d'entrée pour \LaTeX{}. C'est actuellement
+en développement, il n'y a pas d'option. En sélectionnant : \og File
+\ra Export\ra \LaTeX{} \fg{}.
+
+Vous allez ouvrir une fenêtre de dialogue pour le nom du fichier de
+sortie. Cette feuille peut ensuite être inclue dans un document en
+utilisant la commande : \begin{verbatim} \include{inputfile} \end{verbatim}
+
+
+\subsubsection*{Bookmarks KDE }
+
+\vym va écraser le fichier des bookmarks KDE puis tenter de le notifier
+à Konqueror en fonctionnement puis essayera de le notifier via DCOP
+que le fichier a changé. \emph{\vym ne crée pas de sauvegarde ! } Accessible
+par le menu : \og File \ra Export \ra KDE Bookmarks \fg{}.
+
+
+\subsubsection*{XHTML (Webpages)}
+
+C'est le format à utiliser si vous voulez créer une page web. Pour
+voir un exemple visitez la page d'entrée de \vym : \href{http://www.InSilmaril.de/vym}{www.InSilmaril.de/vym}
+
+Quelque explications sur son fonctionnement : avant d'exporter une
+carte en XHTML, elle est d'abord écrite en XML dans un répertoire
+(voir \ref{xmlexport}). Puis le programme externe \texttt{xsltproc}%
+\footnote{Sur la distribution SUSE Linux et quelques autres distributions \texttt{xsltproc}
+est installé par défaut.%
+} va être appelé pour traiter le fichier XML et générer le code HTML.
+Un dialogue permet à l'utilisateur de positionner diverses options
+:
+
+\begin{description}
+\item [{Include}] \textbf{image:} si positionné, \vym va créer une une
+image de la carte au début de la sortie HTML. Cliquer sur une branche
+va faire sauter à la section correspondante de la sortie.
+\item [{Colored}] \textbf{headings:} Si positionné à OUI, \vym va mettre
+les titres en couleur dans la partie texte avec les mêmes couleurs
+que celles utilisées dans la carte \vym. 
+\item [{Show}] \textbf{warnings:} Si positionné, \vym va demander avant
+d'écrire les données.
+\item [{Show}] \textbf{output:} Cela est utilisé principalement pour le
+dégogage. On va voir comment s'effectue le traitement du fichier XML
+en appelant le programme externe \texttt{xsltproc}. 
+\end{description}
+En complément les chemins des feuilles de styles CSS et XSL peuvent
+être indiqués. Par défaut sur SUSE~Linux elles sont dans : \texttt{/usr/share/vym/styles}%
+\footnote{N.dT. idem pour la version 1.10.0 sur Debian Etch%
+}.
+
+
+\subsubsection*{XML}
+
+\label{xmlexport} La carte est écrite dans un répertoire à la fois
+comme une image et comme un fichier XML. Le répertoire est choisi
+dans une fenêtre de dialogue. Si le répertoire n'est pas vide, vous
+allez être averti et on va vous prévenir que vous risquez d'écraser
+des fichiers.
+
+Il est possible d'exporter des cartes différentes dans le même répertoire.
+Chaque fichier généré va avoir le nom de la carte comme préfixe, par
+exemple e.g. \texttt{todo.vym} devient \texttt{todo.xml}, \texttt{todo.png},
+\texttt{todo-image-1.png} et ainsi de suite. C'est utile si par exemple
+un site web comporte des cartes liées qui doivent être rangées dans
+le même répertoire.
+
+
+\subsubsection*{Export d'une partie d'une carte}
+
+Sélectionnez la branche que vous voulez exporter avec ses fils, puis
+ouvrez le menu contextuel et choisissez {\em Save Selection}. Cela
+va créer un fichier avec le suffixe \texttt{.vyp}, qui est une abréviation
+de \og vym part \fg{}.
+
+
+\section{Édition avancée}
+
+
+\subsection{Propriétés d'un objet}
+
+Pour chacune des branches vous pouvez ouvrir une fenêtre auxiliaire
+(voir \ref{satellite}): la {\em property window%
+\footnote{fenêtre des propriétés%
+}}: 
+
+\begin{center}
+\includegraphics[width=8cm]{images/propwindow} \label{propwindow} 
+\par\end{center}
+
+%FIXME create screenshot
+%FIXME explain the tabs
+
+
+\begin{itemize}
+\item trame,
+\item lien (voir \ref{hideunselected}) 
+\item Layout (voir \ref{incimg}) 
+\end{itemize}
+
+\subsection{Revoir l'histoire : défaire et refaire %
+\footnote{Undo and Redo%
+}}
+
+\vym garde la trace de tous les changements faits à une carte. Le
+nombre de modifications qui peuvent être défaites est de 75 par défaut.
+L'historique complet peut être vu dans la {\em fenêtre d'historique}:
+\maximage{images/historywindow.png} \label{historywindow} un simple
+pas en arrière peut être défait ou refait en tapant \key{CTRL-Z}
+ou \key{CTRL-Y}, ou en utilisant les boutons de la barre de menu
+ou la {\em fenêtre d'historique}. Dans la {\em fenêtre d'historique},
+vous pouvez cliquer sur une ligne pour détailler toutes les actions
+faites jusqu'à ce moment, ou refaire toutes les actions en cliquant
+sur la dernière ligne.
+
+\hint{ Vous pouvez \og coller à partir du passé \fg{} : aller en
+arrière dans le temps avec la touche \key{CTRL-Z}, puis copier dans
+le tampon en tapant \key{CTRL-C}.
+
+Maintenant pour refaire toutes les actions, par exemple en tapant
+sur la touche \key{CTRL-Y} ou en cliquant sur la dernière action
+dans la {\em fenêtre d'historique}. Maintenant collez à partir
+du passé avec la touche \key{CTRL-V}. }
+
+
+\subsection{Macros}
+
+\label{macros} Les macros ont été ajoutées à \vym à la version~1.9.0.
+Jusqu'à présent elles sont provisoires, elles vont peut-être être
+remplacées par un langage de script plus performant (les commandes
+seront approximativement les mêmes).
+
+Chaque touche de fonction (touches \key{F1} à \key{F12}) contient
+une macro, qui est exécutée sur la sélection courante lorsque la touche
+est enfoncée. Les macros par défaut changent la couleur d'un sous
+arbre ou positionnent la trame d'une branche : 
+
+\begin{center}
+\includegraphics[width=8cm]{images/macros_fr} 
+\par\end{center}
+
+Chaque macro est un script \vym qui est exécuté lorsque la touche
+correspondante est appuyée. L'emplacement par défaut des macros peut
+être changé dans le \og Settings menu \fg{}. Plus d'informations
+sur l'utilisation des scripts dans \vym peut être trouvé en appendice~\ref{scripts}.
+
+
+\subsection{Signets}
+
+\label{bookmarks} 
+
+
+\subsubsection*{Ouvrir des nouveaux signets au lieu de nouvelles fenêtres}
+
+Si vous utilisez \texttt{konqueror} comme navigateur, \vym peut se
+rappeler de la session de \texttt{konqueror }qui était ouverte en
+premier par \vym. Vous pouvez appuyer sur les touches \key{Ctrl}
+et cliquer pour ouvrir le lien dans un nouvel onglet.
+
+\vym peut aussi ouvrir une nouvel onglet dans Mozilla ou Firefox
+en utilisant la commande à distance %
+\footnote{(remote command) à \href{http://www.mozilla.org/unix/remote.html}{http://www.mozilla.org/unix/remote.html}%
+} de ces navigateurs.
+
+
+\subsubsection*{Copier/coller}
+
+Si vous voulez mettre vos bookmarks dans une carte, sélectionnez une
+branche où vous voulez ajouter le bookmark, puis collez simplement
+l'URL dans la carte à partir de votre navigateur. Vous pouvez aussi
+utiliser un titre existant comme URL : cliquez à droite sur la branche
+et sélectionnez : \og Use heading for URL \fg{}.
+
+
+\subsubsection*{Accès direct à la liste des bookmarks d'un navigateur}
+
+Voir les sections \ref{import} et \ref{export} sur les filtres d'import-export.
+
+
+\subsubsection*{URL spéciales}
+
+\vym peut convertir un titre d'une branche existante en URL. Cela
+marche pour Bugentries dans le système Novell Bugtracking : ouvrez
+le menu de contexte d'une branche (en cliquant à droite) et sélectionnez
+: \og Create URL to Bugzilla \fg{}.
+
+L'URL sera créé à partir du titre.
+
+
+\subsection{Associer des images à une branche}
+
+\label{incimg} La configuration par défaut d'une image est de flotter
+\og librement \fg{}. Les images peuvent être positionnées n'importe
+où dans le canevas cachant la partie correspondante de la carte.
+
+La solution est de l'insérer ou de l'inclure \og dans \fg{} une
+branche. Cela est fait au travers de la fenêtre de propriétés (voir
+\ref{propwindow}) par les menus : 
+
+\begin{itemize}
+\item include images horizontally 
+\item include images vertically 
+\end{itemize}
+L'images est positionnée relativement à sa branche mère, mais le titre
+et la bordure s'adapte à l'image flottante, voir en dessous : \maximage{images/includeImages_fr.png}
+
+
+\subsection{Mode modificateur}
+
+Les modificateurs sont par exemple la touche \key{Shift}, \key{Ctrl}
+ou \key{Alt}. Quand on appuie dessus pendant une action de la souris,
+\vym va effectuer une action différente de celle habituelle.
+
+%\key{Ctrl} or \key{Alt}is pressed while releasing the branch, it will be
+%added above/below the target, not as child of the target.
+
+
+Sans appuyer sur un modificateur, le premier clic sur la souris sélectionne
+une branche. Le comportement avec le modificateur \key{Ctrl} est
+sujet à à plusieurs options, qui peuvent être positionnées dans la
+barre de menu :
+
+\begin{center}
+\includegraphics[width=3cm]{images/modmodes} 
+\par\end{center}
+
+Le mode par défaut est de copier la couleur de la branche cliquée
+vers la branche sélectionnée. La figure au-dessus montre la barre
+de menu avec le modificateur par défaut sélectionné. Le deuxième modificateur
+vous permet de couper une branche complète avec un simple clic. Le
+troisième modificateur vous permet de créer des liens entre branches
+appelés {\em xLinks}. Cela est expliqué dans la section suivante
+\ref{xlinks}.
+
+
+\subsection{Cacher les liens d'objets non sélectionnés}
+
+\label{hidelink} Il est pratique de positionner librement une branche,
+comme une branche principale ou une image. Cela est possible pour
+toutes les branches, vous pouvez utiliser une branche principale et
+cacher ses liens de connexion au centre de la carte ou cacher le lien
+entre une branche fils et son parent. C'est utile par exemple pour
+les légendes ou pour une collection de liens \vym  pointant vers
+d'autres cartes : 
+
+\begin{center}
+\includegraphics[width=9cm]{images/hiddenlink_fr} 
+\par\end{center}
+
+Pour cacher le lien entre la branche et son parent ouvrir la fenêtre
+de propriétés et sélectionner \og Hide link if object is not selected \fg{}
+sur l'onglet \og Link \fg{}.
+
+
+\subsection{XLinks}
+
+\label{xlinks} Jusqu'à maintenant les données dans la carte \vym
+étaient sous forme d'arbre. En utilisant les xLinks vous pouvez lier
+une branche à n'importe quelle autre, comme en attachant une corde
+entre deux branches dans un vrai arbre. C'est très pratique dans des
+cartes compliquées, où vous avez des renvois qui ne peuvent être affichés
+dans la même zone visible de la fenêtre du {\em mapeditor}. La
+carte suivante tient sur un écran, mais montre comment les données
+peuvent être reliées. Dans le graphisme il y a un lien à partir d'une
+tâche (prepare a presentation) à l'information générale : \maximage{images/xlink_fr.png}
+Notez qu'un xLink qui pointe sur une branche non visible (parce qu'elle
+est \og enroulée \fg{}), est montrée par une flèche horizontale.
+Regardez la branche \lq Tuesday\rq dans la capture d'écran ci-dessus.
+
+
+\subsubsection*{Créer un xLink}
+
+Choisir le type de lien à partir de la barre de modifier (en cliquant
+l'icône de la barre de menu ou en tapant \key{L}). Sélectionner
+la branche d'où le xLink doit partir. Appuyer sur le modifier \key{Ctrl}
+puis cliquez la branche et amenez le curseur de la souris où le lien
+doit se terminer. Un lien est tracé qui suit le pointeur de la souris.
+Le lien devient permanent quand vous relâchez le bouton de la souris
+.
+
+
+\subsubsection*{Modifier ou effacer un xLink}
+
+Sélectionner une extrémité du xLink. Ouvrir le menu contextuel et
+sélectionnez \og  Edit xLink \fg{}. Un sous menu contenant tous
+les xLinks de la branche apparaît. Sélectionnez en un et la fenêtre
+de dialogue xLink dialogue s'ouvre, où vous pouvez sélectionner la
+couleur, la largeur et aussi effacer le xLink.
+
+
+\subsubsection*{Suivre un xLink}
+
+Dans une carte \vym compliquée il est commode de sauter à l'autre
+extrémité d'un xLink. Vous pouvez le faire en ouvrant le menu contextuel
+et en cliquant \og  Goto xLink \fg{} puis en sélectionnant le xLink
+qui vous intéresse.
+
+
+\subsection{Ajouter et supprimer des branches}
+
+Le menu contextuel d'une branche montre quelques moyens supplémentaires
+pour ajouter ou supprimer des données. Vous pouvez supprimer une branche
+tout en gardant ses enfants. Les enfants sont alors liés au parent
+de la branche supprimée (son \og grand-parent \fg{}). Des branches
+identiques peuvent être ajoutées à des cartes existantes. Pour les
+raccourcis clavier regarder également dans le menu contextuel.
+
+
+\subsection{Ajouter une carte complète ou une partie}
+
+Sélectionner la branche où vous voulez ajouter une carte sauvée précédemment
+(\texttt{.vym}) ou une partie de carte (\texttt{.vyp}), puis ouvrez
+le menu contextuel et choisissez {\em Add \ra Add Map (Insert)}.
+Pour l'importation vous pouvez choisir entre {\em Add Map (Insert)}
+ou {\em Add Map (Replace)}: les données importées vont être ajoutées
+à la branche sélectionnée.
+
+
+\section{\vym sur Mac OS X}
+
+
+\subsection{Vue d'ensemble}
+
+Il y a deux moyens de faire fonctionner \vym sur les Macs : 
+
+
+\subsubsection*{Qt Mac Edition:}
+
+\vym a là une l'apparence bien connue de Mac. \vym est disponible
+comme paquet d'application Mac OS X dans une image disque (\texttt{vym.dmg}).
+Il a été compilé et testé sur Mac~OS~10.4. Ce paquet inclut les
+librairies Qt de Trolltech.
+
+
+\subsubsection*{version X11 }
+
+\vym peut aussi être lancé dans sa version Linux, mais les menus
+et l'utilisation seront ceux de Linux c'est à dire que les barres
+de menu sont différentes.
+
+
+\subsection{Menu de contexte et touches spéciales}
+
+La majorité des Macs n'a malheureusement qu'un bouton de souris. Pour
+pour voir le menu contextuel qui normalement est ouvert avec un clic
+droit, vous devez cliquer en appuyant sur la touche \key{command}.
+
+Surtout sur les portables quelques touches utilisées sur les PC sont
+manquantes. La version de \vym avec QT-Mac a ses propres raccourcis
+clavier. Pour les trouver regardez les entrées des menus, les raccourcis
+visibles à côté de cette entrée. Les boutons de la barre de menu peuvent
+aussi avoir des raccourcis, positionnez le curseur de la souris sur
+un bouton et la fenêtre d'aide apparaîtra.
+
+
+\subsection{Voir des liens externes}
+
+\vym sur Mac utilise le système d'appel \texttt{/usr/bin/open} pour
+voir les liens. Mac~OS détermine automatiquement si le lien est un
+pdf ou une page web et ouvre le bon visionneur.
+
+\appendix \newpage{}
+
+
+\section{\label{settings}\vym : processus d'initialisation et de configuration}
+
+
+\subsection{Menu des préférences (Settings menu)}
+
+Le {\em Menu des préférences } vous permet de configurer \vym
+suivant vos besoins :
+
+
+\subsubsection*{Choisir l'application pour ouvrir les fichiers PDF }
+
+Choisir un visionneur PDF installé sur votre système.
+
+
+\subsubsection*{Choisir le navigateur (vers les liens externes)}
+
+Choisissez votre navigateur favori.
+
+
+\subsubsection*{Positionner le chemin pour les macros}
+
+Le chemin par défaut pour exécuter les macros correspondantes quand
+vous appuyez sur une des touches de fonction. Chaque touche correspond
+à un fichier (\texttt{macro-1.vys..macro12.vys}) dans le chemin de
+recherche.
+
+
+\subsubsection*{Niveaux défaire/refaire}
+
+Fixer le nombre de défaire/refaire. Par défaut :75.
+
+
+\subsubsection*{Sauvegarde automatique et temps entre sauvegardes}
+
+La sauvegarde automatique des cartes peut être désactivée. Le temps
+entre sauvegardes est indiqué en secondes.
+
+
+\subsubsection*{Éditer la branche après l'avoir créée}
+
+Si positionné, le titre de la nouvelle branche va être édité immédiatement
+après avoir été créé.
+
+
+\subsubsection*{Sélectionner la branche après l'avoir créé}
+
+Si positionné, la nouvelle branche va être sélectionnée après avoir
+été créée. Quand vous réfléchissez sur un mot donné, vous ne voulez
+pas aller dans les détails, mais garder l'attention sur ce mot. Le
+choix par défaut est de {\em ne pas}  sélectionner la nouvelle branche
+créée.
+
+
+\subsubsection*{Sélectionner la branche existante}
+
+Si positionné et que vous commencez à éditer le titre de la branche,
+le texte du titre va être sélectionné. Pratique pour copier/coller
+dans d'autres applications.
+
+
+\subsubsection*{Touche effacement}
+
+Si positionné, la touche \key{Delete} est validée pour détruire
+les objets. Attention aux confusions avec la touche \key{Insert}sur
+les claviers de PC.
+
+
+\subsubsection*{Indicateurs exclusif}
+
+Si positionné quelques indicateurs peuvent être exclusifs, par exemple
+les émoticons.
+
+
+\subsubsection*{Autoriser l'indicateur caché}
+
+Si positionné, chaque branche qui a l'indicateur caché associé (voir
+\ref{hideexport}) ne sera pas présente dans les exports.
+
+
+\subsection{Fichier de configuration}
+
+Au démarrage, \vym va regarder un fichier de configuration spécifique
+à l'utilisateur contenant ses réglages personnels comme la position
+des fenêtres, les menus de travail, etc. Si ce fichier n'existe pas,
+il sera créé. Le fichier est localisé dans la racine du répertoire
+de l'utilisateur. Sa position exacte dépend de la plate-forme :
+
+\begin{center}
+\begin{tabular}{cl}
+\textbf{Plate-forme}  & \textbf{Fichier de configuration }\tabularnewline
+\hline 
+Linux  & \texttt{$\sim$/.config/InSilmaril/vym.conf}  \tabularnewline
+Mac OS X  & \texttt{/Users/NAME/Library/Preferences/com.insilmaril.vym.plist}
+ \tabularnewline
+\end{tabular}
+\par\end{center}
+
+Le fichier peut être édité manuellement ou sur Mac~OS~X avec le
+Property List Editor (installé avec xtools).
+
+
+\subsection{Chemin vers les ressources}
+
+\vym va essayer de trouver ses ressources (images, feuilles de style,
+filtres, etc) aux endroits suivants :
+
+\begin{enumerate}
+\item chemin donné par la variable d'environnement\texttt{ VYMHOME}. 
+\item Si appelé avec l'option {\em local}  (voir \ref{options} en dessous),
+\vym va chercher ses ressource dans le répertoire courant.
+\item \texttt{/usr/share/vym} 
+\item \texttt{/usr/local/share/vym} 
+\end{enumerate}
+
+\subsection{Options de la ligne de commande}
+
+\label{options} \vym a les options suivantes lors de l'appel en
+ligne de commande%
+\footnote{chaque option doit être précédé du \og - \fg{} classique (N.d.T.)%
+} :
+
+\begin{center}
+\begin{tabular}{cccp{8cm}}
+ &  &  & \tabularnewline
+\textbf{Option } & \textbf{Résumé } & \textbf{Argument } & \textbf{Description }\tabularnewline
+\hline 
+v  & version  &  & indiquer la version et le nom de code de \vym\tabularnewline
+l  & local  &  & Utiliser les chemins locaux pour les feuilles de style,les traductions,
+les icônes, etc.
+
+Pratique pour les tests\tabularnewline
+h  & aide  &  & montrer l'aide\tabularnewline
+r  & lancement  & fichier  & charger et lancer un script\tabularnewline
+q  & quitter  &  & quitter après le démarrage. Utile pour les benchmarks.\tabularnewline
+\end{tabular}
+\par\end{center}
+
+Vous pouvez aussi donner plusieurs noms de fichiers dans la ligne
+de commande pour laisser \vym ouvrir plusieurs cartes à la fois.
+
+
+\section{Scripts}
+
+\label{scripts} %FIXME
+
+
+TODO: désolé cette section du manuel de \vym est provisoire.
+
+
+\subsection{Exemple de scripts}
+
+
+\subsubsection{Exporter un jeu de cartes}
+
+\begin{verbatim} \# Simple vym script to export images of various
+maps simultanously exportImage (); \end{verbatim} Le script au-dessus
+peut être utilisé pour exporter automatiquement toutes les cartes
+d'un répertoire. Si le script a pour nom \texttt{export-image.vys},
+appeler \vym avec\begin{verbatim} vym --quit --run export-image.vys
+{*}.vym \end{verbatim}
+
+
+\section{Aider \vym}
+
+J'ai écrit personnellement 98\% du code moi-même. Aucune surprise
+: \vym correspond exactement à mes besoins. Néanmoins j'encourage
+tous les utilisateurs de \vym à contribuer. Peut-être pas seulement
+avec des demandes d'extensions, mais aussi avec du code, de nouveaux
+filtres import/export, des traductions, etc. Dans cet appendice, je
+vais essayer de montrer combien il est facile de développer avec \vym.
+J'attends vraiment de vos nouvelles au sujet de vos futures extensions
+!
+
+
+\section{Obtenir de l'aide}
+
+
+\subsection*{Foire Aux Questions}
+
+Pointer la FAQ disponible sur le site de \vym (en anglais) :
+
+\begin{center}
+\href{http://www.InSilmaril.de/vym/faq.html}{http://www.InSilmaril.de/vym/faq.html} 
+\par\end{center}
+
+
+\subsection*{Mailinglists}
+
+Il y a deux mailinglists: 
+
+\begin{itemize}
+\item \texttt{vym-forum} est le forum des utilisateurs \vym pour discuter
+de points divers, 
+\item \texttt{vym-devel} est fait pour les gens qui veulent contribuer à
+\vym. 
+\end{itemize}
+Vous pouvez voir les archives et vous inscrire à :
+
+\begin{center}
+\href{https://sourceforge.net/mail/?group_id=127802}{https://sourceforge.net/mail/?group\_id=127802} 
+\par\end{center}
+
+
+\subsection*{Contacter l'auteur}
+
+\label{author} En premier essayer les mailinglists. Pour tout autre
+problème contacter l'auteur Uwe Drechsel à :
+
+\begin{center}
+\href{mailto:vym@InSilmaril.de}{vym@InSilmaril.de} 
+\par\end{center}
+
+
+\section{Comment reporter un bug}
+
+Quoique Sourceforge ait son propre système de rapport de bugs, je
+préfère que vous me contactiez directement (voir \ref{author}) ou
+encore mieux : vous pouvez mettre un rapport de bug dans Bugzilla,
+le système de rapport de bugs de openSUSE : 
+
+\begin{center}
+\href{http://en.opensuse.org/Submit_a_bug}{http://en.opensuse.org/Submit\_a\_bug} 
+\par\end{center}
+
+Je construis \vym régulièrement pour openSUSE, vous pouvez faire
+un rapport pour une autre version , même si vous utilisez un autre
+système d'exploitation. N'oubliez pas de me dire lequel vous utilisez
+:
+
+\begin{itemize}
+\item les manipulations exactes pour reproduire le bug,
+\item la version et la date de construction de \vym (voir l'aide Help \ra
+About \vym) 
+\item le matériel et le système d'exploitation
+\end{itemize}
+
+\section{Compiler à partir des sources }
+
+
+\subsection{Obtenir les sources}
+
+\label{getsources} Vous pouvez trouver la dernière version de \vym
+sur le site du projet :
+
+\begin{center}
+\href{https://sourceforge.net/projects/vym/}{https://sourceforge.net/projects/vym/} 
+\par\end{center}
+
+Là vous pouvez les extraire à partir à partir du dépot des source
+(CVS):\\
+
+
+\begin{verbatim} cvs -d:pserver:anonymous@cvs.sf.net:/cvsroot/vym
+checkout code \end{verbatim}
+
+
+\subsection{le toolkit Qt }
+
+Qt est une trousse à outils C++ multiplateforme pour les GUI%
+\footnote{GUI Graphical User Interface interface graphique pour l'utilisateur
+(N.d.T.)%
+} et le développent d'applications. Il fournit une portabilité avec
+le même source sur MS~Windows, Mac~OS~X, Linux et toutes les versions
+principales commerciales d'Unix. Qt est aussi disponible pour les
+systèmes embarqués. Qt est un produit de la société Trolltech. Pour
+plus d'informations voir :
+
+\begin{center}
+\href{http://www.trolltech.com/qt/}{www.trolltech.com/qt} 
+\par\end{center}
+
+
+\subsection{Compiler \vym }
+
+Assurez vous que vous avez installé l'environnement QT proprement,
+voir la documentation pour les détails. Vous devez avoir la commande
+Qt\texttt{ qmake} dans votre variable d'environnement \texttt{PATH},
+pusi lancez \begin{verbatim} \$ qmake $make$ make install \end{verbatim}
+La dernière commande \texttt{make install} a besoin des droits root.
+Elle n'est pas nécessaire si vous voulez juste tester \vym.
+
+%\subsubsection*{Compiling \vym on Macs}
+%FIXME
+
+
+
+\subsection{format des fichiers de \vym }
+
+\label{fileformat}Les cartes \vym ont un suffixe \texttt{\og .vym} \fg{}
+et représentent une archive compressée des données. Si vous voulez
+avoir une vue plus précise de la structure des données dans la carte
+\og mapname.vym \fg{}, décompressez la en lançant la commande :
+\begin{verbatim} \$ unzip mapname.vym \end{verbatim} Cela va créer
+les répertoires \texttt{images} et\texttt{ flags} dans votre répertoire
+courant et aussi la carte elle-même, normalement appelée \texttt{mapname.xml}.
+La structure XML de \vym s'explique d'elle-même, jetez un \oe il
+sur le fichier \texttt{mapname.xml}.
+
+Ce fichier XML peut être chargé directement dans \vym, il n'a pas
+besoin d'être compressé. Si vous voulez compresser toutes les données
+vous-même faites \begin{verbatim} \$ zip -r mapname.vym . \end{verbatim}
+pour compresser toutes vos données dans le répertoire courant.
+
+
+\subsection{Nouvelles fonctionnalités}
+
+Il y a beaucoup de nouvelles fonctionnalités qui sont installées dans
+\vym. Avec \vym vous avez reçu un répertoire avec un bon nombre
+d'exemples de cartes. Vous les trouverez en cliquant Help \ra Open~vym~example~maps.
+Vous y trouverez la carte \texttt{vym-projectplan.vym}. Elle liste
+une foule de choses qui seront faites dans le futur. Si vous avez
+d'autres idées, contactez l'équipe de développement à \texttt{vym-devel@lists.sourceforge.net}.
+
+
+\subsection{support pour de nouvelles langues}
+
+Pour pouvoir ajouter une nouvelle langue à \vym, vous devez disposer
+des sources (voir \ref{getsources}) et de l'installation de Trolltechs
+QT. une partie de QT sont des outils de développement, et particulièrement
+l'outil de traduction \og Linguist \fg{} qui est nécessaire.
+
+Dans quelques distributions Linux, les outils de développement sont
+un paquetage spécial, par exemple sur SUSE LINUX vous devez avoir
+installé : \begin{verbatim} libqt4-devel.rpm libqt4-devel-doc.rpm
+libqt4-devel-tools.rpm \end{verbatim} Si vous n'avez pas QT de base
+sur votre système, vous pouvez l'obtenir à : \href{http://www.trolltech.com}{http://www.trolltech.com}
+Une fois que vous êtes capable de compiler, vous pouvez traduire le
+texte dans \vym  lui-même en faisant les actions suivantes :
+
+\begin{itemize}
+\item supposons que nous voulons traduire une nouvelle langue \og NEW \fg{}
+au lieu de \og de \fg{} en allemand ou \og en \fg{} en anglais,
+\item copier le fichier \texttt{lang/vym\_en.ts} to l\texttt{ang/vym\_NEW.ts}
+(Le code lui-même contient la version anglaise),
+\item ajouter \texttt{lang/vym\_NEW.ts} dans la section TRANSLATIONS de
+vym.pro,
+\item lancer Linguist sur \texttt{vym\_NEW.ts} et faire la traduction,
+\item lancer \texttt{lrelease} pour créer \texttt{vym\_NEW.qm.}
+\item faire un make install pour installer le nouveau \vym  et tester la
+traduction
+\end{itemize}
+Si vous vous sentez courageux, vous pouvez traduire le manuel. Il
+est écrit en \LaTeX{}, vous devez juste changer le fichier \texttt{/tex/vym.tex}.
+(Linguist et QT ne sont pas nécessaires, mais il est utile de savoir
+comment travailler avec \LaTeX{} et pdflatex pour créer le PDF.)
+
+S'il vous plaît envoyez moi la traduction que vous avez faite. Je
+peux aussi vous donner une accès de développeur au projet, si vous
+voulez fournir régulièrement des traductions.
+
+
+\subsection{Nouveaux filtres d'export/import }
+
+\vym supporte des types de filtres variés. Les données peuvent être
+écrites directement, insérées dans des patrons ou peuvent être écrites
+en données XML et  ensuite être travaillées par des transformations
+XSL.
+
+La plupart des fonctionnalités d'import-export est disponible dans
+les classes ImportBase, ExportBase et les classes dérivées. Le tout
+se trouve dans \texttt{les fichiers imports.h} et \texttt{exports.h}.
+
+
+\subsection*{import/export direct}
+
+Un exemple pour l'export direct est l'export XML. Cette méthode touche
+l'implémentation de pratiquement tous les objets de \vym, aussi autant
+que possible utilisez une transformation XSL à la place.
+
+Si vous voulez savoir comment cela est fait, commencez à regarder
+\texttt{MapEditor::saveToDir} in \texttt{mapeditor.cpp}.
+
+
+\subsection*{patrons}
+
+Les patrons ont été introduits pour exporter dans le format opendoc
+utilisé par Open~Office. Pendant que je lisais la spécification du
+format (plus de 500 pages),%
+\footnote{ \href{http://www.oasis-open.org/}{http://www.oasis-open.org/}%
+} j'avais le sentiment que je ne voulais pas écrire l'export à partir
+de rien. Cela serait trop difficile pour adapter les styles à vos
+propres besoins par exemple le canevas.
+
+En analysant un document Open~Office existant, je trouvais qu'il
+y avait un grand nombre d'informations redondantes dans une présentation
+standard, par exemple chaque Item d'une liste est contenu dans sa
+propre liste. À la fin j'en arrivai à un style de présentation par
+défaut, qui peut encore être simplifié, si j'ai du temps de libre
+\ldots{}
+
+Les patrons existants sont encore en évolution, avant de développer
+votre propre style contactez moi. De base les étapes suivantes sont
+nécessaires pour que vous construisiez votre propre style :
+
+\begin{enumerate}
+\item créer un exemple dans Open Office. Utilisez un titre, les noms de
+auteurs, les entêtes de page, etc que vous pourrez facilement piquer
+dans le fichier de sortie,
+\item décompressez le document Open Office dans un répertoire,
+\item le fichier principal est appelé\texttt{ content.xml}. Toutes les données
+sont sur une seule ligne. Vous pouvez exploser les marques XML en
+utilisant le script \texttt{scripts/niceXML}, qui fait partie de la
+distribution de \vym. 
+\item copiez la sortie de \texttt{niceXML} dans \texttt{content-template.xml}.
+\item en regardant dans le détail , vous trouverez nombre de définitions
+inutilisées, par exemple les styles. Vous pouvez les effacer ou simplement
+les ignorer.
+\item Essayez de trouver votre titre, le nom de auteurs. \vym va remplacer
+les chaînes suivantes lors de l'export :
+
+
+\begin{center}
+\begin{tabular}{lp{4cm}}
+\texttt{<!-{}- INSERT TITLE -{}->}  & titre de la carte \tabularnewline
+\texttt{<!-{}- INSERT AUTHOR-{}->}   & auteur\tabularnewline
+\texttt{<!-{}- INSERT COMMENT -{}->}  & commentaire\tabularnewline
+\texttt{<!-{}- INSERT PAGES-{}->}  & contenu de la carte \tabularnewline
+\end{tabular}
+\par\end{center}
+
+Le contenu lui-même est généré d'une manière similaire en insérant
+des listes dans \texttt{page-template}. Les remplacements suivants
+sont effectues :
+
+\begin{center}
+\begin{tabular}{lp{7cm}}
+\texttt{<!-{}- INSERT PAGE HEADING-{}->}  & entête de la page (branche principale ou fils, dépendant de l'utilisation
+des sections) \tabularnewline
+\texttt{<!-{}- INSERT LIST -{}->}   & tous les fils de la branche du dessus\tabularnewline
+\end{tabular}
+\par\end{center}
+
+\end{enumerate}
+Actuellement les images sont exportées et les notes vont apparaître
+comme du texte sans mise au format ni couleur.
+
+
+\subsection*{XSL Transformation}
+
+\vym utilise des transformations XSL pour l'exportation (par exemple
+en XHTML) et pour l'importation des données(par exemple les bookmarks
+KDE). Il faut écrire un peu de code pour fournir le GUI, le reste
+est fait en utilisant la feuille de style \texttt{.xsl} et en appelant
+le processeur \texttt{xsltproc, }qui fait partie de libxslun, la librairie
+C XSLT pour GNOME.
+\end{document}
diff --git a/texteditor.cpp b/texteditor.cpp
new file mode 100644 (file)
index 0000000..05b5684
--- /dev/null
@@ -0,0 +1,877 @@
+#include "texteditor.h"
+
+#include <iostream>
+#include <cstdlib>
+#include <typeinfo>
+
+#include "noteobj.h"
+#include "settings.h"
+
+extern int statusbarTime;
+extern Settings settings;
+
+extern QAction *actionViewToggleNoteEditor;
+
+extern QString iconPath;
+extern QString vymName;
+
+using namespace std;
+
+
+///////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////
+
+
+TextEditor::TextEditor()
+{
+   // printer = new QPrinter( QPrinter::HighResolution );
+       //printer->setPrinterName (settings.value("/mainwindow/printerName",printer->printerName()).toString());
+
+    e = new QTextEdit( this);
+    e->setFocus();
+       e->setTextFormat(Qt::RichText);         // default
+       e->setTabStopWidth (20);                // unit is pixel
+       e->setColor (Qt::black);
+       e->setAutoFillBackground (true);
+       connect (e, SIGNAL( textChanged() ), this, SLOT( editorChanged() ) );
+    setCentralWidget( e );
+    statusBar()->message( tr("Ready","Statusbar message"), statusbarTime);
+       setCaption(vymName +" - " +tr ("Note Editor","Window caption"));
+
+
+       connect(e, SIGNAL(currentCharFormatChanged(const QTextCharFormat &)),
+            this, SLOT(formatChanged(const QTextCharFormat &)));
+
+
+
+       // Toolbars
+       setupFileActions();
+       setupEditActions();
+       setupFormatActions();
+       setupSettingsActions();
+       
+       // Various states
+       blockChangedSignal=false;
+       setInactive();
+
+       // Load Settings
+       resize (settings.value ( "/satellite/noteeditor/geometry/size", QSize(450,600)).toSize());
+       move   (settings.value ( "/satellite/noteeditor/geometry/pos", QPoint (250,50)).toPoint());
+       
+       setShowWithMain (settings.value ( "/satellite/noteeditor/showWithMain",true).toBool());
+
+       varFont.fromString( settings.value
+               ("/satellite/noteeditor/fonts/varFont",
+               "Nimbus Sans l,14,-1,5,48,0,0,0,0,0").toString() 
+       );
+       fixedFont.fromString (settings.value(
+               "/satellite/noteeditor/fonts/fixedFont",
+               "Courier,14,-1,5,48,0,0,0,1,0").toString() 
+       );
+       QString s=settings.value ("/satellite/noteeditor/fonts/fonthintDefault","variable").toString();
+       if (s == "fixed")
+       {       
+               actionSettingsFonthintDefault->setOn (true);
+               e->setCurrentFont (fixedFont);
+       } else  
+       {
+               actionSettingsFonthintDefault->setOn (false);
+               e->setCurrentFont (varFont);
+       }       
+       filenameHint="";
+
+       // Restore position of toolbars
+       restoreState (settings.value("/satellite/noteeditor/state",0).toByteArray());
+
+       // Save settings in vymrc
+       //settings.setValue("/mainwindow/printerName",printer->printerName());
+}
+
+
+TextEditor::~TextEditor()
+{
+    //if (printer) delete printer;
+       // Save Settings
+       settings.setValue( "/satellite/noteeditor/geometry/size", size() );
+       settings.setValue( "/satellite/noteeditor/geometry/pos", pos() );
+       settings.setValue ("/satellite/noteeditor/state",saveState(0));
+       
+       settings.setValue( "/satellite/noteeditor/showWithMain",showwithmain);
+
+       QString s;
+       if (actionSettingsFonthintDefault->isOn() )
+               s="fixed";
+       else    
+               s="variable";
+       settings.setValue( "/satellite/noteeditor/fonts/fonthintDefault",s );
+       settings.setValue("/satellite/noteeditor/fonts/varFont", varFont.toString() );
+       settings.setValue("/satellite/noteeditor/fonts/fixedFont", fixedFont.toString() );
+
+
+}
+
+bool TextEditor::isEmpty()
+{
+       if (e->toPlainText().length()>0)
+               return false;
+       else
+               return true;
+}
+
+void TextEditor::setShowWithMain(bool v)
+{
+       showwithmain=v;
+}
+
+bool TextEditor::showWithMain()
+{
+       return showwithmain;
+}
+
+
+void TextEditor::setFontHint (const QString &fh)
+{
+       if (fh=="fixed")
+               actionFormatUseFixedFont->setOn (true);
+       else
+               actionFormatUseFixedFont->setOn (false);
+}
+
+
+QString TextEditor::getFontHint()
+{
+       if (actionFormatUseFixedFont->isOn())
+               return "fixed";
+       else    
+               return "var";
+}
+
+QString TextEditor::getFontHintDefault()
+{
+       if (actionSettingsFonthintDefault->isOn())
+               return "fixed";
+       else    
+               return "var";
+}
+
+void TextEditor::setFilename(const QString &fn)
+{
+       if (state==filledEditor)
+               if (fn.isEmpty() )
+               {
+                       filename="";
+                       statusBar()->message( tr("No filename available for this note.","Statusbar message"), statusbarTime );
+               }       
+               else
+               {
+                       filename=fn;
+                       statusBar()->message( tr(QString( "Current filename is %1" ).arg( filename ),"Statusbar message"), statusbarTime );
+               }       
+}
+
+QString TextEditor::getFilename()
+{
+       return filename;
+}
+
+void TextEditor::setFilenameHint(const QString &fnh)
+{
+       filenameHint=fnh;
+}
+
+QString TextEditor::getFilenameHint()
+{
+       return filenameHint;
+}
+
+bool TextEditor::findText(const QString &t, const QTextDocument::FindFlags &flags)
+{
+       if (e->find (t,flags))
+               return true;
+       else    
+               return false;
+}
+
+void TextEditor::setupFileActions()
+{
+    QToolBar *tb = addToolBar ( tr("Note Actions") );
+       tb->setObjectName ("noteEditorFileActions");
+    QMenu *fileMenu = menuBar()->addMenu( tr( "&Note","Menubar" ));
+
+    QAction *a;
+    a = new QAction( QPixmap( iconPath+"fileopen.png"), tr( "&Import..." ),this);
+       a->setStatusTip (tr( "Import","Status tip for Note menu" ) );
+       a->setShortcut( Qt::CTRL + Qt::Key_O );
+    connect( a, SIGNAL( activated() ), this, SLOT( textLoad() ) );
+       tb->addAction (a);
+       fileMenu->addAction (a);
+       actionFileLoad=a;
+
+    fileMenu->addSeparator();
+    a = new QAction( QPixmap(iconPath+"filesave.png" ), tr( "&Export..." ),this);
+       a->setStatusTip (tr( "Export Note (HTML)","Status tip for Note menu" ) );
+       a->setShortcut( Qt::CTRL + Qt::Key_S );
+    connect( a, SIGNAL( activated() ), this, SLOT( textSave() ) );
+       tb->addAction (a);
+       fileMenu->addAction (a);
+       actionFileSave=a;
+       
+    a = new QAction(  QPixmap(), tr( "Export &As... (HTML)" ), this);
+       a->setStatusTip (tr( "Export Note As (HTML) ","Status tip for Note Menu"  ));
+    connect( a, SIGNAL( activated() ), this, SLOT( textSaveAs() ) );
+       fileMenu->addAction (a);
+       actionFileSaveAs=a;
+
+    a = new QAction(QPixmap(), tr( "Export &As...(ASCII)" ), this);
+       a->setStatusTip ( tr( "Export Note As (ASCII) ","Status tip for note menu" ) );
+       a->setShortcut(Qt::ALT + Qt::Key_X );
+    connect( a, SIGNAL( activated() ), this, SLOT( textExportAsASCII() ) );
+       fileMenu->addAction (a);
+       actionFileSaveAs=a;
+/*
+    fileMenu->addSeparator();
+    
+    a = new QAction( QPixmap(iconPath+"fileprint.png" ), tr( "&Print..." ),this);
+       a->setStatusTip (tr( "Print Note","Status tip for note menu" ) );
+       a->setShortcut( Qt::CTRL + Qt::Key_P );
+    connect( a, SIGNAL( activated() ), this, SLOT( textPrint() ) );
+       tb->addAction (a);
+       fileMenu->addAction (a);
+       actionFilePrint=a;
+*/
+}
+
+void TextEditor::setupEditActions()
+{
+    QToolBar *tb = addToolBar ( tr( "Edit Actions" ));
+       tb->setObjectName ("noteEditorEditActions");
+    QMenu *editMenu = menuBar()->addMenu ( tr( "&Edit" ));
+
+    QAction *a;
+    a = new QAction(QPixmap(iconPath+"undo.png"), tr( "&Undo" ), this );
+       a->setStatusTip ( tr( "Undo","Status tip for note menu" ) );
+       a->setShortcut(Qt::CTRL + Qt::Key_Z );
+    connect( a, SIGNAL( activated() ), e, SLOT( undo() ) );
+       editMenu->addAction (a);
+       tb->addAction (a);
+       actionEditUndo=a;
+       
+    a = new QAction(QPixmap(iconPath+"redo.png" ), tr( "&Redo" ),this); 
+       a->setStatusTip ( tr( "Redo","Status tip for note menu" ) );
+       a->setShortcut( Qt::CTRL + Qt::Key_Y );
+    connect( a, SIGNAL( activated() ), e, SLOT( redo() ) );
+       editMenu->addAction (a);
+       tb->addAction (a);
+       actionEditRedo=a;
+
+    editMenu->addSeparator();
+    a = new QAction(QPixmap(), tr( "Select and copy &all" ),this); 
+       a->setStatusTip ( tr( "Select and copy all","Status tip for note menu" ) );
+       a->setShortcut( Qt::CTRL + Qt::Key_A );
+    connect( a, SIGNAL( activated() ), this, SLOT( editCopyAll() ) );
+       editMenu->addAction (a);
+
+    editMenu->addSeparator();
+    a = new QAction(QPixmap(iconPath+"editcopy.png" ), tr( "&Copy" ),this);
+       a->setStatusTip ( tr( "Copy","Status tip for note menu" ) );
+       a->setShortcut( Qt::CTRL + Qt::Key_C );
+    connect( a, SIGNAL( activated() ), e, SLOT( copy() ) );
+       editMenu->addAction (a);
+       tb->addAction (a);
+       actionEditCopy=a;
+       
+    a = new QAction(QPixmap(iconPath+"editcut.png" ), tr( "Cu&t" ),this);
+       a->setStatusTip ( tr( "Cut","Status tip for note menu" ) );
+       a->setShortcut( Qt::CTRL + Qt::Key_X );
+    connect( a, SIGNAL( activated() ), e, SLOT( cut() ) );
+       editMenu->addAction (a);
+       tb->addAction (a);
+       actionEditCut=a;
+
+    a = new QAction(QPixmap(iconPath+"editpaste.png" ), tr( "&Paste" ),this);
+       a->setStatusTip ( tr( "Paste","Status tip for note menu" ) );
+       a->setShortcut( Qt::CTRL + Qt::Key_V );
+    connect( a, SIGNAL( activated() ), e, SLOT( paste() ) );
+       editMenu->addAction (a);
+       tb->addAction (a);
+       actionEditPaste=a;
+       
+    a = new QAction( QPixmap( iconPath+"edittrash.png"), tr( "&Delete All" ), this);
+       a->setStatusTip (tr( "Delete all","Status tip for note menu" ) );
+    connect( a, SIGNAL( activated() ), e, SLOT( clear() ) );
+       editMenu->addAction (a);
+       tb->addAction (a);
+       actionEditDeleteAll=a;
+
+}
+
+void TextEditor::setupFormatActions()
+{
+    QToolBar *tb = addToolBar ( tr("Format Actions" ));
+       tb->setObjectName ("noteEditorFormatActions");
+    QMenu *formatMenu = menuBar()->addMenu ( tr( "F&ormat" ));
+
+    QAction *a;
+
+    a = new QAction( QPixmap(iconPath+"formatfixedfont.png"), tr( "&Font hint" ), Qt::ALT + Qt::Key_I, this, "fontHint" );
+       a->setStatusTip (tr( "Toggle font hint for the whole text","Status tip for note menu" ) );
+       a->setToggleAction (true);
+       a->setOn (settings.value("/noteeditor/fonts/useFixedByDefault",false).toBool() );
+    connect( a, SIGNAL( activated() ), this, SLOT( toggleFonthint() ) );
+       formatMenu->addAction (a);
+       tb->addAction (a);
+       actionFormatUseFixedFont=a;
+
+    comboFont = new QComboBox;
+       tb->addWidget (comboFont);
+    QFontDatabase fontDB;
+    comboFont->insertStringList( fontDB.families() );
+    connect( comboFont, SIGNAL( activated( const QString & ) ),
+            this, SLOT( textFamily( const QString & ) ) );
+    comboFont->addItem( QApplication::font().family() );
+    comboSize = new QComboBox;
+       tb->addWidget (comboSize);
+       QList<int> sizes=fontDB.standardSizes();
+       QList<int>::iterator i = sizes.begin();
+       while (i != sizes.end()) 
+       {
+               ++i; // increment i before using it
+               comboSize->insertItem ( QString::number(*i));
+       }       
+    connect( comboSize, SIGNAL( activated( const QString & ) ),
+            this, SLOT( textSize( const QString & ) ) );
+    comboSize->addItem ( QString::number( QApplication::font().pointSize() ) );
+
+    formatMenu->addSeparator();
+
+    QPixmap pix( 16, 16 );
+    pix.fill( e->color());
+    a = new QAction( pix, tr( "&Color..." ), this);
+       formatMenu->addAction (a);
+       tb->addAction (a);
+    connect( a, SIGNAL( activated() ), this, SLOT( textColor() ) );
+    actionTextColor=a;
+
+    a = new QAction( QPixmap (iconPath+"text_bold.png"), tr( "&Bold" ), this);
+       a->setShortcut(Qt::CTRL + Qt::Key_B );
+    connect( a, SIGNAL( activated() ), this, SLOT( textBold() ) );
+       tb->addAction (a);
+       formatMenu->addAction (a);
+    a->setToggleAction( true );
+    actionTextBold=a;
+       
+    a = new QAction( QPixmap(iconPath+"text_italic.png"), tr( "&Italic" ),  this);
+       a->setShortcut(Qt::CTRL + Qt::Key_I);
+    connect( a, SIGNAL( activated() ), this, SLOT( textItalic() ) );
+       tb->addAction (a);
+       formatMenu->addAction (a);
+    a->setToggleAction( true );
+    actionTextItalic=a;
+       
+    a = new QAction( QPixmap (iconPath+"text_under.png"), tr( "&Underline" ), this);
+       a->setShortcut(Qt::CTRL + Qt::Key_U );
+    connect( a, SIGNAL( activated() ), this, SLOT( textUnderline() ) );
+       tb->addAction (a);
+       formatMenu->addAction (a);
+    a->setToggleAction( true );
+    actionTextUnderline=a;
+    formatMenu->addSeparator();
+
+    QActionGroup *grp2 = new QActionGroup( this );
+    grp2->setExclusive(true);
+    a = new QAction( QPixmap (iconPath+"text_sub.png"), tr( "Subs&cript" ),grp2 );
+       a->setShortcut( Qt::CTRL + Qt::SHIFT + Qt::Key_B );
+    a->setToggleAction( true );
+       tb->addAction (a);
+       formatMenu->addAction (a);
+    connect(a, SIGNAL(activated()), this, SLOT(textVAlign()));
+    actionAlignSubScript=a;
+
+    a = new QAction( QPixmap (iconPath+"text_super.png"), tr( "Su&perscript" ),grp2  );
+       a->setShortcut( Qt::CTRL + Qt::SHIFT + Qt::Key_P );
+    a->setToggleAction( true );
+       tb->addAction (a);
+       formatMenu->addAction (a);
+    connect(a, SIGNAL(activated()), this, SLOT(textVAlign()));
+    actionAlignSuperScript=a;
+    QActionGroup *grp = new QActionGroup( this );
+    connect( grp, SIGNAL( selected( QAction* ) ), this, SLOT( textAlign( QAction* ) ) );
+
+    formatMenu->addSeparator();
+
+    a = new QAction( QPixmap (iconPath+"text_left.png"), tr( "&Left" ),grp );
+       a->setShortcut( Qt::CTRL+Qt::Key_L );
+    a->setToggleAction( true );
+       tb->addAction (a);
+       formatMenu->addAction (a);
+    actionAlignLeft=a;
+    a = new QAction( QPixmap (iconPath+"text_center.png"), tr( "C&enter" ),grp);
+    a->setShortcut(  Qt::CTRL + Qt::Key_E);
+    a->setToggleAction( true );
+       tb->addAction (a);
+       formatMenu->addAction (a);
+    actionAlignCenter=a;
+    a = new QAction( QPixmap (iconPath+"text_right.png" ), tr( "&Right" ), grp);
+       a->setShortcut(Qt::CTRL + Qt::Key_R );
+    a->setToggleAction( true );
+       tb->addAction (a);
+       formatMenu->addAction (a);
+    actionAlignRight=a;
+    a = new QAction( QPixmap ( iconPath+"text_block.png"), tr( "&Justify" ), grp );
+       a->setShortcut(Qt::CTRL + Qt::Key_J );
+    a->setToggleAction( true );
+       tb->addAction (a);
+       formatMenu->addAction (a);
+    actionAlignJustify=a;
+}
+
+void TextEditor::setupSettingsActions()
+{
+    QMenu *settingsMenu = menuBar()->addMenu ( tr( "&Settings" ));
+
+    QAction *a;
+    a = new QAction(tr( "Set &fixed font" ), this);
+       a->setStatusTip ( tr( "Set fixed font","Status tip for note menu" ));
+    connect( a, SIGNAL( activated() ), this, SLOT( setFixedFont() ) );
+       settingsMenu->addAction (a);
+       actionSettingsFixedFont=a;
+
+    a = new QAction(tr( "Set &variable font" ), this);
+       a->setStatusTip ( tr( "Set variable font","Status tip for note menu" ) );
+    connect( a, SIGNAL( activated() ), this, SLOT( setVarFont() ) );
+       settingsMenu->addAction (a);
+       actionSettingsVarFont=a;
+
+    a = new QAction(tr( "&fixed font is default" ),  this);
+       a->setStatusTip (tr( "Used fixed font by default","Status tip for note menu" ) );
+       a->setToggleAction (true);
+       // set state later in constructor...
+       settingsMenu->addAction (a);
+       actionSettingsFonthintDefault=a;
+}
+
+void TextEditor::textLoad()
+{
+       if (state!=inactiveEditor)
+       {
+               if (!isEmpty()) 
+               {
+                       QMessageBox mb( vymName + " - " +tr("Note Editor"),
+                               "Loading will overwrite the existing note",
+                               QMessageBox::Warning,
+                               QMessageBox::Yes | QMessageBox::Default,
+                               QMessageBox::Cancel,
+                               0 );
+                       mb.setButtonText( QMessageBox::Yes, "Load note" );
+                       switch( mb.exec() ) {
+                               case QMessageBox::Cancel:
+                                       return;
+                                       break;
+                       }
+               } 
+               // Load note
+               QFileDialog *fd=new QFileDialog( this);
+               QStringList types;
+               types<< "VYM notes (*.html)" <<
+                       "ASCII texts (*.txt)" <<
+                       "All filed (*)";
+               fd->setFilters (types);
+               fd->setDirectory (QDir().current());
+               fd->show();
+               QString fn;
+               if ( fd->exec() == QDialog::Accepted )
+                       fn = fd->selectedFile();
+
+               if ( !fn.isEmpty() )
+               {
+                       QFile f( fn );
+                       if ( !f.open( QIODevice::ReadOnly ) )
+                       return;
+
+                       QTextStream ts( &f );
+                       setText( ts.read() );
+                       editorChanged();
+               }
+       }
+}
+
+void TextEditor::closeEvent( QCloseEvent* ce )
+{
+    ce->accept();      // TextEditor can be reopened with show()
+       showwithmain=false;
+       hide();
+       emit (windowClosed() );
+    return;
+}
+
+QString TextEditor::getText()
+{
+       if (e->toPlainText().isEmpty())
+               return "";
+       else    
+               return e->text();
+}
+
+void TextEditor::editorChanged()
+{
+       if (isEmpty())
+               state=emptyEditor;
+       else
+               state=filledEditor;
+
+               if (state==emptyEditor)
+                       setState (emptyEditor);
+               else
+                       setState (filledEditor);
+       // SLOT is LinkableMapObj, which will update systemFlag
+       if (!blockChangedSignal) emit (textHasChanged() );
+}
+
+
+void TextEditor::setText(QString t)
+{
+       blockChangedSignal=true;
+       e->setReadOnly(false);
+       e->setText(t);
+       enableActions();
+       blockChangedSignal=false;
+}
+
+void TextEditor::setInactive()
+{
+       state=inactiveEditor;
+       setText("");
+       setState (inactiveEditor);
+       e->setReadOnly (true);
+
+       disableActions();
+}
+
+void TextEditor::editCopyAll()
+{
+       e->selectAll();
+       e->copy();
+}
+
+void TextEditor::textSaveAs()
+{
+    QString fn = QFileDialog::getSaveFileName( QString::null, "VYM Note (HTML) (*.html);;All files (*)",
+                                              this,"export note dialog",tr("Export Note to single file") );
+
+    if ( !fn.isEmpty() ) 
+       {
+               QFile file (fn);
+               if (file.exists())
+               {
+                       QMessageBox mb( vymName,
+                               tr("The file %1\nexists already.\nDo you want to overwrite it?","dialog 'save note as'").arg(fn),
+                       QMessageBox::Warning,
+                       QMessageBox::Yes | QMessageBox::Default,
+                       QMessageBox::Cancel | QMessageBox::Escape,
+                       Qt::NoButton );
+                       mb.setButtonText( QMessageBox::Yes, tr("Overwrite") );
+                       mb.setButtonText( QMessageBox::No, tr("Cancel"));
+                       switch( mb.exec() ) {
+                               case QMessageBox::Yes:
+                                       // save 
+                                       filename = fn;
+                                       textSave();
+                                       return;
+                               case QMessageBox::Cancel:
+                                       // do nothing
+                                       break;
+                       }
+               } else
+               {
+                       filename = fn;
+                       textSave();
+                       return;
+               }                       
+    }
+       statusBar()->message(tr( "Couldn't export note ","dialog 'save note as'") + fn, statusbarTime );
+}
+
+
+void TextEditor::textSave()
+{
+    if ( filename.isEmpty() ) 
+       {
+               textSaveAs();
+               return;
+    }
+
+    QString text = e->text();
+    QFile f( filename );
+    if ( !f.open( QIODevice::WriteOnly ) ) 
+       {
+               statusBar()->message( QString("Could not write to %1").arg(filename),
+                                         statusbarTime );
+               return;
+    }
+
+    QTextStream t( &f );
+    t << text;
+    f.close();
+
+    e->setModified( FALSE );
+
+    statusBar()->message( QString( "Note exported as %1" ).arg( filename ), statusbarTime );
+}
+
+void TextEditor::textExportAsASCII()
+{
+       QString text = NoteObj (e->text()).getNoteASCII();
+       QString fn,s;
+       if (!filenameHint.isEmpty())
+       {
+               if (!filenameHint.contains (".txt"))
+                       s=filenameHint+".txt";
+               else    
+                       s=filenameHint;
+       } else  
+               s=QString::null;
+       fn = QFileDialog::getSaveFileName( s, "VYM Note (ASCII) (*.txt);;All files (*)", this,"export note dialog",tr("Export Note to single file (ASCII)") );
+       int ret=-1;
+
+    if ( !fn.isEmpty() ) 
+       {
+               QFile file (fn);
+               if (file.exists())
+               {
+                       QMessageBox mb( vymName,
+                               tr("The file %1\nexists already.\nDo you want to overwrite it?","dialog 'save note as'").arg(fn),
+                       QMessageBox::Warning,
+                       QMessageBox::Yes | QMessageBox::Default,
+                       QMessageBox::Cancel | QMessageBox::Escape,
+                       Qt::NoButton );
+                       mb.setButtonText( QMessageBox::Yes, tr("Overwrite") );
+                       mb.setButtonText( QMessageBox::No, tr("Cancel"));
+                       ret=mb.exec();
+               }       
+               if (ret==QMessageBox::Cancel)
+                       return;
+                       
+               // save 
+               if ( !file.open( QIODevice::WriteOnly ) ) 
+                       statusBar()->message( QString("Could not write to %1").arg(filename),
+                                                 statusbarTime );
+               else
+               {
+                       QTextStream t( &file );
+                       t << text;
+                       file.close();
+
+                       statusBar()->message( QString( "Note exported as %1" ).arg( fn ), statusbarTime );
+               }
+    }
+}
+
+
+void TextEditor::textPrint()
+{
+
+}
+
+void TextEditor::textEditUndo()
+{
+}
+
+void TextEditor::toggleFonthint()
+{
+       setUpdatesEnabled (false);
+       e->selectAll ();
+       if (!actionFormatUseFixedFont->isOn() ) 
+               e->setCurrentFont (varFont);
+       else    
+               e->setCurrentFont (fixedFont);
+       e->selectAll ();
+       setUpdatesEnabled (true);
+       repaint();
+}
+
+void TextEditor::setFixedFont()
+{
+       bool ok;
+       QFont font =QFontDialog::getFont(
+                    &ok, fixedFont, this );
+    if ( ok ) 
+        // font is set to the font the user selected
+               fixedFont=font;
+}
+
+void TextEditor::setVarFont()
+{
+       bool ok;
+       QFont font =QFontDialog::getFont(
+                    &ok, varFont, this );
+    if ( ok ) 
+        // font is set to the font the user selected
+               varFont=font;
+}
+
+void TextEditor::textBold()
+{
+    e->setBold( actionTextBold->isOn() );
+}
+
+void TextEditor::textUnderline()
+{
+    e->setUnderline( actionTextUnderline->isOn() );
+}
+
+void TextEditor::textItalic()
+{
+    e->setItalic( actionTextItalic->isOn() );
+}
+
+void TextEditor::textFamily( const QString &f )
+{
+    e->setFamily( f );
+}
+
+void TextEditor::textSize( const QString &p )
+{
+    e->setPointSize( p.toInt() );
+}
+
+
+void TextEditor::textColor()
+{
+    QColor col = QColorDialog::getColor( e->color(), this );
+    if ( !col.isValid() ) return;
+    e->setColor( col );
+    QPixmap pix( 16, 16 );
+    pix.fill( Qt::black );
+    actionTextColor->setIconSet( pix );
+}
+
+void TextEditor::textAlign( QAction *a )
+{
+    if ( a == actionAlignLeft )
+               e->setAlignment( Qt::AlignLeft );
+    else if ( a == actionAlignCenter )
+               e->setAlignment( Qt::AlignHCenter );
+    else if ( a == actionAlignRight )
+               e->setAlignment( Qt::AlignRight );
+    else if ( a == actionAlignJustify )
+               e->setAlignment( Qt::AlignJustify );
+}
+
+void TextEditor::textVAlign()
+{
+       QTextCharFormat format;
+
+    if ( sender() == actionAlignSuperScript && actionAlignSuperScript->isOn()) {
+               format.setVerticalAlignment(QTextCharFormat::AlignSuperScript);
+    } else if (sender() == actionAlignSubScript && actionAlignSubScript->isOn()) {
+               format.setVerticalAlignment(QTextCharFormat::AlignSubScript);
+    } else {
+               format.setVerticalAlignment(QTextCharFormat::AlignNormal);
+    }
+       e->mergeCurrentCharFormat(format);
+}
+
+
+void TextEditor::fontChanged( const QFont &f )
+{
+       int i=comboFont->findText(f.family());
+    if (i>=0) comboFont->setCurrentIndex (i);
+       i=comboSize->findText(QString::number(f.pointSize()));
+       if (i>=0) comboSize->setCurrentIndex(i);
+    actionTextBold->setOn( f.bold() );
+    actionTextItalic->setOn( f.italic() );
+    actionTextUnderline->setOn( f.underline() );
+}
+
+void TextEditor::colorChanged( const QColor &c )
+{
+    QPixmap pix( 16, 16 );
+    pix.fill( c );
+    actionTextColor->setIconSet( pix );
+}
+
+void TextEditor::formatChanged( const QTextCharFormat &f )
+{
+       fontChanged(f.font());
+    colorChanged(f.foreground().color());
+    alignmentChanged(e->alignment());
+       verticalAlignmentChanged (f.verticalAlignment());
+}
+
+void TextEditor::alignmentChanged( int a )
+{
+    if ( ( a == Qt::AlignLeft ) || ( a & Qt::AlignLeft ))
+               actionAlignLeft->setOn( true );
+    else if ( ( a & Qt::AlignHCenter ) )
+               actionAlignCenter->setOn( true );
+    else if ( ( a & Qt::AlignRight ) )
+               actionAlignRight->setOn( true );
+    else if ( ( a & Qt::AlignJustify ) )
+               actionAlignJustify->setOn( true );
+}
+
+void TextEditor::verticalAlignmentChanged(QTextCharFormat::VerticalAlignment a)
+{
+       actionAlignSubScript->setOn (false);
+       actionAlignSuperScript->setOn (false);
+       switch (a)
+       {
+               case QTextCharFormat::AlignSuperScript: 
+                       actionAlignSuperScript->setOn (true);
+                       break;
+               case QTextCharFormat::AlignSubScript:
+                       actionAlignSubScript->setOn (true);
+                       break;
+               default: ;      
+       }
+}
+
+
+
+void TextEditor::enableActions()
+{
+       actionFileLoad->setEnabled(true);
+       actionFileSave->setEnabled(true);
+       actionFileSaveAs->setEnabled(true);
+       //actionFilePrint->setEnabled(true);
+       actionEditUndo->setEnabled(true);
+       actionEditRedo->setEnabled(true);
+       actionEditCopy->setEnabled(true);
+       actionEditCut->setEnabled(true);
+       actionEditPaste->setEnabled(true);
+       actionEditDeleteAll->setEnabled(true);
+       actionFormatUseFixedFont->setEnabled(true);
+}
+
+void TextEditor::disableActions()
+{
+       actionFileLoad->setEnabled(false);
+       actionFileSave->setEnabled(false);
+       actionFileSaveAs->setEnabled(false);
+       //actionFilePrint->setEnabled(false);
+       actionEditUndo->setEnabled(false);
+       actionEditRedo->setEnabled(false);
+       actionEditCopy->setEnabled(false);
+       actionEditCut->setEnabled(false);
+       actionEditPaste->setEnabled(false);
+       actionEditDeleteAll->setEnabled(false);
+       actionFormatUseFixedFont->setEnabled(false);
+}
+
+void TextEditor::setState (EditorState s)
+{
+       
+       QPalette p=palette();
+       QColor c;
+       switch (s)
+       {
+               case emptyEditor:    c=QColor (150,150,150); break;
+               case filledEditor:   c=QColor (255,255,255); break;
+               case inactiveEditor: c=QColor (0,0,0);
+       }
+    p.setColor(QPalette::Active, static_cast<QPalette::ColorRole>(9), c);
+    p.setColor(QPalette::Inactive, static_cast<QPalette::ColorRole>(9), c);
+    e->setPalette(p);
+}
+
+
diff --git a/texteditor.h b/texteditor.h
new file mode 100644 (file)
index 0000000..30c610e
--- /dev/null
@@ -0,0 +1,122 @@
+#ifndef TEXTEDITOR_H 
+#define TEXTEDITOR_H
+
+#include <QtGui>
+
+enum EditorState {inactiveEditor,emptyEditor,filledEditor};
+
+class MyTextEdit;
+
+class TextEditor : public QMainWindow {
+    Q_OBJECT
+public:
+    TextEditor();
+    ~TextEditor();
+
+       bool isEmpty();
+       void setShowWithMain (bool);
+       bool showWithMain ();
+       void setFontHint(const QString&);
+       QString getFontHint();
+       QString getFontHintDefault();
+       void setFilename (const QString&);
+       QString getFilename ();
+       void setFilenameHint (const QString&);
+       QString getFilenameHint ();
+       bool findText(const QString &, const QTextDocument::FindFlags &); // find Text 
+
+protected:
+       void setupFileActions();
+       void setupEditActions();
+       void setupFormatActions();
+       void setupSettingsActions();
+    void closeEvent( QCloseEvent* );
+       
+
+public:
+       QString getText();
+
+public slots:
+       void editorChanged();   // received when text() changed
+       void setText(QString);  // set Text (by MapEditor)
+       void setInactive();             // Nothing can be entered
+       void editCopyAll();
+
+signals:
+       void textHasChanged();
+       void windowClosed();
+       void fontFamilyHasChanged();
+       void fontSizeHasChanged();
+       
+private slots:
+    void textLoad();
+    void textSaveAs();
+    void textSave();
+       void textExportAsASCII();
+    void textPrint();
+       void textEditUndo();
+    void toggleFonthint();
+    void setFixedFont();
+    void setVarFont();
+    void textBold();
+    void textUnderline();
+    void textItalic();
+    void textFamily( const QString &f );
+    void textSize( const QString &p );
+       void textColor();
+       void textAlign(QAction*);
+       void textVAlign();
+    void fontChanged( const QFont &f );
+    void colorChanged( const QColor &c );
+       void formatChanged (const QTextCharFormat &f);
+    void alignmentChanged( int a );
+    void verticalAlignmentChanged(QTextCharFormat::VerticalAlignment);
+       void enableActions();
+       void disableActions();
+       void setState (EditorState);
+
+private:
+    //QPrinter *printer;
+    QTextEdit *e;
+       QPoint lastPos;                 // save last position of window
+    QString filename;
+    QString filenameHint;
+
+       QBrush emptyPaper;              // setting the background color
+       QBrush filledPaper;             // depending on the state
+       QBrush inactivePaper;   // depending on the state
+       EditorState state;
+       bool showwithmain;              // same visibility as mainwindow?
+       bool blockChangedSignal;
+
+       QFont varFont;
+       QFont fixedFont;
+    QComboBox *comboFont, *comboSize;
+       
+       QAction *actionFileLoad,
+       *actionFileSave,
+       *actionFileSaveAs,
+       /* *actionFilePrint, */
+       *actionEditUndo,
+       *actionEditRedo,
+       *actionEditCopy,
+       *actionEditCut,
+       *actionEditPaste,
+       *actionEditDeleteAll,
+       *actionFormatUseFixedFont,
+       *actionSettingsVarFont,
+       *actionSettingsFixedFont,
+       *actionSettingsFonthintDefault,
+    *actionTextBold,
+       *actionTextUnderline,
+       *actionTextItalic,
+       *actionTextColor,
+       *actionAlignSubScript,
+       *actionAlignSuperScript,
+       *actionAlignLeft,
+       *actionAlignCenter,
+       *actionAlignRight,
+       *actionAlignJustify;
+};
+
+#endif
diff --git a/version.cpp b/version.cpp
new file mode 100644 (file)
index 0000000..2fcd47c
--- /dev/null
@@ -0,0 +1,72 @@
+#include "version.h"
+
+bool checkVersion (const QString &v)
+{
+       // returns true, if vym is able to read file regarding 
+       // the version set with setVersion
+       return checkVersion (v,__VYM_VERSION);
+       /*
+       QString s1=v.section (".",0,0);
+       QString s2=v.section (".",1,1);
+       QString s3=v.section (".",2,2);
+       bool ok;
+       int vv1 =QString(__VYM_VERSION).section (".",0,0).toInt(&ok,10);
+       int vv2 =QString(__VYM_VERSION).section (".",1,1).toInt(&ok,10);
+       int vv3 =QString(__VYM_VERSION).section (".",2,2).toInt(&ok,10);
+       int mv1=0;
+       int mv2=0;
+       int mv3=0;
+       if (!s1.isEmpty() ) mv1=s1.toInt(&ok,10);
+       if (!s2.isEmpty() ) mv2=s2.toInt(&ok,10);
+       if (!s3.isEmpty() ) mv3=s3.toInt(&ok,10);
+       
+       if (vv1 > mv1)
+               return true;
+       if (vv1 < mv1)
+               return false;
+       if (vv2 > mv2)
+               return true;
+       if (vv2 < mv2)
+               return false;
+       if (vv3 > mv3)
+               return true;
+       if (vv3 < mv3)
+               return false;
+       return true;    
+*/
+}
+
+bool checkVersion (const QString &v, const QString &d)
+{
+       QString v1=v.section (".",0,0);
+       QString v2=v.section (".",1,1);
+       QString v3=v.section (".",2,2);
+       QString d1=d.section (".",0,0);
+       QString d2=d.section (".",1,1);
+       QString d3=d.section (".",2,2);
+       bool ok;
+       int d1i=d1.toInt(&ok,10);
+       int d2i=d2.toInt(&ok,10);
+       int d3i=d3.toInt(&ok,10);
+       int v1i=0;
+       int v2i=0;
+       int v3i=0;
+       if (!v1.isEmpty() ) v1i=v1.toInt(&ok,10);
+       if (!v2.isEmpty() ) v2i=v2.toInt(&ok,10);
+       if (!v3.isEmpty() ) v3i=v3.toInt(&ok,10);
+       
+       if (d1i > v1i)
+               return true;
+       if (d1i < v1i)
+               return false;
+       if (d2i > v2i)
+               return true;
+       if (d2i < v2i)
+               return false;
+       if (d3i > v3i)
+               return true;
+       if (d3i < v3i)
+               return false;
+       return true;    
+
+}
diff --git a/version.h b/version.h
new file mode 100644 (file)
index 0000000..765e3f8
--- /dev/null
+++ b/version.h
@@ -0,0 +1,16 @@
+#ifndef VERSION_H 
+#define VERSION_H
+
+#include <QString>
+
+#define __VYM_NAME "VYM"
+#define __VYM_VERSION "1.12.2"
+#define __VYM_CODENAME "Maintenance Update"
+//#define __VYM_CODENAME "Codename: development version"
+#define __VYM_BUILD_DATE "2008-10-05"
+
+
+bool checkVersion(const QString &);
+bool checkVersion(const QString &, const QString &);
+
+#endif
diff --git a/vym b/vym
new file mode 100755 (executable)
index 0000000..c0b019d
Binary files /dev/null and b/vym differ
diff --git a/vym.pro b/vym.pro
new file mode 100644 (file)
index 0000000..25c0a9f
--- /dev/null
+++ b/vym.pro
@@ -0,0 +1,189 @@
+TEMPLATE       = app
+LANGUAGE       = C++
+
+CONFIG += qt warn_on release debug
+# CONFIG += x86 ppc
+
+TRANSLATIONS += lang/vym_de.ts
+TRANSLATIONS += lang/vym_en.ts
+TRANSLATIONS += lang/vym_es.ts
+TRANSLATIONS += lang/vym_fr.ts
+TRANSLATIONS += lang/vym_it.ts
+TRANSLATIONS += lang/vym_pt_BR.ts
+TRANSLATIONS += lang/vym_ru.ts
+TRANSLATIONS += lang/vym_zh_CN.ts
+
+# Manifest embedding was suggested by Qt docs somewhere...
+win32: CONFIG += embed_manifest_exe
+
+# Without this, M_PI, and M_PI_2 won`t be defined.
+win32:DEFINES *= _USE_MATH_DEFINES
+
+ICON =icons/vym.icns
+
+QT += qt3support
+QT += network
+
+HEADERS        += \
+       aboutdialog.h \
+       animpoint.h \
+       attribute.h \
+       attributedelegate.h\
+       attributedialog.h \
+       attributewidget.h \
+       branchobj.h \
+       branchpropwindow.h\
+       editxlinkdialog.h \
+       exportoofiledialog.h \
+       exportxhtmldialog.h\
+       exports.h \
+       extrainfodialog.h \
+       file.h \
+       findwindow.h \
+       flagobj.h \
+       flagrowobj.h \
+       floatimageobj.h \
+       floatobj.h \
+       frameobj.h \
+       geometry.h \
+       headingobj.h \
+       highlighter.h \
+       historywindow.h \
+       imageobj.h \
+       imports.h \
+       linkablemapobj.h \
+       mainwindow.h \
+       mapcenterobj.h \
+       mapeditor.h \
+       mapobj.h \
+       misc.h \
+       noteobj.h \
+       options.h \
+       ornamentedobj.h \
+       parser.h \
+       process.h \
+       selection.h \
+       showtextdialog.h\
+       simplescripteditor.h\
+       texteditor.h \
+       version.h \
+       vymmodel.h \
+       xlinkobj.h \
+       xml-base.h \
+       xml-vym.h \
+       xml-freemind.h \
+       xmlobj.h\
+       xsltproc.h \
+       settings.h \
+       warningdialog.h
+
+SOURCES        += \
+       aboutdialog.cpp \
+       animpoint.cpp \
+       attribute.cpp \
+       attributedelegate.cpp \
+       attributedialog.cpp \
+       attributewidget.cpp \
+       branchobj.cpp \
+       branchpropwindow.cpp \
+       editxlinkdialog.cpp \
+       exportoofiledialog.cpp \
+       exports.cpp \
+       exportxhtmldialog.cpp \
+       extrainfodialog.cpp \
+       file.cpp \
+       findwindow.cpp \
+       flagobj.cpp \
+       flagrowobj.cpp \
+       floatimageobj.cpp \
+       floatobj.cpp \
+       frameobj.cpp \
+       geometry.cpp \
+       headingobj.cpp \
+       highlighter.cpp \
+       historywindow.cpp \
+       imageobj.cpp \
+       imports.cpp \
+       linkablemapobj.cpp \
+       main.cpp \
+       mainwindow.cpp \
+       mapcenterobj.cpp \
+       mapeditor.cpp \
+       mapobj.cpp \
+       misc.cpp \
+       noteobj.cpp \
+       options.cpp \
+       ornamentedobj.cpp \
+       parser.cpp \
+       process.cpp \
+       selection.cpp \
+       showtextdialog.cpp \
+       simplescripteditor.cpp \
+       texteditor.cpp \
+       version.cpp \
+       vymmodel.cpp \
+       xlinkobj.cpp \
+       xml-base.cpp \
+       xml-vym.cpp \
+       xml-freemind.cpp \
+       xmlobj.cpp \
+       xsltproc.cpp \
+       settings.cpp \
+       warningdialog.cpp
+
+FORMS = \
+       attributewidget.ui \
+       branchpropwindow.ui \
+       exportxhtmldialog.ui \
+       extrainfodialog.ui \
+       editxlinkdialog.ui \
+       historywindow.ui \
+       simplescripteditor.ui \
+       showtextdialog.ui \
+       warningdialog.ui
+
+win32 {
+       HEADERS += mkdtemp.h
+       SOURCES += mkdtemp.cpp
+       RC_FILE = vym.rc
+}
+
+#The following lines were inserted by qt3to4
+QT += xml
+
+TARGET  = vym
+
+
+isEmpty( PREFIX ) {
+       PREFIX = /usr/local
+       count( INSTALLDIR, 1 ) {
+               PREFIX = $${INSTALLDIR}
+               message( "Please use PREFIX instead of INSTALLDIR" )
+       }
+}
+isEmpty( BINDIR ) {
+       BINDIR = $${PREFIX}/bin
+}
+isEmpty( DATADIR ) {
+       DATADIR = $${PREFIX}/share
+}
+isEmpty( DOCDIR ) {
+       DOCDIR = $${DATADIR}/doc/packages/vym
+}
+
+message( "Installation directory" )
+message( $$PREFIX )
+
+
+target.path = $${BINDIR}
+INSTALLS += target
+
+support.files = styles/ scripts/ icons/ flags/ lang/ macros/ exports/ demos/
+support.path = $${DATADIR}/vym
+INSTALLS += support 
+
+doc.files = doc/vym.pdf
+doc.path = $${DOCDIR}
+INSTALLS += doc
+DEFINES += VYM_DOCDIR=\\\"$${DOCDIR}\\\"
+
diff --git a/vym.pro.user b/vym.pro.user
new file mode 100644 (file)
index 0000000..d261aaf
--- /dev/null
@@ -0,0 +1,260 @@
+<!DOCTYPE QtCreatorProject>
+<qtcreator>
+ <data>
+  <variable>RunConfiguration0-CommandLineArguments</variable>
+  <valuelist type="QVariantList" />
+ </data>
+ <data>
+  <variable>RunConfiguration0-ProFile</variable>
+  <value type="QString" >C:/vym-1.12.2/vym.pro</value>
+ </data>
+ <data>
+  <variable>RunConfiguration0-RunConfiguration.name</variable>
+  <value type="QString" >vym</value>
+ </data>
+ <data>
+  <variable>RunConfiguration0-UserSetName</variable>
+  <value type="bool" >false</value>
+ </data>
+ <data>
+  <variable>RunConfiguration0-type</variable>
+  <value type="QString" >Qt4ProjectManager.Qt4RunConfiguration</value>
+ </data>
+ <data>
+  <variable>activeRunConfiguration</variable>
+  <value type="int" >0</value>
+ </data>
+ <data>
+  <variable>activebuildconfiguration</variable>
+  <value type="QString" >Debug</value>
+ </data>
+ <data>
+  <variable>buildConfiguration-Debug</variable>
+  <valuemap type="QVariantMap" >
+   <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString" >Debug</value>
+   <value key="QtVersionId" type="int" >4</value>
+   <value key="addQDumper" type="" ></value>
+   <value key="buildDirectory" type="QString" >C:\vym-1.12.2</value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>buildconfiguration-Debug-buildstep0</variable>
+  <valuemap type="QVariantMap" >
+   <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString" >Debug</value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>buildconfiguration-Debug-buildstep1</variable>
+  <valuemap type="QVariantMap" >
+   <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString" >Debug</value>
+   <valuelist key="abstractProcess.Environment" type="QVariantList" >
+    <value type="QString" >ALLUSERSPROFILE=C:\Documents and Settings\All Users</value>
+    <value type="QString" >APPDATA=C:\Documents and Settings\marcelo.barros\Application Data</value>
+    <value type="QString" >CLASSPATH=.;C:\Program Files\Java\jre1.6.0_03\lib\ext\QTJava.zip</value>
+    <value type="QString" >COMMONPROGRAMFILES=C:\Program Files\Common Files</value>
+    <value type="QString" >COMPUTERNAME=BARROS-DESKTOP</value>
+    <value type="QString" >COMSPEC=C:\WINDOWS\system32\cmd.exe</value>
+    <value type="QString" >FP_NO_HOST_CHECK=NO</value>
+    <value type="QString" >GTK_BASEPATH=C:\PROGRA~1\COMMON~1\GTK\2.0</value>
+    <value type="QString" >HOMEDRIVE=C:</value>
+    <value type="QString" >HOMEPATH=\Documents and Settings\marcelo.barros</value>
+    <value type="QString" >LOGONSERVER=\\BARROS-DESKTOP</value>
+    <value type="QString" >NUMBER_OF_PROCESSORS=1</value>
+    <value type="QString" >OS=Windows_NT</value>
+    <value type="QString" >PATH=c:\Qt\2009.01\qt\bin;C:\Program Files\PC Connectivity Solution\;D:\Perl\bin\;C:\Python26\;C:\PROGRA~1\COMMON~1\GTK\2.0\bin;C:\oracle\ora92\bin;C:\Program Files\Oracle\jre\1.1.8\bin;C:\Perl\site\bin;C:\Perl\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\VoiceAge\Common;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\;C:\Program Files\Jahshaka\OpenLibraries\bin;c:\altera\72sp1\quartus\bin;C:\Program Files\Smar\OleServers\;C:\Program Files\Smar\Syscon\;C:\Program Files\Graphviz2.20\Bin;C:\Program Files\CollabNet Subversion;C:\Program Files\Common Files\Symbian\tools;C:\S60\CSL Arm Toolchain\bin;C:\Program Files\QuickTime\QTSystem\;C:\Python25\Lib\site-packages\PyQt4;C:\Program Files\doxygen\bin;C:\Program Files\GNU\GnuPG\pub;C:\Program Files\Bazaar;C:\Python25\Lib\site-packages\PyQt4;C:\Program Files\Mercurial;C:\Program Files\TortoiseHg;C:\Program Files\CVSNT\;c:\qt\4.5.0-vc\qt\bin</value>
+    <value type="QString" >PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.py;.pyw</value>
+    <value type="QString" >PROCESSOR_ARCHITECTURE=x86</value>
+    <value type="QString" >PROCESSOR_IDENTIFIER=x86 Family 15 Model 2 Stepping 9, GenuineIntel</value>
+    <value type="QString" >PROCESSOR_LEVEL=15</value>
+    <value type="QString" >PROCESSOR_REVISION=0209</value>
+    <value type="QString" >PROGRAMFILES=C:\Program Files</value>
+    <value type="QString" >QTDIR=C:/Qt/2009.01/qt</value>
+    <value type="QString" >QTJAVA=C:\Program Files\Java\jre1.6.0_03\lib\ext\QTJava.zip</value>
+    <value type="QString" >QUARTUS_ROOTDIR=c:\altera\72sp1\quartus</value>
+    <value type="QString" >SESSIONNAME=Console</value>
+    <value type="QString" >SMAROLEPATH=C:\Program Files\Smar\OleServers\</value>
+    <value type="QString" >SYSTEMDRIVE=C:</value>
+    <value type="QString" >SYSTEMROOT=C:\WINDOWS</value>
+    <value type="QString" >TEMP=C:\DOCUME~1\MARCEL~1.BAR\LOCALS~1\Temp</value>
+    <value type="QString" >TMP=C:\DOCUME~1\MARCEL~1.BAR\LOCALS~1\Temp</value>
+    <value type="QString" >USERDOMAIN=BARROS-DESKTOP</value>
+    <value type="QString" >USERNAME=marcelo.barros</value>
+    <value type="QString" >USERPROFILE=C:\Documents and Settings\marcelo.barros</value>
+    <value type="QString" >VBOX_INSTALL_PATH=C:\Program Files\Sun\xVM VirtualBox\</value>
+    <value type="QString" >VS90COMNTOOLS=C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\</value>
+    <value type="QString" >WINDIR=C:\WINDOWS</value>
+   </valuelist>
+   <valuelist key="abstractProcess.arguments" type="QVariantList" >
+    <value type="QString" >C:/vym-1.12.2/vym.pro</value>
+    <value type="QString" >-spec</value>
+    <value type="QString" >win32-g++</value>
+    <value type="QString" >-r</value>
+   </valuelist>
+   <value key="abstractProcess.command" type="QString" >C:/Qt/2009.01/qt/bin/qmake.exe</value>
+   <value key="abstractProcess.enabled" type="bool" >true</value>
+   <value key="abstractProcess.workingDirectory" type="QString" >C:/vym-1.12.2</value>
+   <value key="buildConfiguration" type="int" >2</value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>buildconfiguration-Debug-buildstep2</variable>
+  <valuemap type="QVariantMap" >
+   <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString" >Debug</value>
+   <valuelist key="abstractProcess.Environment" type="QVariantList" >
+    <value type="QString" >ALLUSERSPROFILE=C:\Documents and Settings\All Users</value>
+    <value type="QString" >APPDATA=C:\Documents and Settings\marcelo.barros\Application Data</value>
+    <value type="QString" >CLASSPATH=.;C:\Program Files\Java\jre1.6.0_03\lib\ext\QTJava.zip</value>
+    <value type="QString" >COMMONPROGRAMFILES=C:\Program Files\Common Files</value>
+    <value type="QString" >COMPUTERNAME=BARROS-DESKTOP</value>
+    <value type="QString" >COMSPEC=C:\WINDOWS\system32\cmd.exe</value>
+    <value type="QString" >FP_NO_HOST_CHECK=NO</value>
+    <value type="QString" >GTK_BASEPATH=C:\PROGRA~1\COMMON~1\GTK\2.0</value>
+    <value type="QString" >HOMEDRIVE=C:</value>
+    <value type="QString" >HOMEPATH=\Documents and Settings\marcelo.barros</value>
+    <value type="QString" >LOGONSERVER=\\BARROS-DESKTOP</value>
+    <value type="QString" >NUMBER_OF_PROCESSORS=1</value>
+    <value type="QString" >OS=Windows_NT</value>
+    <value type="QString" >PATH=c:\Qt\2009.01\qt\bin;C:\Program Files\PC Connectivity Solution\;D:\Perl\bin\;C:\Python26\;C:\PROGRA~1\COMMON~1\GTK\2.0\bin;C:\oracle\ora92\bin;C:\Program Files\Oracle\jre\1.1.8\bin;C:\Perl\site\bin;C:\Perl\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\VoiceAge\Common;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\;C:\Program Files\Jahshaka\OpenLibraries\bin;c:\altera\72sp1\quartus\bin;C:\Program Files\Smar\OleServers\;C:\Program Files\Smar\Syscon\;C:\Program Files\Graphviz2.20\Bin;C:\Program Files\CollabNet Subversion;C:\Program Files\Common Files\Symbian\tools;C:\S60\CSL Arm Toolchain\bin;C:\Program Files\QuickTime\QTSystem\;C:\Python25\Lib\site-packages\PyQt4;C:\Program Files\doxygen\bin;C:\Program Files\GNU\GnuPG\pub;C:\Program Files\Bazaar;C:\Python25\Lib\site-packages\PyQt4;C:\Program Files\Mercurial;C:\Program Files\TortoiseHg;C:\Program Files\CVSNT\;c:\qt\4.5.0-vc\qt\bin</value>
+    <value type="QString" >PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.py;.pyw</value>
+    <value type="QString" >PROCESSOR_ARCHITECTURE=x86</value>
+    <value type="QString" >PROCESSOR_IDENTIFIER=x86 Family 15 Model 2 Stepping 9, GenuineIntel</value>
+    <value type="QString" >PROCESSOR_LEVEL=15</value>
+    <value type="QString" >PROCESSOR_REVISION=0209</value>
+    <value type="QString" >PROGRAMFILES=C:\Program Files</value>
+    <value type="QString" >QTDIR=C:/Qt/2009.01/qt</value>
+    <value type="QString" >QTJAVA=C:\Program Files\Java\jre1.6.0_03\lib\ext\QTJava.zip</value>
+    <value type="QString" >QUARTUS_ROOTDIR=c:\altera\72sp1\quartus</value>
+    <value type="QString" >SESSIONNAME=Console</value>
+    <value type="QString" >SMAROLEPATH=C:\Program Files\Smar\OleServers\</value>
+    <value type="QString" >SYSTEMDRIVE=C:</value>
+    <value type="QString" >SYSTEMROOT=C:\WINDOWS</value>
+    <value type="QString" >TEMP=C:\DOCUME~1\MARCEL~1.BAR\LOCALS~1\Temp</value>
+    <value type="QString" >TMP=C:\DOCUME~1\MARCEL~1.BAR\LOCALS~1\Temp</value>
+    <value type="QString" >USERDOMAIN=BARROS-DESKTOP</value>
+    <value type="QString" >USERNAME=marcelo.barros</value>
+    <value type="QString" >USERPROFILE=C:\Documents and Settings\marcelo.barros</value>
+    <value type="QString" >VBOX_INSTALL_PATH=C:\Program Files\Sun\xVM VirtualBox\</value>
+    <value type="QString" >VS90COMNTOOLS=C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\</value>
+    <value type="QString" >WINDIR=C:\WINDOWS</value>
+   </valuelist>
+   <valuelist key="abstractProcess.arguments" type="QVariantList" >
+    <value type="QString" >-w</value>
+   </valuelist>
+   <value key="abstractProcess.command" type="QString" >C:/Qt/2009.01/mingw/bin/mingw32-make.exe</value>
+   <value key="abstractProcess.enabled" type="bool" >true</value>
+   <value key="abstractProcess.workingDirectory" type="QString" >C:/vym-1.12.2</value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>buildconfiguration-Debug-cleanstep0</variable>
+  <valuemap type="QVariantMap" >
+   <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString" >Debug</value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>buildconfiguration-Debug-cleanstep1</variable>
+  <valuemap type="QVariantMap" >
+   <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString" >Debug</value>
+   <valuelist key="abstractProcess.Environment" type="QVariantList" >
+    <value type="QString" >ALLUSERSPROFILE=C:\Documents and Settings\All Users</value>
+    <value type="QString" >APPDATA=C:\Documents and Settings\marcelo.barros\Application Data</value>
+    <value type="QString" >CLASSPATH=.;C:\Program Files\Java\jre1.6.0_03\lib\ext\QTJava.zip</value>
+    <value type="QString" >COMMONPROGRAMFILES=C:\Program Files\Common Files</value>
+    <value type="QString" >COMPUTERNAME=BARROS-DESKTOP</value>
+    <value type="QString" >COMSPEC=C:\WINDOWS\system32\cmd.exe</value>
+    <value type="QString" >FP_NO_HOST_CHECK=NO</value>
+    <value type="QString" >GTK_BASEPATH=C:\PROGRA~1\COMMON~1\GTK\2.0</value>
+    <value type="QString" >HOMEDRIVE=C:</value>
+    <value type="QString" >HOMEPATH=\Documents and Settings\marcelo.barros</value>
+    <value type="QString" >LOGONSERVER=\\BARROS-DESKTOP</value>
+    <value type="QString" >NUMBER_OF_PROCESSORS=1</value>
+    <value type="QString" >OS=Windows_NT</value>
+    <value type="QString" >PATH=c:\Qt\2009.01\qt\bin;C:\Program Files\PC Connectivity Solution\;D:\Perl\bin\;C:\Python26\;C:\PROGRA~1\COMMON~1\GTK\2.0\bin;C:\oracle\ora92\bin;C:\Program Files\Oracle\jre\1.1.8\bin;C:\Perl\site\bin;C:\Perl\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\VoiceAge\Common;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\;C:\Program Files\Jahshaka\OpenLibraries\bin;c:\altera\72sp1\quartus\bin;C:\Program Files\Smar\OleServers\;C:\Program Files\Smar\Syscon\;C:\Program Files\Graphviz2.20\Bin;C:\Program Files\CollabNet Subversion;C:\Program Files\Common Files\Symbian\tools;C:\S60\CSL Arm Toolchain\bin;C:\Program Files\QuickTime\QTSystem\;C:\Python25\Lib\site-packages\PyQt4;C:\Program Files\doxygen\bin;C:\Program Files\GNU\GnuPG\pub;C:\Program Files\Bazaar;C:\Python25\Lib\site-packages\PyQt4;C:\Program Files\Mercurial;C:\Program Files\TortoiseHg;C:\Program Files\CVSNT\;c:\qt\4.5.0-vc\qt\bin</value>
+    <value type="QString" >PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.py;.pyw</value>
+    <value type="QString" >PROCESSOR_ARCHITECTURE=x86</value>
+    <value type="QString" >PROCESSOR_IDENTIFIER=x86 Family 15 Model 2 Stepping 9, GenuineIntel</value>
+    <value type="QString" >PROCESSOR_LEVEL=15</value>
+    <value type="QString" >PROCESSOR_REVISION=0209</value>
+    <value type="QString" >PROGRAMFILES=C:\Program Files</value>
+    <value type="QString" >QTDIR=C:/Qt/2009.01/qt</value>
+    <value type="QString" >QTJAVA=C:\Program Files\Java\jre1.6.0_03\lib\ext\QTJava.zip</value>
+    <value type="QString" >QUARTUS_ROOTDIR=c:\altera\72sp1\quartus</value>
+    <value type="QString" >SESSIONNAME=Console</value>
+    <value type="QString" >SMAROLEPATH=C:\Program Files\Smar\OleServers\</value>
+    <value type="QString" >SYSTEMDRIVE=C:</value>
+    <value type="QString" >SYSTEMROOT=C:\WINDOWS</value>
+    <value type="QString" >TEMP=C:\DOCUME~1\MARCEL~1.BAR\LOCALS~1\Temp</value>
+    <value type="QString" >TMP=C:\DOCUME~1\MARCEL~1.BAR\LOCALS~1\Temp</value>
+    <value type="QString" >USERDOMAIN=BARROS-DESKTOP</value>
+    <value type="QString" >USERNAME=marcelo.barros</value>
+    <value type="QString" >USERPROFILE=C:\Documents and Settings\marcelo.barros</value>
+    <value type="QString" >VBOX_INSTALL_PATH=C:\Program Files\Sun\xVM VirtualBox\</value>
+    <value type="QString" >VS90COMNTOOLS=C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\</value>
+    <value type="QString" >WINDIR=C:\WINDOWS</value>
+   </valuelist>
+   <value key="abstractProcess.workingDirectory" type="QString" >C:/vym-1.12.2</value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>buildconfigurations</variable>
+  <valuelist type="QVariantList" >
+   <value type="QString" >Debug</value>
+  </valuelist>
+ </data>
+ <data>
+  <variable>buildstep0</variable>
+  <valuemap type="QVariantMap" >
+   <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString" ></value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>buildstep1</variable>
+  <valuemap type="QVariantMap" >
+   <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString" ></value>
+   <value key="mkspec" type="QString" ></value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>buildstep2</variable>
+  <valuemap type="QVariantMap" >
+   <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString" ></value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>buildsteps</variable>
+  <valuelist type="QVariantList" >
+   <value type="QString" >trolltech.qt4projectmanager.gdbmaros</value>
+   <value type="QString" >trolltech.qt4projectmanager.qmake</value>
+   <value type="QString" >trolltech.qt4projectmanager.make</value>
+  </valuelist>
+ </data>
+ <data>
+  <variable>cleanstep0</variable>
+  <valuemap type="QVariantMap" >
+   <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString" ></value>
+   <value key="clean" type="bool" >true</value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>cleanstep1</variable>
+  <valuemap type="QVariantMap" >
+   <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString" ></value>
+   <value key="clean" type="bool" >true</value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>cleansteps</variable>
+  <valuelist type="QVariantList" >
+   <value type="QString" >trolltech.qt4projectmanager.gdbmaros</value>
+   <value type="QString" >trolltech.qt4projectmanager.make</value>
+  </valuelist>
+ </data>
+ <data>
+  <variable>defaultFileEncoding</variable>
+  <value type="QByteArray" >System</value>
+ </data>
+ <data>
+  <variable>project</variable>
+  <valuemap type="QVariantMap" />
+ </data>
+</qtcreator>
diff --git a/vym.rc b/vym.rc
new file mode 100644 (file)
index 0000000..0961744
--- /dev/null
+++ b/vym.rc
@@ -0,0 +1 @@
+IDI_ICON1              ICON            DISCARDABLE     "icons/vym.ico"
diff --git a/vymmodel.cpp b/vymmodel.cpp
new file mode 100644 (file)
index 0000000..cbf7f90
--- /dev/null
@@ -0,0 +1,395 @@
+#include <QApplication>
+#include <typeinfo>
+
+#include "geometry.h"          // for addBBox
+#include "vymmodel.h"
+
+
+extern Settings settings;
+
+VymModel::VymModel() 
+{
+//    cout << "Const VymModel\n";
+}
+
+
+VymModel::~VymModel() 
+{
+//    cout << "Destr VymModel\n";
+}      
+
+void VymModel::clear() 
+{
+       while (!mapCenters.isEmpty())
+               delete mapCenters.takeFirst();
+}
+
+void VymModel::init () 
+{
+       addMapCenter();
+
+       // animations
+       animationUse=settings.readBoolEntry("/animation/use",false);
+       animationTicks=settings.readNumEntry("/animation/ticks",10);
+       animationInterval=settings.readNumEntry("/animation/interval",50);
+       animObjList.clear();
+       animationTimer=new QTimer (this);
+       connect(animationTimer, SIGNAL(timeout()), this, SLOT(animate()));
+
+}
+
+void VymModel::setMapEditor(MapEditor *me)
+{
+       mapEditor=me;
+       for (int i=0; i<mapCenters.count(); i++)
+               mapCenters.at(i)->setMapEditor(mapEditor);
+}
+
+MapEditor* VymModel::getMapEditor()
+{
+       return mapEditor;
+}
+
+void VymModel::setVersion (const QString &s)
+{
+       version=s;
+}
+
+void VymModel::setAuthor (const QString &s)
+{
+       author=s;
+}
+
+QString VymModel::getAuthor()
+{
+       return author;
+}
+
+void VymModel::setComment (const QString &s)
+{
+       comment=s;
+}
+
+QString VymModel::getComment ()
+{
+       return comment;
+}
+
+QString VymModel::getDate ()
+{
+       return QDate::currentDate().toString ("yyyy-MM-dd");
+}
+
+void VymModel::setScene (QGraphicsScene *s)
+{
+       mapScene=s;
+    init();    // Here we have a mapScene set, 
+                       // which is (still) needed to create MapCenters
+}
+
+QGraphicsScene* VymModel::getScene ()
+{
+       return mapScene;
+}
+
+MapCenterObj* VymModel::addMapCenter()
+{
+       return addMapCenter (QPointF(0,0));
+}
+
+MapCenterObj* VymModel::addMapCenter(QPointF absPos)
+{
+       MapCenterObj *mapCenter = new MapCenterObj(mapScene);
+       mapCenter->move (absPos);
+    mapCenter->setVisibility (true);
+       mapCenter->setHeading (QApplication::translate("Heading of mapcenter in new map", "New map"));
+       mapCenter->setMapEditor(mapEditor);             //FIXME needed to get defLinkStyle, mapLinkColorHint ... for later added objects
+       mapCenters.append(mapCenter);
+       return mapCenter;
+}
+
+MapCenterObj *VymModel::removeMapCenter(MapCenterObj* mco)
+{
+       int i=mapCenters.indexOf (mco);
+       if (i>=0)
+       {
+               mapCenters.removeAt (i);
+               delete (mco);
+               if (i>0) return mapCenters.at(i-1);     // Return previous MCO
+       }
+       return NULL;
+}
+
+BranchObj* VymModel::first()
+{
+       if (mapCenters.count()>0) 
+               return mapCenters.first();
+       else    
+               return NULL;
+}
+       
+BranchObj* VymModel::next(BranchObj *bo_start)
+{
+       BranchObj *rbo;
+       BranchObj *bo=bo_start;
+       if (bo)
+       {
+               // Try to find next branch in current MapCenter
+               rbo=bo->next();
+               if (rbo) return rbo;
+
+               // Try to find MapCenter of bo
+               while (bo->getDepth()>0) bo=(BranchObj*)bo->getParObj();
+
+               // Try to find next MapCenter
+               int i=mapCenters.indexOf ((MapCenterObj*)bo);
+               if (i+2 > mapCenters.count() || i<0) return NULL;
+               if (mapCenters.at(i+1)!=bo_start)
+                       return mapCenters.at(i+1);
+       } 
+       return NULL;
+}
+
+LinkableMapObj* VymModel::findMapObj(QPointF p, LinkableMapObj *excludeLMO)
+{
+       LinkableMapObj *lmo;
+
+       for (int i=0;i<mapCenters.count(); i++)
+       {
+               lmo=mapCenters.at(i)->findMapObj (p,excludeLMO);
+               if (lmo) return lmo;
+       }
+       return NULL;
+}
+
+LinkableMapObj* VymModel::findObjBySelect(const QString &s)
+{
+       LinkableMapObj *lmo;
+       if (!s.isEmpty() )
+       {
+               QString part;
+               QString typ;
+               QString num;
+               part=s.section(",",0,0);
+               typ=part.left (2);
+               num=part.right(part.length() - 3);
+               if (typ=="mc" && num.toInt()>=0 && num.toInt() <mapCenters.count() )
+                       return mapCenters.at(num.toInt() );
+       }               
+
+       for (int i=0; i<mapCenters.count(); i++)
+       {
+               lmo=mapCenters.at(i)->findObjBySelect(s);
+               if (lmo) return lmo;
+       }       
+       return NULL;
+}
+
+LinkableMapObj* VymModel::findID (const QString &s)
+{
+       LinkableMapObj *lmo;
+       for (int i=0; i<mapCenters.count(); i++)
+       {
+               lmo=mapCenters.at(i)->findID (s);
+               if (lmo) return lmo;
+       }       
+       return NULL;
+}
+
+QString VymModel::saveToDir (const QString &tmpdir,const QString &prefix, int verbose, const QPointF &offset)
+{
+    QString s;
+
+       for (int i=0; i<mapCenters.count(); i++)
+               s+=mapCenters.at(i)->saveToDir (tmpdir,prefix,verbose,offset);
+    return s;
+}
+
+
+//////////////////////////////////////////////
+// View related
+//////////////////////////////////////////////
+
+void VymModel::updateRelPositions()
+{
+       for (int i=0; i<mapCenters.count(); i++)
+               mapCenters.at(i)->updateRelPositions();
+}
+
+void VymModel::reposition()
+{
+       for (int i=0;i<mapCenters.count(); i++)
+               mapCenters.at(i)->reposition(); //      for positioning heading
+}
+
+QPolygonF VymModel::shape(BranchObj *bo)
+{
+       // Creating (arbitrary) shapes
+
+       QPolygonF p;
+       QRectF rb=bo->getBBox();
+       if (bo->getDepth()==0)
+       {
+               // Just take BBox of this mapCenter
+               p<<rb.topLeft()<<rb.topRight()<<rb.bottomRight()<<rb.bottomLeft();
+               return p;
+       }
+
+       // Take union of BBox and TotalBBox 
+
+       QRectF ra=bo->getTotalBBox();
+       if (bo->getOrientation()==LinkableMapObj::LeftOfCenter)
+               p   <<ra.bottomLeft()
+                       <<ra.topLeft()
+                       <<QPointF (rb.topLeft().x(), ra.topLeft().y() )
+                       <<rb.topRight()
+                       <<rb.bottomRight()
+                       <<QPointF (rb.bottomLeft().x(), ra.bottomLeft().y() ) ;
+       else            
+               p   <<ra.bottomRight()
+                       <<ra.topRight()
+                       <<QPointF (rb.topRight().x(), ra.topRight().y() )
+                       <<rb.topLeft()
+                       <<rb.bottomLeft()
+                       <<QPointF (rb.bottomRight().x(), ra.bottomRight().y() ) ;
+       return p;               
+
+}
+
+void VymModel::moveAway(LinkableMapObj *lmo)
+{
+       // Autolayout:
+       //
+       // Move all branches and MapCenters away from lmo 
+       // to avoid collisions 
+
+       QPolygonF pA;
+       QPolygonF pB;
+
+       BranchObj *boA=(BranchObj*)lmo;
+       BranchObj *boB;
+       for (int i=0; i<mapCenters.count(); i++)
+       {
+               boB=mapCenters.at(i);
+               pA=shape (boA);
+               pB=shape (boB);
+               PolygonCollisionResult r = PolygonCollision(pA, pB, QPoint(0,0));
+               cout <<"------->"
+                       <<"="<<r.intersect
+                       <<"  ("<<qPrintable(boA->getHeading() )<<")"
+                       <<"  with ("<< qPrintable (boB->getHeading() )
+                       <<")  willIntersect"
+                       <<r.willIntersect 
+                       <<"  minT="<<r.minTranslation<<endl<<endl;
+       }
+}
+
+void VymModel::animate()
+{
+       animationTimer->stop();
+       BranchObj *bo;
+       int i=0;
+       while (i<animObjList.size() )
+       {
+               bo=(BranchObj*)animObjList.at(i);
+               if (!bo->animate())
+               {
+                       if (i>=0) animObjList.removeAt(i);
+                       i--;
+               }
+               bo->reposition();
+               i++;
+       } 
+       mapEditor->updateSelection();
+       mapScene->update();
+       if (!animObjList.isEmpty() ) animationTimer->start();
+}
+
+
+void VymModel::startAnimation(const QPointF &start, const QPointF &dest)
+{
+       BranchObj *bo=getSelectedBranch();
+       if (bo && bo->getDepth()>0) 
+       {
+               AnimPoint ap;
+               ap.setStart (start);
+               ap.setDest  (dest);
+               ap.setTicks (animationTicks);
+               ap.setAnimated (true);
+               bo->setAnimation (ap);
+               animObjList.append( bo );
+               animationTimer->setSingleShot (true);
+               animationTimer->start(animationInterval);
+       }
+}
+
+void VymModel::stopAnimation(MapObj *mo)
+{
+       int i=animObjList.indexOf(mo);
+    if (i>=0)
+               animObjList.removeAt (i);
+}
+
+//////////////////////////////////////////////
+// Selection related
+//////////////////////////////////////////////
+
+
+// Only as long as we dont have Model/View yet
+LinkableMapObj* VymModel::getSelection()
+{
+       return mapEditor->getSelection();
+}
+BranchObj* VymModel::getSelectedBranch()
+{
+       return mapEditor->getSelectedBranch();
+}
+
+
+bool VymModel::select (const QString &s)
+{
+       return mapEditor->select (s);
+}
+
+QString VymModel::getSelectString (LinkableMapObj *lmo)
+{
+       QString s;
+       if (!lmo) return s;
+       if (typeid(*lmo)==typeid(BranchObj) ||
+               typeid(*lmo)==typeid(MapCenterObj) )
+       {       
+               LinkableMapObj *par=lmo->getParObj();
+               if (par)
+               {
+                       if (lmo->getDepth() ==1)
+                               // Mainbranch, return 
+                               s= "bo:" + QString("%1").arg(((BranchObj*)lmo)->getNum());
+                       else    
+                               // Branch, call myself recursively
+                               s= getSelectString(par) + ",bo:" + QString("%1").arg(((BranchObj*)lmo)->getNum());
+               } else
+               {
+                       // MapCenter
+                       int i=mapCenters.indexOf ((MapCenterObj*)lmo);
+                       if (i>=0) s=QString("mc:%1").arg(i);
+               }       
+       }       
+       return s;
+
+}
+
+       
+void VymModel::setHideTmp (HideTmpMode mode)
+{
+       for (int i=0;i<mapCenters.count(); i++)
+               mapCenters.at(i)->setHideTmp (mode);    
+}
+
+QRectF VymModel::getTotalBBox()
+{
+       QRectF r;
+       for (int i=0;i<mapCenters.count(); i++)
+               r=addBBox (mapCenters.at(i)->getTotalBBox(), r);
+       return r;       
+}
+
diff --git a/vymmodel.h b/vymmodel.h
new file mode 100644 (file)
index 0000000..1b1409a
--- /dev/null
@@ -0,0 +1,86 @@
+#ifndef VYMMODEL_H
+#define VYMMODEL_H
+
+#include <QGraphicsScene>
+
+#include "mapcenterobj.h"
+#include "mapeditor.h"
+
+
+/*! \brief This will later be divided into Model/View
+*/
+
+class VymModel : public QObject{
+       Q_OBJECT
+
+public:
+       VymModel();
+       ~VymModel ();
+    void clear();
+    void init();
+       void setMapEditor(MapEditor *me);       // FIXME should not be necessary in Model/View
+       MapEditor* getMapEditor();
+       void setVersion(const  QString &);
+       void setAuthor  (const QString &);
+       QString getAuthor ();
+       void setComment (const QString &);
+       QString getComment ();
+       QString getDate();
+       void setScene(QGraphicsScene *s);
+       QGraphicsScene *getScene();
+       MapCenterObj* addMapCenter();
+       MapCenterObj* addMapCenter(QPointF absPos);
+       MapCenterObj* removeMapCenter(MapCenterObj *mco);
+
+       BranchObj* first();                                     // FIXME replaced by ModelIndex later
+       BranchObj* next(BranchObj *bo);         // FIXME replaced by ModelIndex later
+
+    LinkableMapObj* findMapObj(QPointF,LinkableMapObj*);       // find MapObj 
+    LinkableMapObj* findObjBySelect (const QString &s);                // find MapObj by select string
+    LinkableMapObj* findID (const QString &s);                         // find MapObj by previously set ID
+       QString saveToDir (const QString&,const QString&,int, const QPointF&);// Save data recursivly to tempdir
+
+
+////////////////////////////////////////// View related
+    // void updateLink();  FIXME needed?
+    void updateRelPositions();
+
+       QRectF getTotalBBox();
+       void reposition();                                      //!< Call reposition for all MCOs
+       void setHideTmp (HideTmpMode mode);     
+       QPolygonF shape(BranchObj *bo);         //!< Returns arbitrary shape of subtree
+       void moveAway (LinkableMapObj *lmo);//!< Autolayout: Move all out of the way
+
+       // Animation  **experimental**
+private slots:
+       void animate();                                         //!< Called by timer to animate stuff
+public:
+       void startAnimation (const QPointF &start, const QPointF &dest);
+       void stopAnimation  (MapObj *mo);
+private:       
+       QTimer *animationTimer;
+       bool animationUse;
+       uint animationTicks;
+       uint animationInterval;
+       int timerId;                            // animation timer
+       QList <MapObj*> animObjList;// list with animated objects
+
+////////////////////////////////////////// Selection related 
+public:
+       LinkableMapObj* getSelection();
+       BranchObj* getSelectedBranch();
+       bool select (const QString &s);
+       QString getSelectString (LinkableMapObj *lmo);
+
+private:
+       QGraphicsScene *mapScene;
+       MapEditor *mapEditor;
+       QList <MapCenterObj*> mapCenters;
+       QString version;        //!< version string saved in vym file
+       QString author;
+       QString comment;
+       QDate date;
+};
+
+
+#endif
diff --git a/warningdialog.cpp b/warningdialog.cpp
new file mode 100644 (file)
index 0000000..2ab431d
--- /dev/null
@@ -0,0 +1,63 @@
+#include "warningdialog.h"
+#include "settings.h"
+
+extern QString iconPath;
+extern Settings settings;
+
+WarningDialog::WarningDialog(QWidget* parent):QDialog (parent)
+{
+    ui.setupUi(this);
+       //TODO proper icon for proceed needed
+       ui.okButton->setText(tr("Proceed"));
+       /*
+       ui.warningSign->setPixmap (QPixmap(iconPath + "icons/vym.png"));
+       */
+       ui.showAgainBox->setText (tr("Show this message again"));
+       useShowAgain=false;
+       ui.showAgainBox->hide();
+}
+
+int WarningDialog::exec()
+{
+       int result; 
+       if (settings.value ("/warningDialog/"+showAgainName+"/showAgain",true).toBool()  )
+       {
+               result=QDialog::exec();
+               if (result==QDialog::Accepted )
+               {
+                       settings.setValue ("/warningDialog/"+showAgainName+"/value",result);
+                       settings.setValue ("/warningDialog/"+showAgainName+"/showAgain",ui.showAgainBox->isChecked() );
+               }
+       } else
+       {
+               result=settings.value ("/warningDialog/"+showAgainName+"/value",0).toInt();
+       }
+       return result;
+}
+
+void WarningDialog::showCancelButton (bool b)
+{
+       if (b)
+       {
+               ui.cancelButton->show();
+               ui.cancelButton->setText(tr("Cancel"));
+       } else
+               ui.cancelButton->hide();
+}
+
+void WarningDialog::setShowAgainName (const QString &s) 
+{
+       showAgainName=s;
+       useShowAgain=true;
+       ui.showAgainBox->show();
+}
+
+void WarningDialog::setText (const QString &s)
+{
+       ui.warningTE->setText(s);
+}
+
+void WarningDialog::setCaption(const QString &s)
+{
+       QDialog::setCaption("VYM - "+s);
+}
diff --git a/warningdialog.h b/warningdialog.h
new file mode 100644 (file)
index 0000000..b4e9287
--- /dev/null
@@ -0,0 +1,28 @@
+#ifndef WARNINGDIALOG_H
+#define WARNINGDIALOG_H
+
+#include "ui_warningdialog.h"
+
+class WarningDialog : public QDialog
+{
+    Q_OBJECT
+
+public:
+    WarningDialog(QWidget* parent = 0);
+       int exec();
+
+public slots:
+    virtual void showCancelButton( bool b );
+    virtual void setShowAgainName( const QString & s );
+    virtual void setText( const QString & s );
+    virtual void setCaption( const QString & s );
+
+private:
+    void init();
+    bool useShowAgain;
+    QString showAgainName;
+       Ui::WarningDialog ui;
+
+};
+
+#endif // WARNINGDIALOG_H
diff --git a/warningdialog.ui b/warningdialog.ui
new file mode 100644 (file)
index 0000000..f073351
--- /dev/null
@@ -0,0 +1,184 @@
+<ui version="4.0" >
+ <class>WarningDialog</class>
+ <widget class="QDialog" name="WarningDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>543</width>
+    <height>264</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>VYM - Warning : Foo...</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <property name="margin" >
+    <number>9</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item>
+    <widget class="QTextEdit" name="warningTE" >
+     <property name="palette" >
+      <palette>
+       <active>
+        <colorrole role="Base" >
+         <brush brushstyle="SolidPattern" >
+          <color alpha="255" >
+           <red>238</red>
+           <green>238</green>
+           <blue>238</blue>
+          </color>
+         </brush>
+        </colorrole>
+       </active>
+       <inactive>
+        <colorrole role="Base" >
+         <brush brushstyle="SolidPattern" >
+          <color alpha="255" >
+           <red>238</red>
+           <green>238</green>
+           <blue>238</blue>
+          </color>
+         </brush>
+        </colorrole>
+       </inactive>
+       <disabled>
+        <colorrole role="Base" >
+         <brush brushstyle="SolidPattern" >
+          <color alpha="255" >
+           <red>238</red>
+           <green>238</green>
+           <blue>238</blue>
+          </color>
+         </brush>
+        </colorrole>
+       </disabled>
+      </palette>
+     </property>
+     <property name="frameShape" >
+      <enum>QFrame::NoFrame</enum>
+     </property>
+     <property name="frameShadow" >
+      <enum>QFrame::Plain</enum>
+     </property>
+     <property name="readOnly" >
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="warningSign" >
+     <property name="text" >
+      <string/>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeType" >
+      <enum>QSizePolicy::Expanding</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>525</width>
+       <height>16</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <widget class="QCheckBox" name="showAgainBox" >
+       <property name="text" >
+        <string>showAgainBox</string>
+       </property>
+       <property name="checked" >
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType" >
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>73</width>
+         <height>31</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="cancelButton" >
+       <property name="text" >
+        <string>Cancel</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="okButton" >
+       <property name="text" >
+        <string>Ok</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11" />
+ <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>cancelButton</sender>
+   <signal>clicked()</signal>
+   <receiver>WarningDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>131</x>
+     <y>244</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>266</x>
+     <y>135</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>okButton</sender>
+   <signal>clicked()</signal>
+   <receiver>WarningDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>222</x>
+     <y>244</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>266</x>
+     <y>135</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/xlinkobj.cpp b/xlinkobj.cpp
new file mode 100644 (file)
index 0000000..e8410c0
--- /dev/null
@@ -0,0 +1,301 @@
+#include "xlinkobj.h"
+#include "branchobj.h"
+
+
+/////////////////////////////////////////////////////////////////
+// XLinkObj
+/////////////////////////////////////////////////////////////////
+
+int XLinkObj::arrowSize=10;                                            // make instances 
+
+XLinkObj::XLinkObj ():MapObj() 
+{
+       //      cout << "Const XLinkObj ()\n";
+       init();
+}
+
+XLinkObj::XLinkObj (QGraphicsScene* s):MapObj(s)
+{
+       //      cout << "Const XLinkObj (s)  called from MapCenterObj (s)\n";
+       init();
+}
+
+
+XLinkObj::~XLinkObj ()
+{
+//     cout << "Destr XLinkObj\n";
+       if (xLinkState!=undefinedXLink)
+               deactivate();
+       delete (line);
+       delete (poly);
+}
+
+
+void XLinkObj::init () 
+{
+       beginBranch=NULL;
+       endBranch=NULL;
+       visBranch=NULL;
+       xLinkState=undefinedXLink;
+
+       color=QColor (180,180,180);
+       width=1;
+       pen.setColor (color);
+       pen.setWidth (width);
+       pen.setCapStyle (  Qt::RoundCap );
+       line=scene->addLine(QLineF(1,1,1,1),pen);
+    line->setZValue (Z_XLINK);
+       poly=scene->addPolygon(QPolygonF(),pen,color);
+    poly->setZValue (Z_XLINK);
+       setVisibility (false);
+}
+
+void XLinkObj::copy (XLinkObj* other)
+{
+       // TODO copy not used yet
+       MapObj::copy (other);
+       setVisibility (other->visible);
+       beginBranch=other->beginBranch;
+       endBranch=other->endBranch;
+       width=other->width;
+
+}
+
+void XLinkObj::setBegin (BranchObj *bo)
+{
+       if (bo) 
+       {
+               xLinkState=initXLink;
+               beginBranch=bo;
+               beginPos=beginBranch->getChildPos();
+       }       
+}
+
+BranchObj* XLinkObj::getBegin ()
+{
+       return beginBranch;
+}
+
+void XLinkObj::setEnd (BranchObj *bo)
+{
+       if (bo) 
+       {
+               xLinkState=initXLink;
+               endBranch=bo;
+               endPos=endBranch->getChildPos();
+       }               
+}
+
+BranchObj* XLinkObj::getEnd()
+{
+       return endBranch;
+}
+
+void XLinkObj::setWidth (int w)
+{
+       width=w;
+       pen.setWidth (w);
+       setColor (color);
+}
+
+int XLinkObj::getWidth()
+{
+       return pen.width();
+}
+
+void XLinkObj::setColor(QColor c)
+{
+       color=c;
+       pen.setColor (c);
+       line->setPen (pen);
+       poly->setBrush( color );
+}
+
+QColor XLinkObj::getColor()
+{
+       return pen.color();
+}
+
+void XLinkObj::setEnd (QPointF p)
+{
+       endPos=p;
+}
+
+bool XLinkObj::activate ()
+{
+       if (beginBranch && endBranch)
+       {
+               if (beginBranch==endBranch) return false;
+               xLinkState=activeXLink;
+               beginBranch->addXLink (this);
+               endBranch->addXLink (this);
+               setVisibility ();
+               return true;
+       } else
+               return false;
+}
+
+void XLinkObj::deactivate ()
+{
+       if (beginBranch)
+               beginBranch->removeXLinkRef (this);
+       beginBranch=NULL;       
+       if (endBranch)
+               endBranch->removeXLinkRef (this);
+       endBranch=NULL; 
+       visBranch=NULL;
+       xLinkState=undefinedXLink;
+
+       line->hide();
+}
+
+bool XLinkObj::isUsed()
+{
+       if (beginBranch || endBranch || xLinkState!=undefinedXLink)
+               return true;
+       else
+               return false;
+}
+
+void XLinkObj::updateXLink()
+{
+       QPointF a,b;
+       QPolygonF pa;
+       if (visBranch)
+       {
+               // Only one of the linked branches is visible
+               a=b=visBranch->getChildPos();
+               if (visBranch->getOrientation()==LinkableMapObj::RightOfCenter)
+               {
+                       b.setX (b.x()+25);
+                       
+                       pa.clear();
+                       pa<< QPointF(b.x(),b.y())<<
+                               QPointF(b.x()-arrowSize,b.y()-arrowSize)<<
+                               QPointF(b.x()-arrowSize,b.y()+arrowSize);
+                       poly->setPolygon(pa);
+               } else
+               {
+                       b.setX (b.x()-25);
+                       pa.clear();
+                       pa<< QPointF(b.x(),b.y())<<
+                               QPointF(b.x()+arrowSize,b.y()-arrowSize)<<
+                               QPointF(b.x()+arrowSize,b.y()+arrowSize);
+                       poly->setPolygon (pa);
+               }       
+       } else
+       {
+               // Both linked branches are visible
+               if (beginBranch)
+                       // If a link is just drawn in the editor,
+                       // we have already a beginBranch
+                       a=beginBranch->getChildPos();
+               else
+                       // This shouldn't be reached normally...
+                       a=beginPos;
+               if (xLinkState==activeXLink && endBranch)
+                       b=endBranch->getChildPos();
+               else
+                       b=endPos;
+       }
+
+
+       if (line->line().p1()==a && line->line().p2()==b && !visBranch)
+       {
+               // update is called from both branches, so only
+               // update if something has changed
+               return;
+       }       
+       else
+       {
+               beginPos=a;
+               endPos=b;
+               line->setPen (pen);
+               line->setLine(a.x(), a.y(), b.x(), b.y());
+       }
+}
+
+BranchObj* XLinkObj::otherBranch(BranchObj* thisBranch)
+{
+       if (!beginBranch && !endBranch)
+               return NULL;
+       if (thisBranch==beginBranch)
+               return endBranch;
+       else    
+               return beginBranch;
+}
+
+void XLinkObj::positionBBox()
+{
+}
+
+void XLinkObj::calcBBoxSize()
+{
+}
+
+void XLinkObj::setVisibility (bool b)
+{
+       MapObj::setVisibility (b);
+       if (b)
+       {
+               line->show();
+               if (visBranch) 
+                       poly->show();
+               else    
+                       poly->hide();
+       }       
+       else
+       {
+               line->hide();
+               poly->hide();
+       }       
+}
+
+void XLinkObj::setVisibility ()
+{
+       if (beginBranch && endBranch)
+       {
+               if(beginBranch->isVisibleObj() && endBranch->isVisibleObj())
+               {       // Both ends are visible
+                       visBranch=NULL;
+                       setVisibility (true);
+               } else
+               {
+                       if(!beginBranch->isVisibleObj() && !endBranch->isVisibleObj())
+                       {       //None of the ends is visible
+                               visBranch=NULL;
+                               setVisibility (false);
+                       } else
+                       {       // Just one end is visible, draw a symbol that shows
+                               // that there is a link to a scrolled branch
+                               if (beginBranch->isVisibleObj())
+                                       visBranch=beginBranch;
+                               else
+                                       visBranch=endBranch;
+                               setVisibility (true);
+                       }
+               }
+       }
+}
+
+QString XLinkObj::saveToDir ()
+{
+       QString s="";
+       if (beginBranch && endBranch &&xLinkState==activeXLink)
+       {
+               if (beginBranch==endBranch && xLinkState)
+                       s="";
+               else
+               {
+                       QString colAttr=attribut ("color",color.name());
+                       QString widAttr=attribut ("width",QString().setNum(width,10));
+                       QString begSelAttr=attribut ("beginID",beginBranch->getSelectString());
+                       QString endSelAttr=attribut ("endID",  endBranch->getSelectString());
+                       s=beginElement ("xlink", colAttr +widAttr +begSelAttr +endSelAttr);
+
+                       s+=endElement ("xlink");
+               }
+       }
+       return s;
+}
+
diff --git a/xlinkobj.h b/xlinkobj.h
new file mode 100644 (file)
index 0000000..029b510
--- /dev/null
@@ -0,0 +1,55 @@
+#ifndef XLINKOBJ_H
+#define XLINKOBJ_H
+
+#include "linkablemapobj.h"
+
+class BranchObj;
+
+enum XLinkState {undefinedXLink,initXLink,activeXLink,deleteXLink};
+
+/*! \brief xlinks are used to draw arbitrary connections between branches (BranchObj) in the map. */
+
+/////////////////////////////////////////////////////////////////////////////
+class XLinkObj:public MapObj {
+public:
+    XLinkObj ();
+    XLinkObj (QGraphicsScene*);
+    ~XLinkObj ();
+    virtual void init ();
+    virtual void copy (XLinkObj*);
+       void setBegin (BranchObj*);
+       BranchObj* getBegin();
+       void setEnd   (BranchObj*);
+       void setEnd   (QPointF);
+       BranchObj* getEnd();
+       void setColor(QColor);
+       QColor getColor();
+       void setWidth (int);
+       int getWidth ();
+       bool activate ();                       // Sets pointers in branchObjects
+       void deactivate();                      // removes those pointers
+       bool isUsed();                          // true, if at least on branch uses it
+       void updateXLink();
+       BranchObj* otherBranch (BranchObj*);
+       void positionBBox();
+       void calcBBoxSize();
+       void setVisibility (bool);
+       void setVisibility ();
+       QString saveToDir ();
+
+private:
+       static int arrowSize;
+       QPen pen;
+       QColor color;
+       int width;
+       QGraphicsLineItem *line;
+       QGraphicsPolygonItem *poly;
+       BranchObj *beginBranch;
+       BranchObj *endBranch;
+       BranchObj *visBranch;   // the "visible" part of a partially scrolled link
+       XLinkState xLinkState;  // init during drawing or active
+       QPointF beginPos;
+       QPointF   endPos;
+};
+
+#endif
diff --git a/xml-base.cpp b/xml-base.cpp
new file mode 100644 (file)
index 0000000..88017cb
--- /dev/null
@@ -0,0 +1,106 @@
+#include "xml-base.h"
+
+#include <QMessageBox>
+#include <QColor>
+#include <QTextStream>
+#include <iostream>
+
+#include "misc.h"
+#include "settings.h"
+#include "linkablemapobj.h"
+
+/*
+static BranchObj *lastBranch;
+static FloatObj *lastFloat;
+static OrnamentedObj *lastOO;
+
+extern Settings settings;
+extern QString vymVersion;
+*/
+
+parseBaseHandler::parseBaseHandler() {}
+
+parseBaseHandler::~parseBaseHandler() {}
+
+QString parseBaseHandler::errorProtocol() { return errorProt; }
+
+
+/*
+bool parseBaseHandler::startDocument()
+{
+    errorProt = "";
+    state = StateInit;
+    laststate = StateInit;
+       stateStack.clear();
+       stateStack.append(StateInit);
+    branchDepth=0;
+       htmldata="";
+       isVymPart=false;
+    return true;
+}
+*/
+
+QString parseBaseHandler::parseHREF(QString href)
+{
+       QString type=href.section(":",0,0);
+       QString path=href.section(":",1,1);
+       if (!tmpDir.endsWith("/"))
+               return tmpDir + "/" + path;
+       else    
+               return tmpDir + path;
+}
+
+
+/*
+QString parseBaseHandler::errorString() 
+{
+    return "the document is not in the VYM file format";
+}
+*/
+
+bool parseBaseHandler::fatalError( const QXmlParseException& exception ) 
+{
+    errorProt += QString( "Fatal parsing error: %1 in line %2, column %3\n")
+    .arg( exception.message() )
+    .arg( exception.lineNumber() )
+    .arg( exception.columnNumber() );
+       // Try to read the bogus line
+       errorProt+=QString("File is: %1\n").arg(inputFile);
+       QString s;
+       if (loadStringFromDisk (inputFile,s))
+       {
+               QStringList sl=QStringList::split ("\n",s);
+               int i=1;
+               QStringList::Iterator it = sl.begin();
+               while (i<exception.lineNumber()-1)
+               {
+                       it++;
+                       i++;
+               }
+               s=*it;
+               s.insert (exception.columnNumber()-1,"<ERROR>");
+               errorProt+=s;
+    }
+    return QXmlDefaultHandler::fatalError( exception );
+}
+
+void parseBaseHandler::setModel (VymModel *m)
+{
+       model=m;
+}
+
+void parseBaseHandler::setTmpDir (QString tp)
+{
+       tmpDir=tp;
+}
+
+void parseBaseHandler::setInputFile (QString f)
+{
+       inputFile=f;
+}
+
+void parseBaseHandler::setLoadMode (const LoadMode &lm)
+{
+       loadMode=lm;
+}
+
diff --git a/xml-base.h b/xml-base.h
new file mode 100644 (file)
index 0000000..f1b0151
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef XML_BASE
+#define XML_BASE
+
+
+#include <QString>
+#include <QXmlAttributes>
+
+#include "file.h"
+#include "mapcenterobj.h"
+#include "mapeditor.h"
+#include "vymmodel.h"
+
+
+/*! \brief Base class for parsing maps from XML documents */
+
+class parseBaseHandler  : public QXmlDefaultHandler
+{
+public:
+       parseBaseHandler();
+       ~parseBaseHandler();
+       QString errorProtocol();
+       QString parseHREF(QString);
+       virtual bool startElement ( const QString&, const QString&,
+                        const QString& eName, const QXmlAttributes& atts )=0; 
+       virtual bool   endElement ( const QString&, const QString&, const QString& )=0; 
+       virtual bool characters   ( const QString&)=0;
+
+       virtual QString errorString()=0;
+       bool fatalError( const QXmlParseException&);
+       void setModel (VymModel *);
+       void setTmpDir (QString);
+       void setInputFile (QString);
+       void setLoadMode (const LoadMode &);
+
+protected:
+       QString     errorProt;
+
+       LoadMode loadMode;
+       bool isVymPart;
+//     State state;                     
+//     State laststate;
+//     QList <State> stateStack;
+//     QString htmldata;
+       int branchDepth; 
+//     NoteObj no;
+       VymModel *model;
+       QString tmpDir; 
+       QString inputFile;
+}; 
+#endif
diff --git a/xml-freemind.cpp b/xml-freemind.cpp
new file mode 100644 (file)
index 0000000..6f0271f
--- /dev/null
@@ -0,0 +1,275 @@
+#include "xml-freemind.h"
+
+#include <QMessageBox>
+#include <QColor>
+#include <QTextStream>
+#include <iostream>
+
+#include "misc.h"
+#include "settings.h"
+#include "linkablemapobj.h"
+#include "version.h"
+
+static BranchObj *lastBranch;
+//static FloatObj *lastFloat;
+static OrnamentedObj *lastOO;
+
+extern Settings settings;
+extern QString vymVersion;
+
+extern QString flagsPath;
+
+bool parseFreemindHandler::startDocument()
+{
+    errorProt = "";
+    state = StateInit;
+    laststate = StateInit;
+       stateStack.clear();
+       stateStack.append(StateInit);
+       isVymPart=false;
+    return true;
+}
+
+
+QString parseFreemindHandler::parseHREF(QString href)
+{
+       QString type=href.section(":",0,0);
+       QString path=href.section(":",1,1);
+       if (!tmpDir.endsWith("/"))
+               return tmpDir + "/" + path;
+       else    
+               return tmpDir + path;
+}
+
+bool parseFreemindHandler::startElement  ( const QString&, const QString&,
+                    const QString& eName, const QXmlAttributes& atts ) 
+{
+    QColor col;
+       /* Testing
+       cout << "startElement <"<< qPrintable(eName)
+               <<">  state="<<state 
+               <<"  laststate="<<stateStack.last()
+               <<"   loadMode="<<loadMode
+       //      <<"       line="<<qPrintable (QXmlDefaultHandler::lineNumber())
+               <<endl;
+       */      
+       stateStack.append (state);      
+    if ( state == StateInit && (eName == "map")  ) 
+       {
+        state = StateMap;
+               if (!atts.value( "version").isEmpty() ) 
+               {
+                       QString v="0.8.0";
+                       if (!checkVersion(atts.value("version"),v))
+                               QMessageBox::warning( 0, "Warning: Version Problem" ,
+                                  "<h3>Freemind map is newer than version " +v +" </h3>"
+                                  "<p>The map you are just trying to load was "
+                                  "saved using freemind " +atts.value("version")+". "
+                                  "The version of this vym can parse freemind " + v +"."); 
+               }
+               cout <<"model="<<model<<"   first="<<model->first()<<endl;
+               model->first()->addBranch();
+               lastBranch=model->first()->getLastBranch();
+               lastBranch->move2RelPos (200,0);
+               lastBranch->setHeading ("  ");
+               model->first()->addBranch();
+               lastBranch=model->first()->getLastBranch();
+               lastBranch->move2RelPos (-200,0);
+               lastBranch->setHeading ("  ");
+               lastBranch=model->first();
+
+       } else if ( eName == "node" &&  (state == StateMap || state == StateNode )) 
+       {
+               if (!atts.value( "POSITION").isEmpty() )
+               {
+                       if (atts.value ("POSITION")=="left")
+                       {
+                               model->select ("bo:1");
+                               lastBranch=model->getSelectedBranch();
+                               if (lastBranch)
+                               {
+                                       lastBranch->addBranch();
+                                       lastBranch=lastBranch->getLastBranch();
+                                       readNodeAttr (atts);
+                               }       
+                       } else if (atts.value ("POSITION")=="right")
+                       {
+                               model->select ("bo:0");
+                               lastBranch=model->getSelectedBranch();
+                               if (lastBranch)
+                               {
+                                       lastBranch->addBranch();
+                                       lastBranch=lastBranch->getLastBranch();
+                                       readNodeAttr (atts);
+                               }       
+                       }
+               } else
+               {
+                       if (state!=StateMap)
+                       {
+                               lastBranch->addBranch();
+                               lastBranch=lastBranch->getLastBranch();
+                       }
+                       readNodeAttr (atts);
+               }
+               state=StateNode;
+       } else if ( eName == "font" && state == StateNode) 
+       {
+               state=StateFont;
+       } else if ( eName == "edge" && state == StateNode) 
+       {
+               state=StateEdge;
+       } else if ( eName == "hook" && state == StateNode) 
+       {
+               state=StateHook;
+       } else if ( eName == "icon" && state == StateNode) 
+       {
+               state=StateIcon;
+               if (!atts.value("BUILTIN").isEmpty() )
+               {
+                       QString f=atts.value("BUILTIN");
+                       QString v;
+                       if (f=="help")
+                               v="questionmark";
+                       else if (f=="messagebox_warning")
+                               v="freemind-warning"; 
+                       else if (f=="idea")
+                               v="lamp"; 
+                       else if (f=="button_ok")
+                               v="hook-green"; 
+                       else if (f=="button_cancel")
+                               v="cross-red"; 
+                       else if (f.contains("full-"))
+                               v=f.replace("full-","freemind-priority-"); 
+                       else if (f=="back")
+                               v="freemind-back"; 
+                       else if (f=="forward")
+                               v="freemind-forward"; 
+                       else if (f=="attach")
+                               v="freemind-attach"; 
+                       else if (f=="ksmiletris")
+                               v="smiley-good"; // 
+                       else if (f=="clanbomber")
+                               v="freemind-clanbomber"; 
+                       else if (f=="desktop_new")
+                               v="freemind-desktopnew"; 
+                       else if (f=="flag")
+                               v="freemind-flag"; 
+                       else if (f=="gohome")
+                               v="freemind-gohome"; 
+                       else if (f=="kaddressbook")
+                               v="freemind-kaddressbook"; 
+                       else if (f=="knotify")
+                               v="freemind-knotify"; 
+                       else if (f=="korn")
+                               v="freemind-korn";
+                       else if (f=="Mail")
+                               v="freemind-mail"; 
+                       else if (f=="password")
+                               v="freemind-password"; 
+                       else if (f=="pencil")
+                               v="freemind-pencil";
+                       else if (f=="stop")
+                               v="freemind-stop"; 
+                       else if (f=="wizard")
+                               v="freemind-wizard";
+                       else if (f=="xmag")
+                               v="freemind-xmag";
+                       else if (f=="bell")
+                               v="freemind-bell";
+                       else if (f=="bookmark")
+                               v="freemind-bookmark"; 
+                       else if (f=="penguin")
+                               v="freemind-penguin"; 
+                       else if (f=="licq")
+                               v="freemind-licq"; 
+
+                       lastBranch->activateStandardFlag( v);
+               }
+       } else if ( eName == "arrowlink" && state == StateNode) 
+       {
+               state=StateArrowLink;
+       } else if ( eName == "cloud" && state == StateNode) 
+       {
+               state=StateCloud;
+       } else if ( eName == "text" && state == StateHook) 
+       {
+               state=StateText;
+       } else 
+        return false;   // Error
+    return true;
+}
+
+bool parseFreemindHandler::endElement  ( const QString&, const QString&, const QString&)
+{
+       /* Testing
+       cout << "endElement </" <<qPrintable(eName)
+               <<">  state=" <<state 
+               <<"  laststate=" <<laststate
+               <<"  stateStack="<<stateStack.last() 
+               <<endl;
+       */
+    switch ( state ) 
+       {
+        case StateNode: 
+                       lastBranch=(BranchObj*)(lastBranch->getParObj());
+            break;
+               default: 
+                       break;
+    }  
+       state=stateStack.takeLast();    
+       return true;
+}
+
+bool parseFreemindHandler::characters   ( const QString& ch)
+{
+       //cout << "characters \""<<qPrintable(ch)<<"\"  state="<<state <<"  laststate="<<laststate<<endl;
+
+       QString ch_org=quotemeta (ch);
+    QString ch_simplified=ch.simplifyWhiteSpace();
+    if ( ch_simplified.isEmpty() ) return true;
+
+    switch ( state ) 
+    {
+        case StateInit: break;
+        case StateMap: break; 
+        case StateNode: break; 
+        case StateCloud: break; 
+        case StateEdge: break; 
+        case StateIcon: break; 
+        case StateArrowLink: break; 
+        case StateFont: break; 
+        case StateHook: break; 
+        case StateText: 
+                       lastBranch->setNote (ch_simplified);
+                       break; 
+        default: 
+                       return false;
+    }
+    return true;
+}
+
+QString parseFreemindHandler::errorString() 
+{
+    return "the document is not in the Freemind file format";
+}
+
+bool parseFreemindHandler::readNodeAttr (const QXmlAttributes& a)
+{
+       lastOO=lastBranch;
+
+       if (a.value( "FOLDED")=="true" )
+               lastBranch->toggleScroll();
+       if (!a.value( "TEXT").isEmpty() )
+               lastBranch->setHeading (a.value ("TEXT"));
+
+       if (!a.value( "COLOR").isEmpty() )
+               lastBranch->setColor (QColor (a.value ("COLOR")));
+
+       if (!a.value( "LINK").isEmpty() )
+               lastBranch->setURL (a.value ("LINK"));
+
+       return true;    
+}
+
+
diff --git a/xml-freemind.h b/xml-freemind.h
new file mode 100644 (file)
index 0000000..5e7338b
--- /dev/null
@@ -0,0 +1,41 @@
+#ifndef XML_FREEMIND_H
+#define XML_FREEMIND_H
+
+#include "xml-base.h"
+
+
+/*! \brief Parsing Freemind maps from XML documents */
+
+class parseFreemindHandler  : public parseBaseHandler
+{
+public:
+       bool startDocument();
+       QString parseHREF(QString);
+       bool startElement ( const QString&, const QString&,
+                        const QString& eName, const QXmlAttributes& atts ); 
+       bool   endElement ( const QString&, const QString&, const QString& ); 
+       bool characters   ( const QString&);
+       QString errorString();
+       bool readNodeAttr (const QXmlAttributes&);
+
+private:
+       QString     errorProt;
+       enum State 
+       { 
+               StateInit, 
+               StateMap, 
+               StateNode, 
+               StateCloud,
+               StateEdge, 
+               StateIcon, 
+               StateFont,
+               StateArrowLink,
+               StateHook,
+               StateText
+        };
+                                
+       State state;                     
+       State laststate;
+       QList <State> stateStack;
+}; 
+#endif
diff --git a/xml-vym.cpp b/xml-vym.cpp
new file mode 100644 (file)
index 0000000..4de1695
--- /dev/null
@@ -0,0 +1,637 @@
+#include "xml-vym.h"
+
+#include <QMessageBox>
+#include <QColor>
+#include <QTextStream>
+#include <iostream>
+#include <typeinfo>
+
+#include "misc.h"
+#include "settings.h"
+#include "linkablemapobj.h"
+#include "version.h"
+
+static BranchObj *lastBranch;
+static FloatObj *lastFloat;
+static OrnamentedObj *lastOO;
+
+extern Settings settings;
+extern QString vymVersion;
+
+/*
+parseVYMHandler::parseVYMHandler() {}
+
+parseVYMHandler::~parseVYMHandler() {}
+
+QString parseVYMHandler::errorProtocol() { return errorProt; }
+
+*/
+
+bool parseVYMHandler::startDocument()
+{
+    errorProt = "";
+    state = StateInit;
+    laststate = StateInit;
+       stateStack.clear();
+       stateStack.append(StateInit);
+       htmldata="";
+       isVymPart=false;
+    return true;
+}
+
+
+/*
+QString parseVYMHandler::parseHREF(QString href)
+{
+       QString type=href.section(":",0,0);
+       QString path=href.section(":",1,1);
+       if (!tmpDir.endsWith("/"))
+               return tmpDir + "/" + path;
+       else    
+               return tmpDir + path;
+}
+*/
+bool parseVYMHandler::startElement  ( const QString&, const QString&,
+                    const QString& eName, const QXmlAttributes& atts ) 
+{
+    QColor col;
+       /* Testing
+       cout << "startElement <"<< qPrintable(eName)
+               <<">  state="<<state 
+               <<"  laststate="<<stateStack.last()
+               <<"   loadMode="<<loadMode
+               <<"       line="<<QXmlDefaultHandler::lineNumber()
+               <<endl;
+       */      
+       stateStack.append (state);      
+    if ( state == StateInit && (eName == "vymmap")  ) 
+       {
+        state = StateMap;
+
+               if (loadMode==NewMap)
+                       model->clear(); // remove existing mapCenter
+
+               // Check version
+               if (!atts.value( "version").isEmpty() ) 
+               {
+                       if (!checkVersion(atts.value("version")))
+                               QMessageBox::warning( 0, "Warning: Version Problem" ,
+                                  "<h3>Map is newer than VYM</h3>"
+                                  "<p>The map you are just trying to load was "
+                                  "saved using vym " +atts.value("version")+". "
+                                  "The version of this vym is " + vymVersion + 
+                                  ". If you run into problems after pressing "
+                                  "the ok-button below, updating vym should help.");
+                       else       
+                               model->setVersion(atts.value( "version" ));
+
+               }
+
+               if (loadMode==NewMap )
+               {
+                       // Create mapCenter
+                       model->clear();
+                       lastBranch=model->first();      // avoid empty pointer
+
+                       if (!atts.value( "author").isEmpty() )
+                               model->setAuthor(atts.value( "author" ) );
+                       if (!atts.value( "comment").isEmpty() )
+                               model->setComment (atts.value( "comment" ) );
+                       if (!atts.value( "backgroundColor").isEmpty() )
+                       {
+                               col.setNamedColor(atts.value("backgroundColor"));
+                               model->getScene()->setBackgroundBrush(col);
+                       }           
+                       if (!atts.value( "selectionColor").isEmpty() )
+                       {
+                               col.setNamedColor(atts.value("selectionColor"));
+                               model->getMapEditor()->setSelectionColor(col);
+                       }           
+                       if (!atts.value( "linkColorHint").isEmpty() ) 
+                       {
+                               if (atts.value("linkColorHint")=="HeadingColor")
+                                       model->getMapEditor()->setMapLinkColorHint(LinkableMapObj::HeadingColor);
+                               else
+                                       model->getMapEditor()->setMapLinkColorHint(LinkableMapObj::DefaultColor);
+                       }
+                       if (!atts.value( "linkStyle").isEmpty() ) 
+                               model->getMapEditor()->setMapLinkStyle(atts.value("linkStyle"));
+                       if (!atts.value( "linkColor").isEmpty() ) 
+                       {
+                               col.setNamedColor(atts.value("linkColor"));
+                               model->getMapEditor()->setMapDefLinkColor(col);
+                       }       
+                       if (!atts.value( "defXLinkColor").isEmpty() ) 
+                       {
+                               col.setNamedColor(atts.value("defXLinkColor"));
+                               model->getMapEditor()->setMapDefXLinkColor(col);
+                       }       
+                       if (!atts.value( "defXLinkWidth").isEmpty() ) 
+                               model->getMapEditor()->setMapDefXLinkWidth(atts.value("defXLinkWidth").toInt ());
+               }       
+       } else if ( eName == "select" && state == StateMap ) 
+       {
+               state=StateMapSelect;
+       } else if ( eName == "setting" && state == StateMap ) 
+       {
+               state=StateMapSetting;
+               if (loadMode==NewMap)
+                       readSettingAttr (atts);
+       } else if ( eName == "mapcenter" && state == StateMap ) 
+       {
+               state=StateMapCenter;
+               if (loadMode==NewMap)
+               {       
+                       // Really use the found mapcenter as MCO in a new map
+
+                       lastBranch=model->addMapCenter(); 
+               } else
+               {
+                       // Treat the found mapcenter as a branch 
+                       // in an existing map
+                       LinkableMapObj* lmo=model->getSelection();
+                       if (lmo && ((typeid(*lmo) == typeid(BranchObj) ) 
+                               ||  typeid(*lmo) == typeid(MapCenterObj) ) )
+                       {
+                               lastBranch=(BranchObj*)lmo;
+                               if (loadMode==ImportAdd)
+                               {
+                                       lastBranch->addBranch();
+                                       lastBranch=lastBranch->getLastBranch();
+                               } else
+                                       lastBranch->clear();
+                       } else
+                               return false;
+               }
+               readBranchAttr (atts);
+       } else if ( 
+               (eName == "standardflag" ||eName == "standardFlag") && 
+               (state == StateMapCenter || state==StateBranch)) 
+       {
+               state=StateStandardFlag;
+       } else if ( eName == "heading" && (state == StateMapCenter||state==StateBranch)) 
+       {
+               laststate=state;
+               state=StateHeading;
+               if (!atts.value( "textColor").isEmpty() ) 
+               {
+                       col.setNamedColor(atts.value("textColor"));
+                       lastBranch->setColor(col );
+               }           
+       } else if ( eName == "note" && 
+                               (state == StateMapCenter ||state==StateBranch))
+       {       // only for backward compatibility (<1.4.6). Use htmlnote now.
+               state=StateNote;
+               if (!readNoteAttr (atts) ) return false;
+       } else if ( eName == "htmlnote" && state == StateMapCenter) 
+       {
+               laststate=state;
+               state=StateHtmlNote;
+    } else if ( eName == "floatimage" && 
+                               (state == StateMapCenter ||state==StateBranch)) 
+       {
+               state=StateFloatImage;
+        lastBranch->addFloatImage();
+               lastFloat=lastBranch->getLastFloatImage();
+               if (!readFloatImageAttr(atts)) return false;
+       } else if ( (eName == "branch"||eName=="floatimage") && state == StateMap) 
+       {
+               // This is used in vymparts, which have no mapcenter!
+               isVymPart=true;
+               LinkableMapObj* lmo=model->getSelection();
+               if (!lmo)
+               {
+                       // If a vym part is _loaded_ (not imported), 
+                       // selection==lmo==NULL
+                       // Treat it like ImportAdd then...
+                       loadMode=ImportAdd;
+                       lmo=model->first();             // FIXME this used to be lmo=mc before
+               }       
+               if (lmo && ((typeid(*lmo) == typeid(BranchObj) ) 
+                               ||  typeid(*lmo) == typeid(MapCenterObj) ) )
+               {
+                       lastBranch=(BranchObj*)(lmo);
+                       if (eName=="branch")
+                       {
+                               state=StateBranch;
+                               if (loadMode==ImportAdd)
+                               {
+                                       lastBranch->addBranch();
+                                       lastBranch=lastBranch->getLastBranch();
+                                       
+                               } else
+                                       lastBranch->clear();
+                               readBranchAttr (atts);
+                       } else if (eName=="floatimage")
+                       {
+                               state=StateFloatImage;
+                               lastBranch->addFloatImage();
+                               lastFloat=lastBranch->getLastFloatImage();
+                               if (!readFloatImageAttr(atts)) return false;
+                       } else return false;
+               } else return false;
+       } else if ( eName == "branch" && state == StateMapCenter) 
+       {
+               state=StateBranch;
+               lastBranch->addBranch();
+               lastBranch=lastBranch->getLastBranch();
+               readBranchAttr (atts);
+       } else if ( eName == "htmlnote" && state == StateBranch) 
+       {
+               laststate=state;
+               state=StateHtmlNote;
+               no.clear();
+               if (!atts.value( "fonthint").isEmpty() ) 
+                       no.setFontHint(atts.value ("fonthint") );
+       } else if ( eName == "frame" && (state == StateBranch||state==StateMapCenter)) 
+       {
+               laststate=state;
+               state=StateFrame;
+               if (!readFrameAttr(atts)) return false;
+    } else if ( eName == "xlink" && state == StateBranch ) 
+       {
+               state=StateBranchXLink;
+               if (!readXLinkAttr (atts)) return false;
+    } else if ( eName == "branch" && state == StateBranch ) 
+       {
+        lastBranch->addBranch();
+               lastBranch=lastBranch->getLastBranch();         
+               readBranchAttr (atts);
+    } else if ( eName == "html" && state == StateHtmlNote ) 
+       {
+               state=StateHtml;
+               htmldata="<"+eName;
+               readHtmlAttr(atts);
+               htmldata+=">";
+    } else if ( state == StateHtml ) 
+       {
+               // accept all while in html mode,
+               htmldata+="<"+eName;
+               readHtmlAttr(atts);
+               htmldata+=">";
+    } else
+        return false;   // Error
+    return true;
+}
+
+bool parseVYMHandler::endElement  ( const QString&, const QString&, const QString &eName)
+{
+       /* Testing
+       cout << "endElement </" <<qPrintable(eName)
+               <<">  state=" <<state 
+               <<"  laststate=" <<laststate
+               <<"  stateStack="<<stateStack.last() 
+               <<endl;
+       */
+    switch ( state ) 
+       {
+        case StateBranch: 
+                       lastBranch=(BranchObj*)(lastBranch->getParObj());
+            break;
+        case StateHtml: 
+                       htmldata+="</"+eName+">";
+                       if (eName=="html")
+                       {
+                               state=StateHtmlNote;  
+                               htmldata.replace ("<br></br>","<br />");
+                               no.setNote (htmldata);
+                               lastBranch->setNote (no);
+                       }       
+                       break;
+               default: 
+                       break;
+    }  
+       state=stateStack.takeLast();    
+       return true;
+}
+
+bool parseVYMHandler::characters   ( const QString& ch)
+{
+       //cout << "characters \""<<ch<<"\"  state="<<state <<"  laststate="<<laststate<<endl;
+
+       QString ch_org=quotemeta (ch);
+    QString ch_simplified=ch.simplifyWhiteSpace();
+    if ( ch_simplified.isEmpty() ) return true;
+
+    switch ( state ) 
+    {
+        case StateInit: break;
+        case StateMap: break; 
+               case StateMapSelect:
+                       model->select(ch_simplified);
+                       break;
+               case StateMapSetting:break;
+        case StateMapCenter: break;
+        case StateNote:
+                       lastBranch->setNote(ch_simplified);
+                       break;
+        case StateBranch: break;
+        case StateStandardFlag: 
+            lastBranch->activateStandardFlag(ch_simplified); 
+            break;
+        case StateFloatImage: break;
+        case StateHtmlNote: break;
+        case StateHtml:
+                       htmldata+=ch_org;
+                       break;
+        case StateHeading: 
+            lastBranch->setHeading(ch_simplified);
+            break;
+        default: 
+                       return false;
+    }
+    return true;
+}
+
+QString parseVYMHandler::errorString() 
+{
+    return "the document is not in the VYM file format";
+}
+
+bool parseVYMHandler::readBranchAttr (const QXmlAttributes& a)
+{
+       lastOO=lastBranch;
+       if (!readOOAttr(a)) return false;
+
+       if (!a.value( "scrolled").isEmpty() )
+               lastBranch->toggleScroll();
+       if (!a.value( "frameType").isEmpty() ) 
+               lastOO->setFrameType (a.value("frameType")); //Compatibility 1.8.1
+
+       if (!a.value( "incImgV").isEmpty() ) 
+       {       
+               if (a.value("incImgV")=="true")
+                       lastBranch->setIncludeImagesVer(true);
+               else    
+                       lastBranch->setIncludeImagesVer(false);
+       }       
+       if (!a.value( "incImgH").isEmpty() ) 
+       {       
+               if (a.value("incImgH")=="true")
+                       lastBranch->setIncludeImagesHor(true);
+               else    
+                       lastBranch->setIncludeImagesHor(false);
+       }       
+       return true;    
+}
+
+bool parseVYMHandler::readFrameAttr (const QXmlAttributes& a)
+{
+       bool ok;
+       int x;
+       if (lastOO)
+       {
+               if (!a.value( "frameType").isEmpty() ) 
+                       lastOO->setFrameType (a.value("frameType"));
+               if (!a.value( "penColor").isEmpty() ) 
+                       lastOO->setFramePenColor (a.value("penColor"));
+               if (!a.value( "brushColor").isEmpty() ) 
+                       lastOO->setFrameBrushColor (a.value("brushColor"));
+               if (!a.value( "padding").isEmpty() ) 
+               {
+                       x=a.value("padding").toInt(&ok);
+                       if (ok) lastOO->setFramePadding(x);
+               }       
+               if (!a.value( "borderWidth").isEmpty() ) 
+               {
+                       x=a.value("borderWidth").toInt(&ok);
+                       if (ok) lastOO->setFrameBorderWidth(x);
+               }       
+       }               
+       return true;
+}
+
+bool parseVYMHandler::readOOAttr (const QXmlAttributes& a)
+{
+       if (lastOO)
+       {
+               bool okx,oky;
+               float x,y;
+               if (!a.value( "relPosX").isEmpty() ) 
+               {
+                       if (!a.value( "relPosY").isEmpty() ) 
+                       {
+                               x=a.value("relPosX").toFloat (&okx);
+                               y=a.value("relPosY").toFloat (&oky);
+                               if (okx && oky  )
+                               {
+                                       lastOO->setUseRelPos (true);
+                                       lastOO->move2RelPos (x,y);
+                               }       
+                               else
+                                       return false;   // Couldn't read relPos
+                       }           
+               }           
+               if (!a.value( "absPosX").isEmpty() && loadMode==NewMap ) 
+               {
+                       if (!a.value( "absPosY").isEmpty() ) 
+                       {
+                               x=a.value("absPosX").toFloat (&okx);
+                               y=a.value("absPosY").toFloat (&oky);
+                               if (okx && oky  )
+                                       lastOO->move(x,y);
+                               else
+                                       return false;   // Couldn't read absPos
+                       }           
+               }           
+               if (!a.value( "id").isEmpty() ) 
+                       lastOO->setID (a.value ("id"));
+               if (!a.value( "url").isEmpty() ) 
+                       lastOO->setURL (a.value ("url"));
+               if (!a.value( "vymLink").isEmpty() ) 
+                       lastOO->setVymLink (a.value ("vymLink"));
+               if (!a.value( "hideInExport").isEmpty() ) 
+                       if (a.value("hideInExport")=="true")
+                               lastOO->setHideInExport(true);
+
+               if (!a.value( "hideLink").isEmpty()) 
+               {
+                       if (a.value ("hideLink") =="true")
+                               lastOO->setHideLinkUnselected(true);
+                       else    
+                               lastOO->setHideLinkUnselected(false);
+               }       
+       }
+       return true;    
+}
+
+bool parseVYMHandler::readNoteAttr (const QXmlAttributes& a)
+{      // only for backward compatibility (<1.4.6). Use htmlnote now.
+       no.clear();
+       QString fn;
+       if (!a.value( "href").isEmpty() ) 
+       {
+               // Load note
+               fn=parseHREF(a.value ("href") );
+               QFile file (fn);
+               QString s;                                              // Reading a note
+
+               if ( !file.open( QIODevice::ReadOnly) )
+               {
+                       qWarning ("parseVYMHandler::readNoteAttr:  Couldn't load "+fn);
+                       return false;
+               }       
+               QTextStream stream( &file );
+               QString lines;
+               while ( !stream.atEnd() ) {
+                       lines += stream.readLine()+"\n"; 
+               }
+               file.close();
+
+               lines ="<html><head><meta name=\"qrichtext\" content=\"1\" /></head><body>"+lines + "</p></body></html>";
+               no.setNote (lines);
+       }               
+       if (!a.value( "fonthint").isEmpty() ) 
+               no.setFontHint(a.value ("fonthint") );
+       lastBranch->setNote(no);
+       return true;
+}
+
+bool parseVYMHandler::readFloatImageAttr (const QXmlAttributes& a)
+{
+       lastOO=lastFloat;
+       
+       //if (!readOOAttr(a)) return false;
+
+       if (!a.value( "useOrientation").isEmpty() ) 
+       {
+               if (a.value ("useOrientation") =="true")
+                       lastFloat->setUseOrientation (true);
+               else    
+                       lastFloat->setUseOrientation (false);
+       }       
+       if (!a.value( "href").isEmpty() )
+       {
+               // Load FloatImage
+               if (!lastFloat->load (parseHREF(a.value ("href") ) ))
+               {
+                       QMessageBox::warning( 0, "Warning: " ,
+                               "Couldn't load float image\n"+parseHREF(a.value ("href") ));
+                       lastBranch->removeFloatImage(((FloatImageObj*)(lastFloat)));
+                       lastFloat=NULL;
+                       return true;
+               }
+               
+       }       
+       if (!a.value( "floatExport").isEmpty() ) 
+       {
+               // Only for compatibility. THis is not used since 1.7.11 
+               if (a.value ("floatExport") =="true")
+                       lastFloat->setFloatExport(true);
+               else    
+                       lastFloat->setFloatExport (false);
+       }       
+       if (!a.value( "zPlane").isEmpty() ) 
+               lastFloat->setZValue (a.value("zPlane").toInt ());
+    float x,y;
+    bool okx,oky;
+       if (!a.value( "relPosX").isEmpty() ) 
+       {
+               if (!a.value( "relPosY").isEmpty() ) 
+               {
+                       // read relPos
+                       x=a.value("relPosX").toFloat (&okx);
+                       y=a.value("relPosY").toFloat (&oky);
+                       if (okx && oky) 
+                               
+                               {
+                                       lastFloat->setRelPos (QPointF (x,y) );
+                                       // make sure floats in mapcenter are repositioned to relative pos
+                                       if (lastBranch->getDepth()==0) lastBranch->positionContents();
+                               }
+                       else
+                               // Couldn't read relPos
+                               return false;  
+               }           
+       }       
+       
+       if (!readOOAttr(a)) return false;
+
+       if (!a.value ("orgName").isEmpty() )
+       {
+               ((FloatImageObj*)(lastFloat))->setOriginalFilename (a.value("orgName"));
+       }
+       return true;
+}
+
+bool parseVYMHandler::readXLinkAttr (const QXmlAttributes& a)
+{
+       QColor col;
+       bool okx;
+       bool success=false;
+       XLinkObj *xlo=new XLinkObj (model->getScene());
+       if (!a.value( "color").isEmpty() ) 
+       {
+               col.setNamedColor(a.value("color"));
+               xlo->setColor (col);
+       }
+
+       if (!a.value( "width").isEmpty() ) 
+       {
+               xlo->setWidth(a.value ("width").toInt (&okx, 10));
+       }
+
+       // Connecting by select string for compatibility with version < 1.8.76
+       if (!a.value( "beginBranch").isEmpty() ) 
+       { 
+               if (!a.value( "endBranch").isEmpty() ) 
+               {
+                       LinkableMapObj *lmo=model->findObjBySelect (a.value( "beginBranch"));
+                       if (lmo && typeid (*lmo)==typeid (BranchObj))
+                       {
+                               xlo->setBegin ((BranchObj*)lmo);
+                               lmo=model->findObjBySelect (a.value( "endBranch"));
+                               if (lmo && typeid (*lmo)==typeid (BranchObj))
+                               {
+                                       xlo->setEnd ((BranchObj*)(lmo));
+                                       xlo->activate();
+                                       success=true;
+                               }
+                       }
+               }           
+       }       
+
+       // object ID is used starting in version 1.8.76
+       if (!a.value( "beginID").isEmpty() ) 
+       { 
+               if (!a.value( "endID").isEmpty() ) 
+               {
+                       LinkableMapObj *lmo=model->findID (a.value( "beginID"));
+                       if (lmo && typeid (*lmo)==typeid (BranchObj))
+                       {
+                               xlo->setBegin ((BranchObj*)lmo);
+                               lmo=model->findID (a.value( "endID"));
+                               if (lmo && typeid (*lmo)==typeid (BranchObj))
+                               {
+                                       xlo->setEnd ((BranchObj*)(lmo));
+                                       xlo->activate();
+                                       success=true;
+                               }
+                       }
+               }           
+       }       
+       if (!success) delete (xlo);
+       return true;    // xLinks can only be established at the "end branch", return true
+}
+
+bool parseVYMHandler::readHtmlAttr (const QXmlAttributes& a)
+{
+       for (int i=1; i<=a.count(); i++)
+               htmldata+=" "+a.localName(i-1)+"=\""+a.value(i-1)+"\"";
+       return true;
+}
+
+bool parseVYMHandler::readSettingAttr (const QXmlAttributes& a)
+{
+       if (!a.value( "key").isEmpty() ) 
+       {
+               if (!a.value( "value").isEmpty() ) 
+                       settings.setLocalEntry (model->getMapEditor()->getDestPath(), a.value ("key"), a.value ("value"));
+               else
+                       return false;
+               
+       } else
+               return false;
+       
+       return true;
+}
diff --git a/xml-vym.h b/xml-vym.h
new file mode 100644 (file)
index 0000000..1633eea
--- /dev/null
+++ b/xml-vym.h
@@ -0,0 +1,54 @@
+#ifndef XML_H
+#define XML_H
+
+#include "xml-base.h"
+
+
+/*! \brief Parsing VYM maps from XML documents */
+
+class parseVYMHandler  : public parseBaseHandler
+{
+public:
+       bool startDocument();
+       bool startElement ( const QString&, const QString&,
+                        const QString& eName, const QXmlAttributes& atts ); 
+       bool   endElement ( const QString&, const QString&, const QString& ); 
+       bool characters   ( const QString&);
+       QString errorString();
+       bool readBranchAttr (const QXmlAttributes&);
+       bool readFrameAttr (const QXmlAttributes&);
+       bool readOOAttr (const QXmlAttributes&);
+       bool readNoteAttr (const QXmlAttributes&);
+       bool readFloatImageAttr (const QXmlAttributes&);
+       bool readXLinkAttr (const QXmlAttributes&);
+       bool readHtmlAttr (const QXmlAttributes&);
+       bool readSettingAttr (const QXmlAttributes&);
+
+private:
+       enum State 
+       { 
+               StateInit, 
+               StateMap, 
+               StateMapSelect, 
+               StateMapSetting,
+               StateMapCenter, 
+               StateBranch, 
+               StateBranchXLink,                       //
+               StateHtmlNote, 
+               StateHtml, 
+               StateFrame,
+               StateStandardFlag,
+               StateNote,
+               StateFloatImage,
+               StateHeading
+        };
+                                
+
+
+       State state;                     
+       State laststate;
+       QList <State> stateStack;
+       QString htmldata;
+       NoteObj no;
+}; 
+#endif
diff --git a/xmlobj.cpp b/xmlobj.cpp
new file mode 100644 (file)
index 0000000..39777b5
--- /dev/null
@@ -0,0 +1,94 @@
+#include "xmlobj.h"
+
+#include <QRegExp>
+
+
+// returns masked "<" ">" "&"
+QString quotemeta(const QString &s)
+{
+       QString r=s;
+    QRegExp  rx("&(?!amp;)");
+    r.replace ( rx,"&amp;");
+    rx.setPattern( ">");
+    r.replace ( rx,"&gt;");
+    rx.setPattern( "<");
+    r.replace ( rx,"&lt;");
+    rx.setPattern( "\"");
+    r.replace ( rx,"&quot;");
+    return r;
+}
+
+
+
+int XMLObj::actindent=0;               // make instance of actindent
+
+XMLObj::XMLObj()
+{
+    indentwidth=4;
+}
+
+
+// returns <s at />
+QString XMLObj::singleElement(QString s, QString at)
+{
+    return indent() + "<" + s +" " + at +" " + "/>\n";
+}
+
+// returns <s>
+QString XMLObj::beginElement(QString s)
+{
+    return indent() + "<" + s + ">\n";
+}
+
+// returns <s at>
+QString XMLObj::beginElement(QString s, QString at)
+{
+    return indent() + "<" + s + " " + at + ">\n";
+}
+
+// returns </s>
+QString XMLObj::endElement(QString s)
+{
+    return indent() + "</" + s + ">\n";
+}
+
+// returns  at="val"
+QString XMLObj::attribut(QString at, QString val)
+{
+    return " " + at + "=\"" + quotemeta (val) + "\""; 
+}
+
+// returns <s> val </s>
+QString XMLObj::valueElement(QString el, QString val)
+{
+    return indent() + "<" + el + ">" + quotemeta(val) + "</" +el + ">\n";
+}
+
+// returns <s at> val </s>
+QString XMLObj::valueElement(QString el, QString val, QString at)
+{
+    return indent() + "<" + el + " " + at + ">" + quotemeta(val) + "</" +el + ">\n";
+}
+
+void XMLObj::incIndent()
+{
+    actindent++;
+}      
+
+void XMLObj::decIndent()
+{
+    actindent--;
+    if (actindent<0) actindent=0;
+}      
+
+QString XMLObj::indent()
+{
+    QString s;
+    int i;
+    for (i=0; i<actindent*indentwidth; i++)
+    {
+               s= s + " ";
+    }
+    return s;
+}      
+
diff --git a/xmlobj.h b/xmlobj.h
new file mode 100644 (file)
index 0000000..6f6fbc4
--- /dev/null
+++ b/xmlobj.h
@@ -0,0 +1,29 @@
+#ifndef XMLOBJ_H
+#define XMLOBJ_H
+
+#include <QString>
+
+QString quotemeta(const QString&);     
+
+/////////////////////////////////////////////////////////////////////////////
+class XMLObj
+{
+public:
+    XMLObj();
+    QString singleElement(QString,QString);                    // name,attr
+    QString beginElement(QString,QString);                     // name,attr
+    QString beginElement(QString);                                     // name
+    QString endElement  (QString);                                     // name
+    QString attribut    (QString,QString);                     // name, val
+    QString valueElement(QString,QString);                     // name, val
+    QString valueElement(QString,QString,QString);     // name, attr, val
+    void incIndent();
+    void decIndent();
+    static int actindent;
+
+protected:  
+    QString indent();
+    int indentwidth;
+};
+
+#endif
diff --git a/xsltproc.cpp b/xsltproc.cpp
new file mode 100644 (file)
index 0000000..274e711
--- /dev/null
@@ -0,0 +1,95 @@
+#include "xsltproc.h"
+
+#include <iostream>
+#include <qmessagebox.h>
+
+#include "process.h"
+
+
+extern bool debug;
+
+XSLTProc::XSLTProc ()
+{
+       xsltprocessor="xsltproc";
+       showOutput=false;
+       dia=new ShowTextDialog;
+}
+
+XSLTProc::~XSLTProc ()
+{
+       delete (dia);
+}
+
+void XSLTProc::addStringParam (const QString & k, const QString &v)
+{
+       stringParamKey.append (k);
+       stringParamVal.append (v);
+}
+
+void XSLTProc::setOutputFile    (const QString &s)
+{
+       outputFile=s;
+}
+
+void XSLTProc::setXSLFile(const QString &s)
+{
+       xslFile=s;
+}
+
+void XSLTProc::setInputFile     (const QString &s)
+{
+       inputFile=s;
+}
+
+void XSLTProc::addOutput (const QString &s)
+{
+       dia->append (s);
+}
+
+void XSLTProc::process()
+{
+       ShowTextDialog dia;
+       QStringList args;
+       Process *xsltProc=new Process ();
+
+       QStringList::Iterator itk;
+       QStringList::Iterator itv=stringParamVal.begin();
+
+       for ( itk = stringParamKey.begin(); itk != stringParamKey.end(); ++itk ) 
+       {
+               args << "--stringparam";
+               args << *itk;
+               args << *itv;
+               ++itv;
+    }
+       
+       args << "--output";
+       args << outputFile;
+       args << xslFile;
+       args << inputFile;
+       QString com=xsltprocessor+" "+args.join(" "); 
+       if (debug) cout <<"xsltproc executing:\n"<<qPrintable(com)<<endl;
+       dia.append ("vym is executing: \n" + com );     
+       xsltProc->start(xsltprocessor,args);
+       if (!xsltProc->waitForStarted() )
+       {
+               QMessageBox::critical( 0, QObject::tr( "Critical Error" ),
+                                          QObject::tr("Could not start %1").arg(xsltprocessor) );
+       } else
+       {
+               if (!xsltProc->waitForFinished())
+               {
+                       QMessageBox::critical( 0, QObject::tr( "Critical Error" ),
+                          QObject::tr("%1 didn't exit normally").arg(xsltprocessor) +
+                          xsltProc->getErrout() );
+                       if (xsltProc->exitStatus()>0) showOutput=true;
+               }          
+                       
+       }       
+       dia.append ("\n");
+       dia.append (xsltProc->getErrout());
+       dia.append (xsltProc->getStdout());
+       
+       if (showOutput) dia.exec();
+}
+
diff --git a/xsltproc.h b/xsltproc.h
new file mode 100644 (file)
index 0000000..375481c
--- /dev/null
@@ -0,0 +1,31 @@
+#ifndef XSLTPROC_H
+#define XSLTPROC_H
+
+#include <qstring.h>
+#include <qstringlist.h>
+
+#include "showtextdialog.h"
+
+class XSLTProc
+{
+public:
+       XSLTProc();
+       ~XSLTProc();
+       void addStringParam(const QString &, const QString &);
+       void setOutputFile (const QString &);
+       void setXSLFile    (const QString &);
+       void setInputFile  (const QString &);
+       void addOutput (const QString &);
+       void process();
+private:
+       QStringList stringParamKey;
+       QStringList stringParamVal;
+       QString outputFile;
+       QString inputFile;
+       QString xslFile;
+       QString xsltprocessor;
+       bool showOutput;
+       ShowTextDialog *dia;
+};
+
+#endif