Initial revision
authorinsilmaril
Sun, 30 Jan 2005 12:59:10 +0000
changeset 82920e6ed5889b
child 83 e90f5bef70c8
Initial revision
LICENSE
Makefile
branchobj.cpp
branchobj.h
demos/liveform.vym
demos/math.vym
demos/time-management.vym
demos/todo.vym
doc/vym.pdf
exporthtmldialog.ui
exporthtmldialog.ui.h
exports.cpp
exports.h
exportxhtmldialog.ui
exportxhtmldialog.ui.h
extrainfodialog.ui
extrainfodialog.ui.h
findwindow.cpp
findwindow.h
flagobj.cpp
flagobj.h
flagrowobj.cpp
flagrowobj.h
floatimageobj.cpp
floatimageobj.h
floatobj.cpp
floatobj.h
frameobj.cpp
frameobj.h
headingobj.cpp
headingobj.h
icons/cursorcolorpicker.xpm
icons/cursorcolorpicker16.xpm
icons/cursorhandopen.xpm
icons/cursorhandopen16.xpm
icons/editcopy.xpm
icons/editcut.xpm
icons/editmovedown.xpm
icons/editmoveup.xpm
icons/editpaste.xpm
icons/editredo.xpm
icons/edittrash.xpm
icons/editundo.xpm
icons/filenew.xpm
icons/fileopen.xpm
icons/fileprint.xpm
icons/filesave.xpm
icons/flag-arrow-down.xpm
icons/flag-arrow-up.xpm
icons/flag-clock.xpm
icons/flag-cross-red.xpm
icons/flag-exclamationmark.xpm
icons/flag-flash.xpm
icons/flag-heart.xpm
icons/flag-hook-green.xpm
icons/flag-lamp.xpm
icons/flag-lifebelt.xpm
icons/flag-note.xpm
icons/flag-questionmark.xpm
icons/flag-scrolled-right.xpm
icons/flag-smiley-good.xpm
icons/flag-smiley-sad.xpm
icons/flag-stopsign.xpm
icons/flag-thumb-down.xpm
icons/flag-thumb-up.xpm
icons/flag-tmpUnscrolled-right.xpm
icons/flag-url.xpm
icons/flag-vymlink.xpm
icons/flags.xcf
icons/formatcolorbranch.xpm
icons/formatcoloritem.xpm
icons/formatcolorpicker.xpm
icons/formatfixedfont.xpm
icons/formattextbold.xpm
icons/formattextcenter.xpm
icons/formattextitalic.xpm
icons/formattextjustify.xpm
icons/formattextleft.xpm
icons/formattextright.xpm
icons/formattextunder.xpm
icons/formatvarfont.xpm
icons/icons.xcf
icons/mouse.xcf
icons/mouse16.xcf
icons/viewzoomin.xpm
icons/viewzoomout.xpm
icons/viewzoomreset.xpm
icons/vym-16x16.png
icons/vym-16x16.xpm
icons/vym-32x32.png
icons/vym-32x32.xpm
icons/vym-48x48.png
icons/vym-48x48.xpm
icons/vym-editor.xpm
icons/vym.png
icons/vym.xcf
icons/wiki.xcf
imageobj.cpp
imageobj.h
linkablemapobj.cpp
linkablemapobj.h
main.cpp
mainwindow.cpp
mainwindow.h
mapcenterobj.cpp
mapcenterobj.h
mapeditor.cpp
mapeditor.h
mapobj.cpp
mapobj.h
misc.cpp
misc.h
noteobj.cpp
noteobj.h
options.cpp
options.h
ornamentedobj.cpp
ornamentedobj.h
process.cpp
process.h
scripts/exportvym
scripts/vym2html.sh
scripts/vym2txt.sh
selection.cpp
selection.h
settings.cpp
settings.h
showtextdialog.ui
showtextdialog.ui.h
styles/cm.xsl
styles/tm.xsl
styles/vym.css
styles/vym2html.xsl
styles/vym2txt.xsl
styles/vym2xhtml.xsl
styles/wiki/answer.gif
styles/wiki/point.gif
styles/wiki/question.gif
tex/branches-flags.png
tex/branches.png
tex/color-buttons.png
tex/default-flags.png
tex/example1.png
tex/find-window.png
tex/flag-url.png
tex/flag-vymlink.png
tex/formatfixedfont.png
tex/move-buttons.png
tex/vym.tex
tex/windows.png
tex/zoom-buttons.png
texteditor.cpp
texteditor.h
version.h
vym.pro
vym_de.ts
xml.cpp
xml.h
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/LICENSE	Sun Jan 30 12:59:10 2005 +0000
     1.3 @@ -0,0 +1,308 @@
     1.4 +    VYM - View Your Mind
     1.5 +    Copyright (C) 2004  Uwe Drechsel  
     1.6 +
     1.7 +    This program is free software; you can redistribute it and/or modify
     1.8 +    it under the terms of the GNU General Public License as published by
     1.9 +    the Free Software Foundation; either version 2 of the License, or
    1.10 +    (at your option) any later version.
    1.11 +
    1.12 +    This program is distributed in the hope that it will be useful,
    1.13 +    but WITHOUT ANY WARRANTY; without even the implied warranty of
    1.14 +    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    1.15 +    GNU General Public License below for more details.
    1.16 +
    1.17 +	In addition, as a special exception, Uwe Drechsel
    1.18 +	gives permission to link the code of this program with the QT 
    1.19 +	libraries from trolltech.com (or with modified versions of QT that
    1.20 +	use the same license as QT), and distribute linked combinations
    1.21 +	including the two. You must obey the GNU General Public License in
    1.22 +	all respects for all of the code used other than QT. If you modify
    1.23 +	this file, you may extend this exception to your version of the
    1.24 +	file, but you are not obligated to do so. If you do not wish to do
    1.25 +	so, delete this exception statement from your version.
    1.26 +
    1.27 +
    1.28 +	Uwe Drechsel can be contacted at <vym@insilmaril.de>
    1.29 +
    1.30 +-----------------------------------------------------------------------------
    1.31 +
    1.32 +            GNU GENERAL PUBLIC LICENSE
    1.33 +		       Version 2, June 1991
    1.34 +
    1.35 + Copyright (C) 1989, 1991 Free Software Foundation, Inc.
    1.36 +     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    1.37 + Everyone is permitted to copy and distribute verbatim copies
    1.38 + of this license document, but changing it is not allowed.
    1.39 +
    1.40 +			    Preamble
    1.41 +
    1.42 +  The licenses for most software are designed to take away your
    1.43 +freedom to share and change it.  By contrast, the GNU General Public
    1.44 +License is intended to guarantee your freedom to share and change free
    1.45 +software--to make sure the software is free for all its users.  This
    1.46 +General Public License applies to most of the Free Software
    1.47 +Foundation's software and to any other program whose authors commit to
    1.48 +using it.  (Some other Free Software Foundation software is covered by
    1.49 +the GNU Library General Public License instead.)  You can apply it to
    1.50 +your programs, too.
    1.51 +
    1.52 +  When we speak of free software, we are referring to freedom, not
    1.53 +price.  Our General Public Licenses are designed to make sure that you
    1.54 +have the freedom to distribute copies of free software (and charge for
    1.55 +this service if you wish), that you receive source code or can get it
    1.56 +if you want it, that you can change the software or use pieces of it
    1.57 +in new free programs; and that you know you can do these things.
    1.58 +
    1.59 +  To protect your rights, we need to make restrictions that forbid
    1.60 +anyone to deny you these rights or to ask you to surrender the rights.
    1.61 +These restrictions translate to certain responsibilities for you if you
    1.62 +distribute copies of the software, or if you modify it.
    1.63 +
    1.64 +  For example, if you distribute copies of such a program, whether
    1.65 +gratis or for a fee, you must give the recipients all the rights that
    1.66 +you have.  You must make sure that they, too, receive or can get the
    1.67 +source code.  And you must show them these terms so they know their
    1.68 +rights.
    1.69 +
    1.70 +  We protect your rights with two steps: (1) copyright the software, and
    1.71 +(2) offer you this license which gives you legal permission to copy,
    1.72 +distribute and/or modify the software.
    1.73 +
    1.74 +  Also, for each author's protection and ours, we want to make certain
    1.75 +that everyone understands that there is no warranty for this free
    1.76 +software.  If the software is modified by someone else and passed on, we
    1.77 +want its recipients to know that what they have is not the original, so
    1.78 +that any problems introduced by others will not reflect on the original
    1.79 +authors' reputations.
    1.80 +
    1.81 +  Finally, any free program is threatened constantly by software
    1.82 +patents.  We wish to avoid the danger that redistributors of a free
    1.83 +program will individually obtain patent licenses, in effect making the
    1.84 +program proprietary.  To prevent this, we have made it clear that any
    1.85 +patent must be licensed for everyone's free use or not licensed at all.
    1.86 +
    1.87 +  The precise terms and conditions for copying, distribution and
    1.88 +modification follow.
    1.89 +
    1.90 +		    GNU GENERAL PUBLIC LICENSE
    1.91 +   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
    1.92 +
    1.93 +  0. This License applies to any program or other work which contains
    1.94 +a notice placed by the copyright holder saying it may be distributed
    1.95 +under the terms of this General Public License.  The "Program", below,
    1.96 +refers to any such program or work, and a "work based on the Program"
    1.97 +means either the Program or any derivative work under copyright law:
    1.98 +that is to say, a work containing the Program or a portion of it,
    1.99 +either verbatim or with modifications and/or translated into another
   1.100 +language.  (Hereinafter, translation is included without limitation in
   1.101 +the term "modification".)  Each licensee is addressed as "you".
   1.102 +
   1.103 +Activities other than copying, distribution and modification are not
   1.104 +covered by this License; they are outside its scope.  The act of
   1.105 +running the Program is not restricted, and the output from the Program
   1.106 +is covered only if its contents constitute a work based on the
   1.107 +Program (independent of having been made by running the Program).
   1.108 +Whether that is true depends on what the Program does.
   1.109 +
   1.110 +  1. You may copy and distribute verbatim copies of the Program's
   1.111 +source code as you receive it, in any medium, provided that you
   1.112 +conspicuously and appropriately publish on each copy an appropriate
   1.113 +copyright notice and disclaimer of warranty; keep intact all the
   1.114 +notices that refer to this License and to the absence of any warranty;
   1.115 +and give any other recipients of the Program a copy of this License
   1.116 +along with the Program.
   1.117 +
   1.118 +You may charge a fee for the physical act of transferring a copy, and
   1.119 +you may at your option offer warranty protection in exchange for a fee.
   1.120 +
   1.121 +  2. You may modify your copy or copies of the Program or any portion
   1.122 +of it, thus forming a work based on the Program, and copy and
   1.123 +distribute such modifications or work under the terms of Section 1
   1.124 +above, provided that you also meet all of these conditions:
   1.125 +
   1.126 +    a) You must cause the modified files to carry prominent notices
   1.127 +    stating that you changed the files and the date of any change.
   1.128 +
   1.129 +    b) You must cause any work that you distribute or publish, that in
   1.130 +    whole or in part contains or is derived from the Program or any
   1.131 +    part thereof, to be licensed as a whole at no charge to all third
   1.132 +    parties under the terms of this License.
   1.133 +
   1.134 +    c) If the modified program normally reads commands interactively
   1.135 +    when run, you must cause it, when started running for such
   1.136 +    interactive use in the most ordinary way, to print or display an
   1.137 +    announcement including an appropriate copyright notice and a
   1.138 +    notice that there is no warranty (or else, saying that you provide
   1.139 +    a warranty) and that users may redistribute the program under
   1.140 +    these conditions, and telling the user how to view a copy of this
   1.141 +    License.  (Exception: if the Program itself is interactive but
   1.142 +    does not normally print such an announcement, your work based on
   1.143 +    the Program is not required to print an announcement.)
   1.144 +
   1.145 +These requirements apply to the modified work as a whole.  If
   1.146 +identifiable sections of that work are not derived from the Program,
   1.147 +and can be reasonably considered independent and separate works in
   1.148 +themselves, then this License, and its terms, do not apply to those
   1.149 +sections when you distribute them as separate works.  But when you
   1.150 +distribute the same sections as part of a whole which is a work based
   1.151 +on the Program, the distribution of the whole must be on the terms of
   1.152 +this License, whose permissions for other licensees extend to the
   1.153 +entire whole, and thus to each and every part regardless of who wrote it.
   1.154 +
   1.155 +Thus, it is not the intent of this section to claim rights or contest
   1.156 +your rights to work written entirely by you; rather, the intent is to
   1.157 +exercise the right to control the distribution of derivative or
   1.158 +collective works based on the Program.
   1.159 +
   1.160 +In addition, mere aggregation of another work not based on the Program
   1.161 +with the Program (or with a work based on the Program) on a volume of
   1.162 +a storage or distribution medium does not bring the other work under
   1.163 +the scope of this License.
   1.164 +
   1.165 +  3. You may copy and distribute the Program (or a work based on it,
   1.166 +under Section 2) in object code or executable form under the terms of
   1.167 +Sections 1 and 2 above provided that you also do one of the following:
   1.168 +
   1.169 +    a) Accompany it with the complete corresponding machine-readable
   1.170 +    source code, which must be distributed under the terms of Sections
   1.171 +    1 and 2 above on a medium customarily used for software interchange; or,
   1.172 +
   1.173 +    b) Accompany it with a written offer, valid for at least three
   1.174 +    years, to give any third party, for a charge no more than your
   1.175 +    cost of physically performing source distribution, a complete
   1.176 +    machine-readable copy of the corresponding source code, to be
   1.177 +    distributed under the terms of Sections 1 and 2 above on a medium
   1.178 +    customarily used for software interchange; or,
   1.179 +
   1.180 +    c) Accompany it with the information you received as to the offer
   1.181 +    to distribute corresponding source code.  (This alternative is
   1.182 +    allowed only for noncommercial distribution and only if you
   1.183 +    received the program in object code or executable form with such
   1.184 +    an offer, in accord with Subsection b above.)
   1.185 +
   1.186 +The source code for a work means the preferred form of the work for
   1.187 +making modifications to it.  For an executable work, complete source
   1.188 +code means all the source code for all modules it contains, plus any
   1.189 +associated interface definition files, plus the scripts used to
   1.190 +control compilation and installation of the executable.  However, as a
   1.191 +special exception, the source code distributed need not include
   1.192 +anything that is normally distributed (in either source or binary
   1.193 +form) with the major components (compiler, kernel, and so on) of the
   1.194 +operating system on which the executable runs, unless that component
   1.195 +itself accompanies the executable.
   1.196 +
   1.197 +If distribution of executable or object code is made by offering
   1.198 +access to copy from a designated place, then offering equivalent
   1.199 +access to copy the source code from the same place counts as
   1.200 +distribution of the source code, even though third parties are not
   1.201 +compelled to copy the source along with the object code.
   1.202 +
   1.203 +  4. You may not copy, modify, sublicense, or distribute the Program
   1.204 +except as expressly provided under this License.  Any attempt
   1.205 +otherwise to copy, modify, sublicense or distribute the Program is
   1.206 +void, and will automatically terminate your rights under this License.
   1.207 +However, parties who have received copies, or rights, from you under
   1.208 +this License will not have their licenses terminated so long as such
   1.209 +parties remain in full compliance.
   1.210 +
   1.211 +  5. You are not required to accept this License, since you have not
   1.212 +signed it.  However, nothing else grants you permission to modify or
   1.213 +distribute the Program or its derivative works.  These actions are
   1.214 +prohibited by law if you do not accept this License.  Therefore, by
   1.215 +modifying or distributing the Program (or any work based on the
   1.216 +Program), you indicate your acceptance of this License to do so, and
   1.217 +all its terms and conditions for copying, distributing or modifying
   1.218 +the Program or works based on it.
   1.219 +
   1.220 +  6. Each time you redistribute the Program (or any work based on the
   1.221 +Program), the recipient automatically receives a license from the
   1.222 +original licensor to copy, distribute or modify the Program subject to
   1.223 +these terms and conditions.  You may not impose any further
   1.224 +restrictions on the recipients' exercise of the rights granted herein.
   1.225 +You are not responsible for enforcing compliance by third parties to
   1.226 +this License.
   1.227 +
   1.228 +  7. If, as a consequence of a court judgment or allegation of patent
   1.229 +infringement or for any other reason (not limited to patent issues),
   1.230 +conditions are imposed on you (whether by court order, agreement or
   1.231 +otherwise) that contradict the conditions of this License, they do not
   1.232 +excuse you from the conditions of this License.  If you cannot
   1.233 +distribute so as to satisfy simultaneously your obligations under this
   1.234 +License and any other pertinent obligations, then as a consequence you
   1.235 +may not distribute the Program at all.  For example, if a patent
   1.236 +license would not permit royalty-free redistribution of the Program by
   1.237 +all those who receive copies directly or indirectly through you, then
   1.238 +the only way you could satisfy both it and this License would be to
   1.239 +refrain entirely from distribution of the Program.
   1.240 +
   1.241 +If any portion of this section is held invalid or unenforceable under
   1.242 +any particular circumstance, the balance of the section is intended to
   1.243 +apply and the section as a whole is intended to apply in other
   1.244 +circumstances.
   1.245 +
   1.246 +It is not the purpose of this section to induce you to infringe any
   1.247 +patents or other property right claims or to contest validity of any
   1.248 +such claims; this section has the sole purpose of protecting the
   1.249 +integrity of the free software distribution system, which is
   1.250 +implemented by public license practices.  Many people have made
   1.251 +generous contributions to the wide range of software distributed
   1.252 +through that system in reliance on consistent application of that
   1.253 +system; it is up to the author/donor to decide if he or she is willing
   1.254 +to distribute software through any other system and a licensee cannot
   1.255 +impose that choice.
   1.256 +
   1.257 +This section is intended to make thoroughly clear what is believed to
   1.258 +be a consequence of the rest of this License.
   1.259 +
   1.260 +  8. If the distribution and/or use of the Program is restricted in
   1.261 +certain countries either by patents or by copyrighted interfaces, the
   1.262 +original copyright holder who places the Program under this License
   1.263 +may add an explicit geographical distribution limitation excluding
   1.264 +those countries, so that distribution is permitted only in or among
   1.265 +countries not thus excluded.  In such case, this License incorporates
   1.266 +the limitation as if written in the body of this License.
   1.267 +
   1.268 +  9. The Free Software Foundation may publish revised and/or new versions
   1.269 +of the General Public License from time to time.  Such new versions will
   1.270 +be similar in spirit to the present version, but may differ in detail to
   1.271 +address new problems or concerns.
   1.272 +
   1.273 +Each version is given a distinguishing version number.  If the Program
   1.274 +specifies a version number of this License which applies to it and "any
   1.275 +later version", you have the option of following the terms and conditions
   1.276 +either of that version or of any later version published by the Free
   1.277 +Software Foundation.  If the Program does not specify a version number of
   1.278 +this License, you may choose any version ever published by the Free Software
   1.279 +Foundation.
   1.280 +
   1.281 +  10. If you wish to incorporate parts of the Program into other free
   1.282 +programs whose distribution conditions are different, write to the author
   1.283 +to ask for permission.  For software which is copyrighted by the Free
   1.284 +Software Foundation, write to the Free Software Foundation; we sometimes
   1.285 +make exceptions for this.  Our decision will be guided by the two goals
   1.286 +of preserving the free status of all derivatives of our free software and
   1.287 +of promoting the sharing and reuse of software generally.
   1.288 +
   1.289 +			    NO WARRANTY
   1.290 +
   1.291 +  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
   1.292 +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
   1.293 +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
   1.294 +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
   1.295 +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
   1.296 +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
   1.297 +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
   1.298 +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
   1.299 +REPAIR OR CORRECTION.
   1.300 +
   1.301 +  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
   1.302 +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
   1.303 +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
   1.304 +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
   1.305 +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
   1.306 +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
   1.307 +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
   1.308 +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
   1.309 +POSSIBILITY OF SUCH DAMAGES.
   1.310 +
   1.311 +		     END OF TERMS AND CONDITIONS
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/Makefile	Sun Jan 30 12:59:10 2005 +0000
     2.3 @@ -0,0 +1,737 @@
     2.4 +#############################################################################
     2.5 +# Makefile for building: vym
     2.6 +# Generated by qmake (1.07a) (Qt 3.3.1) on: Tue Jan  4 10:40:21 2005
     2.7 +# Project:  vym.pro
     2.8 +# Template: app
     2.9 +# Command: $(QMAKE) -o Makefile vym.pro
    2.10 +#############################################################################
    2.11 +
    2.12 +####### Compiler, tools and options
    2.13 +
    2.14 +CC       = gcc
    2.15 +CXX      = g++
    2.16 +LEX      = flex
    2.17 +YACC     = yacc
    2.18 +CFLAGS   = -pipe -O2 -fmessage-length=0 -Wall -fPIC -Wall -W -O2 -fmessage-length=0 -Wall -fPIC  -DQT_NO_DEBUG -DQT_SHARED -DQT_TABLET_SUPPORT -DQT_THREAD_SUPPORT
    2.19 +CXXFLAGS = -pipe -O2 -fmessage-length=0 -Wall -fPIC -Wall -W -O2 -fmessage-length=0 -Wall -fPIC  -DQT_NO_DEBUG -DQT_SHARED -DQT_TABLET_SUPPORT -DQT_THREAD_SUPPORT
    2.20 +LEXFLAGS = 
    2.21 +YACCFLAGS= -d
    2.22 +INCPATH  = -I/usr/lib/qt3/mkspecs/linux-g++ -I. -I/usr/include -I$(QTDIR)/include
    2.23 +LINK     = g++
    2.24 +LFLAGS   = 
    2.25 +LIBS     = $(SUBLIBS) -L/usr/lib64/ -L$(QTDIR)/lib64/ -L/usr/X11R6/lib64/ -lqt-mt -lXext -lX11 -lm
    2.26 +AR       = ar cqs
    2.27 +RANLIB   = 
    2.28 +MOC      = $(QTDIR)/bin/moc
    2.29 +UIC      = $(QTDIR)/bin/uic
    2.30 +QMAKE    = qmake
    2.31 +TAR      = tar -cf
    2.32 +GZIP     = gzip -9f
    2.33 +COPY     = cp -f
    2.34 +COPY_FILE= $(COPY)
    2.35 +COPY_DIR = $(COPY) -r
    2.36 +INSTALL_FILE= $(COPY_FILE)
    2.37 +INSTALL_DIR = $(COPY_DIR)
    2.38 +DEL_FILE = rm -f
    2.39 +SYMLINK  = ln -sf
    2.40 +DEL_DIR  = rmdir
    2.41 +MOVE     = mv -f
    2.42 +CHK_DIR_EXISTS= test -d
    2.43 +MKDIR    = mkdir -p
    2.44 +
    2.45 +####### Output directory
    2.46 +
    2.47 +OBJECTS_DIR = ./
    2.48 +
    2.49 +####### Files
    2.50 +
    2.51 +HEADERS = branchobj.h \
    2.52 +		exports.h \
    2.53 +		findwindow.h \
    2.54 +		flagobj.h \
    2.55 +		flagrowobj.h \
    2.56 +		floatimageobj.h \
    2.57 +		floatobj.h \
    2.58 +		frameobj.h \
    2.59 +		headingobj.h \
    2.60 +		imageobj.h \
    2.61 +		linkablemapobj.h \
    2.62 +		mainwindow.h \
    2.63 +		mapcenterobj.h \
    2.64 +		mapeditor.h \
    2.65 +		mapobj.h \
    2.66 +		misc.h \
    2.67 +		noteobj.h \
    2.68 +		ornamentedobj.h \
    2.69 +		process.h \
    2.70 +		selection.h \
    2.71 +		texteditor.h \
    2.72 +		version.h \
    2.73 +		xml.h \
    2.74 +		settings.h \
    2.75 +		options.h
    2.76 +SOURCES = branchobj.cpp \
    2.77 +		exports.cpp \
    2.78 +		findwindow.cpp \
    2.79 +		flagobj.cpp \
    2.80 +		flagrowobj.cpp \
    2.81 +		floatimageobj.cpp \
    2.82 +		floatobj.cpp \
    2.83 +		frameobj.cpp \
    2.84 +		headingobj.cpp \
    2.85 +		imageobj.cpp \
    2.86 +		linkablemapobj.cpp \
    2.87 +		main.cpp \
    2.88 +		mainwindow.cpp \
    2.89 +		mapcenterobj.cpp \
    2.90 +		mapeditor.cpp \
    2.91 +		mapobj.cpp \
    2.92 +		misc.cpp \
    2.93 +		noteobj.cpp \
    2.94 +		ornamentedobj.cpp \
    2.95 +		process.cpp \
    2.96 +		selection.cpp \
    2.97 +		texteditor.cpp \
    2.98 +		xml.cpp \
    2.99 +		settings.cpp \
   2.100 +		options.cpp
   2.101 +OBJECTS = branchobj.o \
   2.102 +		exports.o \
   2.103 +		findwindow.o \
   2.104 +		flagobj.o \
   2.105 +		flagrowobj.o \
   2.106 +		floatimageobj.o \
   2.107 +		floatobj.o \
   2.108 +		frameobj.o \
   2.109 +		headingobj.o \
   2.110 +		imageobj.o \
   2.111 +		linkablemapobj.o \
   2.112 +		main.o \
   2.113 +		mainwindow.o \
   2.114 +		mapcenterobj.o \
   2.115 +		mapeditor.o \
   2.116 +		mapobj.o \
   2.117 +		misc.o \
   2.118 +		noteobj.o \
   2.119 +		ornamentedobj.o \
   2.120 +		process.o \
   2.121 +		selection.o \
   2.122 +		texteditor.o \
   2.123 +		xml.o \
   2.124 +		settings.o \
   2.125 +		options.o \
   2.126 +		exporthtmldialog.o \
   2.127 +		exportxhtmldialog.o \
   2.128 +		showtextdialog.o \
   2.129 +		extrainfodialog.o
   2.130 +FORMS = exporthtmldialog.ui \
   2.131 +		exportxhtmldialog.ui \
   2.132 +		showtextdialog.ui \
   2.133 +		extrainfodialog.ui
   2.134 +UICDECLS = exporthtmldialog.h \
   2.135 +		exportxhtmldialog.h \
   2.136 +		showtextdialog.h \
   2.137 +		extrainfodialog.h
   2.138 +UICIMPLS = exporthtmldialog.cpp \
   2.139 +		exportxhtmldialog.cpp \
   2.140 +		showtextdialog.cpp \
   2.141 +		extrainfodialog.cpp
   2.142 +SRCMOC   = moc_findwindow.cpp \
   2.143 +		moc_linkablemapobj.cpp \
   2.144 +		moc_mainwindow.cpp \
   2.145 +		moc_mapeditor.cpp \
   2.146 +		moc_ornamentedobj.cpp \
   2.147 +		moc_process.cpp \
   2.148 +		moc_texteditor.cpp \
   2.149 +		moc_exporthtmldialog.cpp \
   2.150 +		moc_exportxhtmldialog.cpp \
   2.151 +		moc_showtextdialog.cpp \
   2.152 +		moc_extrainfodialog.cpp
   2.153 +OBJMOC = moc_findwindow.o \
   2.154 +		moc_linkablemapobj.o \
   2.155 +		moc_mainwindow.o \
   2.156 +		moc_mapeditor.o \
   2.157 +		moc_ornamentedobj.o \
   2.158 +		moc_process.o \
   2.159 +		moc_texteditor.o \
   2.160 +		moc_exporthtmldialog.o \
   2.161 +		moc_exportxhtmldialog.o \
   2.162 +		moc_showtextdialog.o \
   2.163 +		moc_extrainfodialog.o
   2.164 +DIST	   = vym.pro
   2.165 +QMAKE_TARGET = vym
   2.166 +DESTDIR  = 
   2.167 +TARGET   = vym
   2.168 +
   2.169 +first: all
   2.170 +####### Implicit rules
   2.171 +
   2.172 +.SUFFIXES: .c .o .cpp .cc .cxx .C
   2.173 +
   2.174 +.cpp.o:
   2.175 +	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
   2.176 +
   2.177 +.cc.o:
   2.178 +	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
   2.179 +
   2.180 +.cxx.o:
   2.181 +	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
   2.182 +
   2.183 +.C.o:
   2.184 +	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
   2.185 +
   2.186 +.c.o:
   2.187 +	$(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<
   2.188 +
   2.189 +####### Build rules
   2.190 +
   2.191 +all: Makefile $(TARGET)
   2.192 +
   2.193 +$(TARGET):  $(UICDECLS) $(OBJECTS) $(OBJMOC)  
   2.194 +	$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJMOC) $(OBJCOMP) $(LIBS)
   2.195 +
   2.196 +mocables: $(SRCMOC)
   2.197 +uicables: $(UICDECLS) $(UICIMPLS)
   2.198 +
   2.199 +$(MOC): 
   2.200 +	( cd $(QTDIR)/src/moc && $(MAKE) )
   2.201 +
   2.202 +Makefile: vym.pro  /usr/lib/qt3/mkspecs/linux-g++/qmake.conf /usr/lib/qt3/lib64/libqt-mt.prl
   2.203 +	$(QMAKE) -o Makefile vym.pro
   2.204 +qmake: 
   2.205 +	@$(QMAKE) -o Makefile vym.pro
   2.206 +
   2.207 +dist: 
   2.208 +	@mkdir -p .tmp/vym && $(COPY_FILE) --parents $(SOURCES) $(HEADERS) $(FORMS) $(DIST) .tmp/vym/ && $(COPY_FILE) --parents vym_de.ts .tmp/vym/ && $(COPY_FILE) --parents exporthtmldialog.ui.h exportxhtmldialog.ui.h showtextdialog.ui.h extrainfodialog.ui.h .tmp/vym/ && ( cd `dirname .tmp/vym` && $(TAR) vym.tar vym && $(GZIP) vym.tar ) && $(MOVE) `dirname .tmp/vym`/vym.tar.gz . && $(DEL_FILE) -r .tmp/vym
   2.209 +
   2.210 +mocclean:
   2.211 +	-$(DEL_FILE) $(OBJMOC)
   2.212 +	-$(DEL_FILE) $(SRCMOC)
   2.213 +
   2.214 +uiclean:
   2.215 +	-$(DEL_FILE) $(UICIMPLS) $(UICDECLS)
   2.216 +
   2.217 +yaccclean:
   2.218 +lexclean:
   2.219 +clean: mocclean uiclean
   2.220 +	-$(DEL_FILE) $(OBJECTS)
   2.221 +	-$(DEL_FILE) *~ core *.core
   2.222 +
   2.223 +
   2.224 +####### Sub-libraries
   2.225 +
   2.226 +distclean: clean
   2.227 +	-$(DEL_FILE) $(TARGET) $(TARGET)
   2.228 +
   2.229 +
   2.230 +FORCE:
   2.231 +
   2.232 +####### Compile
   2.233 +
   2.234 +branchobj.o: branchobj.cpp branchobj.h \
   2.235 +		texteditor.h \
   2.236 +		mapeditor.h \
   2.237 +		mainwindow.h \
   2.238 +		floatimageobj.h \
   2.239 +		linkablemapobj.h \
   2.240 +		ornamentedobj.h \
   2.241 +		floatobj.h \
   2.242 +		frameobj.h \
   2.243 +		noteobj.h \
   2.244 +		headingobj.h \
   2.245 +		flagrowobj.h \
   2.246 +		mapobj.h \
   2.247 +		misc.h \
   2.248 +		flagobj.h \
   2.249 +		imageobj.h \
   2.250 +		mapcenterobj.h \
   2.251 +		version.h \
   2.252 +		xml.h \
   2.253 +		findwindow.h
   2.254 +
   2.255 +exports.o: exports.cpp exports.h \
   2.256 +		linkablemapobj.h \
   2.257 +		mapcenterobj.h \
   2.258 +		branchobj.h \
   2.259 +		version.h \
   2.260 +		floatimageobj.h \
   2.261 +		ornamentedobj.h \
   2.262 +		floatobj.h \
   2.263 +		frameobj.h \
   2.264 +		noteobj.h \
   2.265 +		headingobj.h \
   2.266 +		flagrowobj.h \
   2.267 +		mapobj.h \
   2.268 +		misc.h \
   2.269 +		flagobj.h \
   2.270 +		imageobj.h
   2.271 +
   2.272 +findwindow.o: findwindow.cpp findwindow.h
   2.273 +
   2.274 +flagobj.o: flagobj.cpp flagobj.h \
   2.275 +		mapobj.h \
   2.276 +		imageobj.h \
   2.277 +		misc.h
   2.278 +
   2.279 +flagrowobj.o: flagrowobj.cpp flagrowobj.h \
   2.280 +		mapobj.h \
   2.281 +		flagobj.h \
   2.282 +		misc.h \
   2.283 +		imageobj.h
   2.284 +
   2.285 +floatimageobj.o: floatimageobj.cpp floatimageobj.h \
   2.286 +		branchobj.h \
   2.287 +		floatobj.h \
   2.288 +		linkablemapobj.h \
   2.289 +		frameobj.h \
   2.290 +		noteobj.h \
   2.291 +		headingobj.h \
   2.292 +		flagrowobj.h \
   2.293 +		mapobj.h \
   2.294 +		misc.h \
   2.295 +		flagobj.h \
   2.296 +		imageobj.h \
   2.297 +		ornamentedobj.h
   2.298 +
   2.299 +floatobj.o: floatobj.cpp floatobj.h \
   2.300 +		linkablemapobj.h \
   2.301 +		frameobj.h \
   2.302 +		noteobj.h \
   2.303 +		headingobj.h \
   2.304 +		flagrowobj.h \
   2.305 +		mapobj.h \
   2.306 +		misc.h \
   2.307 +		flagobj.h \
   2.308 +		imageobj.h
   2.309 +
   2.310 +frameobj.o: frameobj.cpp frameobj.h \
   2.311 +		mapobj.h \
   2.312 +		misc.h
   2.313 +
   2.314 +headingobj.o: headingobj.cpp headingobj.h \
   2.315 +		mapobj.h \
   2.316 +		misc.h
   2.317 +
   2.318 +imageobj.o: imageobj.cpp imageobj.h \
   2.319 +		mapobj.h \
   2.320 +		misc.h
   2.321 +
   2.322 +linkablemapobj.o: linkablemapobj.cpp linkablemapobj.h \
   2.323 +		branchobj.h \
   2.324 +		mapeditor.h \
   2.325 +		version.h \
   2.326 +		frameobj.h \
   2.327 +		noteobj.h \
   2.328 +		headingobj.h \
   2.329 +		flagrowobj.h \
   2.330 +		mapobj.h \
   2.331 +		misc.h \
   2.332 +		flagobj.h \
   2.333 +		imageobj.h \
   2.334 +		floatimageobj.h \
   2.335 +		ornamentedobj.h \
   2.336 +		floatobj.h \
   2.337 +		mapcenterobj.h
   2.338 +
   2.339 +main.o: main.cpp settings.h \
   2.340 +		options.h \
   2.341 +		mainwindow.h \
   2.342 +		icons/vym-48x48.xpm \
   2.343 +		icons/vym-editor.xpm \
   2.344 +		flagrowobj.h \
   2.345 +		misc.h \
   2.346 +		xml.h \
   2.347 +		texteditor.h \
   2.348 +		mapeditor.h \
   2.349 +		findwindow.h \
   2.350 +		mapcenterobj.h \
   2.351 +		branchobj.h \
   2.352 +		version.h \
   2.353 +		floatimageobj.h \
   2.354 +		linkablemapobj.h \
   2.355 +		ornamentedobj.h \
   2.356 +		floatobj.h \
   2.357 +		frameobj.h \
   2.358 +		noteobj.h \
   2.359 +		headingobj.h \
   2.360 +		mapobj.h \
   2.361 +		flagobj.h \
   2.362 +		imageobj.h
   2.363 +
   2.364 +mainwindow.o: mainwindow.cpp mainwindow.h \
   2.365 +		version.h \
   2.366 +		icons/filenew.xpm \
   2.367 +		icons/fileopen.xpm \
   2.368 +		icons/filesave.xpm \
   2.369 +		icons/fileprint.xpm \
   2.370 +		icons/editundo.xpm \
   2.371 +		icons/editcopy.xpm \
   2.372 +		icons/editcut.xpm \
   2.373 +		icons/editpaste.xpm \
   2.374 +		icons/editmoveup.xpm \
   2.375 +		icons/editmovedown.xpm \
   2.376 +		icons/formatcoloritem.xpm \
   2.377 +		icons/formatcolorbranch.xpm \
   2.378 +		icons/formatcolorpicker.xpm \
   2.379 +		icons/viewzoomreset.xpm \
   2.380 +		icons/viewzoomin.xpm \
   2.381 +		icons/viewzoomout.xpm \
   2.382 +		icons/vym-48x48.xpm \
   2.383 +		icons/flag-note.xpm \
   2.384 +		icons/flag-url.xpm \
   2.385 +		icons/flag-vymlink.xpm \
   2.386 +		icons/flag-scrolled-right.xpm \
   2.387 +		flagrowobj.h \
   2.388 +		texteditor.h \
   2.389 +		mapeditor.h \
   2.390 +		exporthtmldialog.h \
   2.391 +		exportxhtmldialog.h \
   2.392 +		showtextdialog.h \
   2.393 +		process.h \
   2.394 +		settings.h \
   2.395 +		options.h \
   2.396 +		xml.h \
   2.397 +		findwindow.h \
   2.398 +		mapcenterobj.h \
   2.399 +		branchobj.h \
   2.400 +		floatimageobj.h \
   2.401 +		linkablemapobj.h \
   2.402 +		ornamentedobj.h \
   2.403 +		floatobj.h \
   2.404 +		frameobj.h \
   2.405 +		noteobj.h \
   2.406 +		headingobj.h \
   2.407 +		mapobj.h \
   2.408 +		misc.h \
   2.409 +		flagobj.h \
   2.410 +		imageobj.h
   2.411 +
   2.412 +mapcenterobj.o: mapcenterobj.cpp mapcenterobj.h \
   2.413 +		floatimageobj.h \
   2.414 +		mapeditor.h \
   2.415 +		branchobj.h \
   2.416 +		version.h \
   2.417 +		linkablemapobj.h \
   2.418 +		ornamentedobj.h \
   2.419 +		floatobj.h \
   2.420 +		frameobj.h \
   2.421 +		noteobj.h \
   2.422 +		headingobj.h \
   2.423 +		flagrowobj.h \
   2.424 +		mapobj.h \
   2.425 +		misc.h \
   2.426 +		flagobj.h \
   2.427 +		imageobj.h
   2.428 +
   2.429 +mapeditor.o: mapeditor.cpp mapeditor.h \
   2.430 +		version.h \
   2.431 +		xml.h \
   2.432 +		texteditor.h \
   2.433 +		linkablemapobj.h \
   2.434 +		exports.h \
   2.435 +		misc.h \
   2.436 +		mainwindow.h \
   2.437 +		extrainfodialog.h \
   2.438 +		settings.h \
   2.439 +		icons/flag-note.xpm \
   2.440 +		icons/flag-url.xpm \
   2.441 +		icons/flag-vymlink.xpm \
   2.442 +		icons/flag-scrolled-right.xpm \
   2.443 +		icons/flag-tmpUnscrolled-right.xpm \
   2.444 +		icons/flag-questionmark.xpm \
   2.445 +		icons/flag-exclamationmark.xpm \
   2.446 +		icons/flag-hook-green.xpm \
   2.447 +		icons/flag-cross-red.xpm \
   2.448 +		icons/flag-stopsign.xpm \
   2.449 +		icons/flag-smiley-good.xpm \
   2.450 +		icons/flag-smiley-sad.xpm \
   2.451 +		icons/flag-clock.xpm \
   2.452 +		icons/flag-lamp.xpm \
   2.453 +		icons/flag-arrow-up.xpm \
   2.454 +		icons/flag-arrow-down.xpm \
   2.455 +		icons/flag-thumb-up.xpm \
   2.456 +		icons/flag-thumb-down.xpm \
   2.457 +		icons/flag-heart.xpm \
   2.458 +		icons/flag-flash.xpm \
   2.459 +		icons/flag-lifebelt.xpm \
   2.460 +		mapcenterobj.h \
   2.461 +		branchobj.h \
   2.462 +		floatimageobj.h \
   2.463 +		ornamentedobj.h \
   2.464 +		floatobj.h \
   2.465 +		frameobj.h \
   2.466 +		noteobj.h \
   2.467 +		headingobj.h \
   2.468 +		flagrowobj.h \
   2.469 +		mapobj.h \
   2.470 +		flagobj.h \
   2.471 +		imageobj.h \
   2.472 +		findwindow.h
   2.473 +
   2.474 +mapobj.o: mapobj.cpp mapobj.h \
   2.475 +		misc.h
   2.476 +
   2.477 +misc.o: misc.cpp misc.h
   2.478 +
   2.479 +noteobj.o: noteobj.cpp noteobj.h \
   2.480 +		misc.h
   2.481 +
   2.482 +ornamentedobj.o: ornamentedobj.cpp ornamentedobj.h \
   2.483 +		texteditor.h \
   2.484 +		mapeditor.h \
   2.485 +		linkablemapobj.h \
   2.486 +		frameobj.h \
   2.487 +		noteobj.h \
   2.488 +		headingobj.h \
   2.489 +		flagrowobj.h \
   2.490 +		mapobj.h \
   2.491 +		misc.h \
   2.492 +		flagobj.h \
   2.493 +		imageobj.h \
   2.494 +		mapcenterobj.h \
   2.495 +		branchobj.h \
   2.496 +		version.h \
   2.497 +		floatimageobj.h \
   2.498 +		floatobj.h
   2.499 +
   2.500 +process.o: process.cpp process.h
   2.501 +
   2.502 +selection.o: selection.cpp selection.h \
   2.503 +		linkablemapobj.h \
   2.504 +		frameobj.h \
   2.505 +		noteobj.h \
   2.506 +		headingobj.h \
   2.507 +		flagrowobj.h \
   2.508 +		mapobj.h \
   2.509 +		misc.h \
   2.510 +		flagobj.h \
   2.511 +		imageobj.h
   2.512 +
   2.513 +texteditor.o: texteditor.cpp texteditor.h \
   2.514 +		icons/fileopen.xpm \
   2.515 +		icons/filesave.xpm \
   2.516 +		icons/fileprint.xpm \
   2.517 +		icons/editundo.xpm \
   2.518 +		icons/editredo.xpm \
   2.519 +		icons/editcopy.xpm \
   2.520 +		icons/editcut.xpm \
   2.521 +		icons/editpaste.xpm \
   2.522 +		icons/edittrash.xpm \
   2.523 +		icons/formatfixedfont.xpm \
   2.524 +		icons/formattextbold.xpm \
   2.525 +		icons/formattextitalic.xpm \
   2.526 +		icons/formattextunder.xpm \
   2.527 +		icons/formattextleft.xpm \
   2.528 +		icons/formattextcenter.xpm \
   2.529 +		icons/formattextright.xpm \
   2.530 +		icons/formattextjustify.xpm
   2.531 +
   2.532 +xml.o: xml.cpp xml.h \
   2.533 +		misc.h \
   2.534 +		settings.h \
   2.535 +		version.h \
   2.536 +		mapcenterobj.h \
   2.537 +		mapeditor.h \
   2.538 +		branchobj.h \
   2.539 +		floatimageobj.h \
   2.540 +		linkablemapobj.h \
   2.541 +		ornamentedobj.h \
   2.542 +		floatobj.h \
   2.543 +		frameobj.h \
   2.544 +		noteobj.h \
   2.545 +		headingobj.h \
   2.546 +		flagrowobj.h \
   2.547 +		mapobj.h \
   2.548 +		flagobj.h \
   2.549 +		imageobj.h
   2.550 +
   2.551 +settings.o: settings.cpp settings.h \
   2.552 +		misc.h
   2.553 +
   2.554 +options.o: options.cpp options.h
   2.555 +
   2.556 +exporthtmldialog.h: exporthtmldialog.ui showtextdialog.h
   2.557 +	$(UIC) exporthtmldialog.ui -o exporthtmldialog.h
   2.558 +
   2.559 +exporthtmldialog.cpp: exporthtmldialog.h exporthtmldialog.ui showtextdialog.h
   2.560 +	$(UIC) exporthtmldialog.ui -i exporthtmldialog.h -o exporthtmldialog.cpp
   2.561 +
   2.562 +exportxhtmldialog.h: exportxhtmldialog.ui process.h \
   2.563 +		showtextdialog.h
   2.564 +	$(UIC) exportxhtmldialog.ui -o exportxhtmldialog.h
   2.565 +
   2.566 +exportxhtmldialog.cpp: exportxhtmldialog.h exportxhtmldialog.ui process.h \
   2.567 +		showtextdialog.h
   2.568 +	$(UIC) exportxhtmldialog.ui -i exportxhtmldialog.h -o exportxhtmldialog.cpp
   2.569 +
   2.570 +showtextdialog.h: showtextdialog.ui 
   2.571 +	$(UIC) showtextdialog.ui -o showtextdialog.h
   2.572 +
   2.573 +showtextdialog.cpp: showtextdialog.h showtextdialog.ui 
   2.574 +	$(UIC) showtextdialog.ui -i showtextdialog.h -o showtextdialog.cpp
   2.575 +
   2.576 +extrainfodialog.h: extrainfodialog.ui 
   2.577 +	$(UIC) extrainfodialog.ui -o extrainfodialog.h
   2.578 +
   2.579 +extrainfodialog.cpp: extrainfodialog.h extrainfodialog.ui 
   2.580 +	$(UIC) extrainfodialog.ui -i extrainfodialog.h -o extrainfodialog.cpp
   2.581 +
   2.582 +exporthtmldialog.o: exporthtmldialog.cpp settings.h \
   2.583 +		misc.h \
   2.584 +		icons/flag-url.xpm \
   2.585 +		exporthtmldialog.ui.h \
   2.586 +		exporthtmldialog.h
   2.587 +
   2.588 +exportxhtmldialog.o: exportxhtmldialog.cpp settings.h \
   2.589 +		icons/flag-url.xpm \
   2.590 +		exportxhtmldialog.ui.h \
   2.591 +		exportxhtmldialog.h
   2.592 +
   2.593 +showtextdialog.o: showtextdialog.cpp showtextdialog.ui.h \
   2.594 +		showtextdialog.h
   2.595 +
   2.596 +extrainfodialog.o: extrainfodialog.cpp extrainfodialog.ui.h \
   2.597 +		extrainfodialog.h
   2.598 +
   2.599 +moc_findwindow.o: moc_findwindow.cpp  findwindow.h 
   2.600 +
   2.601 +moc_linkablemapobj.o: moc_linkablemapobj.cpp  linkablemapobj.h frameobj.h \
   2.602 +		noteobj.h \
   2.603 +		headingobj.h \
   2.604 +		flagrowobj.h \
   2.605 +		mapobj.h \
   2.606 +		misc.h \
   2.607 +		flagobj.h \
   2.608 +		imageobj.h
   2.609 +
   2.610 +moc_mainwindow.o: moc_mainwindow.cpp  mainwindow.h xml.h \
   2.611 +		texteditor.h \
   2.612 +		mapeditor.h \
   2.613 +		findwindow.h \
   2.614 +		mapcenterobj.h \
   2.615 +		branchobj.h \
   2.616 +		version.h \
   2.617 +		floatimageobj.h \
   2.618 +		linkablemapobj.h \
   2.619 +		ornamentedobj.h \
   2.620 +		floatobj.h \
   2.621 +		frameobj.h \
   2.622 +		noteobj.h \
   2.623 +		headingobj.h \
   2.624 +		flagrowobj.h \
   2.625 +		mapobj.h \
   2.626 +		misc.h \
   2.627 +		flagobj.h \
   2.628 +		imageobj.h
   2.629 +
   2.630 +moc_mapeditor.o: moc_mapeditor.cpp  mapeditor.h mapcenterobj.h \
   2.631 +		misc.h \
   2.632 +		branchobj.h \
   2.633 +		version.h \
   2.634 +		floatimageobj.h \
   2.635 +		linkablemapobj.h \
   2.636 +		ornamentedobj.h \
   2.637 +		floatobj.h \
   2.638 +		frameobj.h \
   2.639 +		noteobj.h \
   2.640 +		headingobj.h \
   2.641 +		flagrowobj.h \
   2.642 +		mapobj.h \
   2.643 +		flagobj.h \
   2.644 +		imageobj.h
   2.645 +
   2.646 +moc_ornamentedobj.o: moc_ornamentedobj.cpp  ornamentedobj.h linkablemapobj.h \
   2.647 +		frameobj.h \
   2.648 +		noteobj.h \
   2.649 +		headingobj.h \
   2.650 +		flagrowobj.h \
   2.651 +		mapobj.h \
   2.652 +		misc.h \
   2.653 +		flagobj.h \
   2.654 +		imageobj.h
   2.655 +
   2.656 +moc_process.o: moc_process.cpp  process.h 
   2.657 +
   2.658 +moc_texteditor.o: moc_texteditor.cpp  texteditor.h 
   2.659 +
   2.660 +moc_exporthtmldialog.o: moc_exporthtmldialog.cpp  exporthtmldialog.h showtextdialog.h
   2.661 +
   2.662 +moc_exportxhtmldialog.o: moc_exportxhtmldialog.cpp  exportxhtmldialog.h process.h \
   2.663 +		showtextdialog.h
   2.664 +
   2.665 +moc_showtextdialog.o: moc_showtextdialog.cpp  showtextdialog.h 
   2.666 +
   2.667 +moc_extrainfodialog.o: moc_extrainfodialog.cpp  extrainfodialog.h 
   2.668 +
   2.669 +moc_findwindow.cpp: $(MOC) findwindow.h
   2.670 +	$(MOC) findwindow.h -o moc_findwindow.cpp
   2.671 +
   2.672 +moc_linkablemapobj.cpp: $(MOC) linkablemapobj.h
   2.673 +	$(MOC) linkablemapobj.h -o moc_linkablemapobj.cpp
   2.674 +
   2.675 +moc_mainwindow.cpp: $(MOC) mainwindow.h
   2.676 +	$(MOC) mainwindow.h -o moc_mainwindow.cpp
   2.677 +
   2.678 +moc_mapeditor.cpp: $(MOC) mapeditor.h
   2.679 +	$(MOC) mapeditor.h -o moc_mapeditor.cpp
   2.680 +
   2.681 +moc_ornamentedobj.cpp: $(MOC) ornamentedobj.h
   2.682 +	$(MOC) ornamentedobj.h -o moc_ornamentedobj.cpp
   2.683 +
   2.684 +moc_process.cpp: $(MOC) process.h
   2.685 +	$(MOC) process.h -o moc_process.cpp
   2.686 +
   2.687 +moc_texteditor.cpp: $(MOC) texteditor.h
   2.688 +	$(MOC) texteditor.h -o moc_texteditor.cpp
   2.689 +
   2.690 +moc_exporthtmldialog.cpp: $(MOC) exporthtmldialog.h
   2.691 +	$(MOC) exporthtmldialog.h -o moc_exporthtmldialog.cpp
   2.692 +
   2.693 +moc_exportxhtmldialog.cpp: $(MOC) exportxhtmldialog.h
   2.694 +	$(MOC) exportxhtmldialog.h -o moc_exportxhtmldialog.cpp
   2.695 +
   2.696 +moc_showtextdialog.cpp: $(MOC) showtextdialog.h
   2.697 +	$(MOC) showtextdialog.h -o moc_showtextdialog.cpp
   2.698 +
   2.699 +moc_extrainfodialog.cpp: $(MOC) extrainfodialog.h
   2.700 +	$(MOC) extrainfodialog.h -o moc_extrainfodialog.cpp
   2.701 +
   2.702 +####### Install
   2.703 +
   2.704 +install_target: all 
   2.705 +	@$(CHK_DIR_EXISTS) "$(INSTALL_ROOT)/usr/bin/" || $(MKDIR) "$(INSTALL_ROOT)/usr/bin/"
   2.706 +	-$(INSTALL_FILE) "$(QMAKE_TARGET)" "$(INSTALL_ROOT)/usr/bin/$(QMAKE_TARGET)"
   2.707 +
   2.708 +uninstall_target: 
   2.709 +	-$(DEL_FILE) "$(INSTALL_ROOT)/usr/bin/$(QMAKE_TARGET)"
   2.710 +	-$(DEL_DIR) "$(INSTALL_ROOT)/usr/bin/"
   2.711 +
   2.712 +
   2.713 +install_support: all 
   2.714 +	@$(CHK_DIR_EXISTS) "$(INSTALL_ROOT)/usr/share/vym/" || $(MKDIR) "$(INSTALL_ROOT)/usr/share/vym/"
   2.715 +	-$(INSTALL_DIR) "styles" "$(INSTALL_ROOT)/usr/share/vym/"
   2.716 +	-$(INSTALL_DIR) "scripts" "$(INSTALL_ROOT)/usr/share/vym/"
   2.717 +	-$(INSTALL_DIR) "icons" "$(INSTALL_ROOT)/usr/share/vym/"
   2.718 +
   2.719 +
   2.720 +uninstall_support: 
   2.721 +	-$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/vym/styles"
   2.722 +	-$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/vym/scripts"
   2.723 +	-$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/vym/icons"
   2.724 +	-$(DEL_DIR) "$(INSTALL_ROOT)/usr/share/vym/"
   2.725 +
   2.726 +
   2.727 +install_demo: all 
   2.728 +	@$(CHK_DIR_EXISTS) "$(INSTALL_ROOT)/usr/share/vym/" || $(MKDIR) "$(INSTALL_ROOT)/usr/share/vym/"
   2.729 +	-$(INSTALL_DIR) "demos" "$(INSTALL_ROOT)/usr/share/vym/"
   2.730 +
   2.731 +
   2.732 +uninstall_demo: 
   2.733 +	-$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/vym/demos"
   2.734 +	-$(DEL_DIR) "$(INSTALL_ROOT)/usr/share/vym/"
   2.735 +
   2.736 +
   2.737 +install: install_target install_support install_demo  
   2.738 +
   2.739 +uninstall: uninstall_target uninstall_support uninstall_demo  
   2.740 +
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/branchobj.cpp	Sun Jan 30 12:59:10 2005 +0000
     3.3 @@ -0,0 +1,1184 @@
     3.4 +#include "branchobj.h"
     3.5 +#include "texteditor.h"
     3.6 +#include "mapeditor.h"
     3.7 +#include "mainwindow.h"
     3.8 +
     3.9 +extern TextEditor *textEditor;
    3.10 +extern Main *mainWindow;
    3.11 +extern FlagRowObj *standardFlagsDefault;
    3.12 +extern QAction *actionEditOpenURL;
    3.13 +
    3.14 +
    3.15 +/////////////////////////////////////////////////////////////////
    3.16 +// BranchObj
    3.17 +/////////////////////////////////////////////////////////////////
    3.18 +
    3.19 +BranchObj* BranchObj::itLast=NULL;
    3.20 +
    3.21 +
    3.22 +BranchObj::BranchObj () :OrnamentedObj()
    3.23 +{
    3.24 +//    cout << "Const BranchObj ()\n";
    3.25 +    setParObj (this);	
    3.26 +    init();
    3.27 +    depth=-1;
    3.28 +}
    3.29 +
    3.30 +BranchObj::BranchObj (QCanvas* c):OrnamentedObj (c)
    3.31 +{
    3.32 +//    cout << "Const BranchObj (c)  called from MapCenterObj (c)\n";
    3.33 +    canvas=c;
    3.34 +}
    3.35 +
    3.36 +BranchObj::BranchObj (QCanvas* c, LinkableMapObj* p):OrnamentedObj (c)
    3.37 +{
    3.38 +//    cout << "Const BranchObj (c,p)\n";
    3.39 +    canvas=c;
    3.40 +    setParObj (p);	
    3.41 +    depth=p->getDepth()+1;
    3.42 +	if (depth==1)
    3.43 +		// Calc angle to mapCenter if I am a mainbranch
    3.44 +		// needed for reordering the mainbranches clockwise 
    3.45 +		// around mapcenter 
    3.46 +		angle=getAngle (QPoint ((int)(x() - parObj->getChildPos().x() ), 
    3.47 +								(int)(y() - parObj->getChildPos().y() ) ) );
    3.48 +    init();
    3.49 +}
    3.50 +
    3.51 +BranchObj::~BranchObj ()
    3.52 +{
    3.53 +    //cout << "Destr BranchObj\n";
    3.54 +	// Check, if this branch was the last child to be deleted
    3.55 +	// If so, unset the scrolled flags
    3.56 +
    3.57 +	BranchObj *po=(BranchObj*)(parObj);
    3.58 +	if (po)
    3.59 +	{
    3.60 +		BranchObj *bo=((BranchObj*)(parObj))->getLastBranch();
    3.61 +		if (!bo) po->unScroll();
    3.62 +	}
    3.63 +}
    3.64 +
    3.65 +bool BranchObj::operator< ( const BranchObj & other )
    3.66 +{
    3.67 +    return  angle < other.angle;
    3.68 +}
    3.69 +
    3.70 +bool BranchObj::operator== ( const BranchObj & other )
    3.71 +{
    3.72 +    return angle == other.angle;
    3.73 +}
    3.74 +
    3.75 +int BranchObjPtrList::compareItems ( QPtrCollection::Item i, QPtrCollection::Item j)
    3.76 +{
    3.77 +	// Make sure PtrList::find works
    3.78 +	if (i==j) return 0;
    3.79 +
    3.80 +	if ( ((BranchObj*)(i))->angle > ((BranchObj*)(j))->angle )
    3.81 +		return 1;
    3.82 +	else
    3.83 +		return -1;
    3.84 +}
    3.85 +
    3.86 +void BranchObj::init () 
    3.87 +{
    3.88 +    branch.setAutoDelete (true);
    3.89 +    floatimage.setAutoDelete (true);
    3.90 +
    3.91 +	absPos=getRandPos();
    3.92 +	absPos+=parObj->getChildPos();
    3.93 +
    3.94 +    // TODO This should be done in TextObj later
    3.95 +    QFont font("Sans Serif,8,-1,5,50,0,0,0,0,0");
    3.96 +//    font.setPointSize(12);
    3.97 +   heading->setFont(font );
    3.98 +//    heading->setText(QObject::tr("new branch"));
    3.99 +
   3.100 +    lastSelectedBranch=-1;
   3.101 +
   3.102 +    setChildObj(this);
   3.103 +
   3.104 +	scrolled=false;
   3.105 +	tmpUnscrolled=false;
   3.106 +
   3.107 +	url="";
   3.108 +	vymLink="";
   3.109 +}
   3.110 +
   3.111 +void BranchObj::copy (BranchObj* other)
   3.112 +{
   3.113 +    OrnamentedObj::copy(other);
   3.114 +
   3.115 +	branch.clear();
   3.116 +    BranchObj* b;
   3.117 +    for (b=other->branch.first(); b;b=other->branch.next() ) 
   3.118 +		// Make deep copy of b
   3.119 +		// Because addBranch again calls copy for the childs,
   3.120 +		// Those will get a deep copy, too
   3.121 +		addBranch(b);	
   3.122 +
   3.123 +	FloatImageObj *fi;
   3.124 +	for (fi=other->floatimage.first(); fi;fi=other->floatimage.next() )
   3.125 +		addFloatImage (fi);
   3.126 +
   3.127 +	scrolled=other->scrolled;
   3.128 +	tmpUnscrolled=other->tmpUnscrolled;
   3.129 +	setVisibility (other->visible);
   3.130 +
   3.131 +	url=other->url;
   3.132 +	vymLink=other->vymLink;
   3.133 +
   3.134 +	angle=other->angle;
   3.135 +
   3.136 +    positionBBox();
   3.137 +}
   3.138 +
   3.139 +void BranchObj::clear() 
   3.140 +{
   3.141 +	branch.clear();
   3.142 +	floatimage.clear();
   3.143 +}
   3.144 +
   3.145 +int BranchObj::getNum()
   3.146 +{
   3.147 +	if (parObj)
   3.148 +		return ((BranchObj*)(parObj))->getNum ((BranchObj*)(this));
   3.149 +	else
   3.150 +		return 0;
   3.151 +}
   3.152 +
   3.153 +int BranchObj::getNum(BranchObj *bo)
   3.154 +{
   3.155 +	return branch.findRef (bo);
   3.156 +}
   3.157 +
   3.158 +int BranchObj::getFloatImageNum(FloatImageObj *fio)
   3.159 +{
   3.160 +	return floatimage.findRef (fio);
   3.161 +}
   3.162 +
   3.163 +int BranchObj::countBranches()
   3.164 +{
   3.165 +	return branch.count();
   3.166 +}
   3.167 +
   3.168 +int BranchObj::countFloatImages()
   3.169 +{
   3.170 +	return floatimage.count();
   3.171 +}
   3.172 +
   3.173 +void BranchObj::setParObjTmp(LinkableMapObj* lmo, QPoint m, int off)
   3.174 +{
   3.175 +	// Temporary link to lmo
   3.176 +	// m is position of mouse pointer 
   3.177 +	// offset 0: default 1: below lmo   -1 above lmo  (if possible)
   3.178 +
   3.179 +
   3.180 +	BranchObj* o=(BranchObj*)(lmo);
   3.181 +	if (!parObjTmpBuf) 
   3.182 +		parObjTmpBuf=parObj;
   3.183 +
   3.184 +	// ignore mapcenter and mainbranch
   3.185 +	if (lmo->getDepth()<2) off=0;
   3.186 +	if (off==0)
   3.187 +	{
   3.188 +		link2ParPos=false;
   3.189 +		parObj=o;
   3.190 +	}	
   3.191 +	else
   3.192 +	{	
   3.193 +		link2ParPos=true;
   3.194 +		if (off>0)
   3.195 +			parObj=o->getParObj();
   3.196 +		else	
   3.197 +			parObj=o->getParObj();
   3.198 +		parObj=o;
   3.199 +	}		
   3.200 +
   3.201 +	depth=parObj->getDepth()+1;
   3.202 +
   3.203 +	// setLinkStyle calls updateLink, only set it once
   3.204 +	if (style!=getDefLinkStyle() ) setLinkStyle (getDefLinkStyle());
   3.205 +
   3.206 +	// Move temporary to new position at destination
   3.207 +	// Usually the positioning would be done by reposition(),
   3.208 +	// but then also the destination branch would "Jump" around...
   3.209 +	// Better just do it approximately
   3.210 +	if (depth==1)
   3.211 +	{	// new parent is the mapcenter itself
   3.212 +
   3.213 +		QPoint p= normalise ( QPoint (m.x() - o->getChildPos().x(),
   3.214 +									  m.y() - o->getChildPos().y() ));
   3.215 +		if (p.x()<0) p.setX( p.x()-bbox.width() );
   3.216 +		move2RelPos (p);
   3.217 +	} else
   3.218 +	{	
   3.219 +		int y;
   3.220 +		if (off==0)
   3.221 +		{
   3.222 +			// new parent is just a branch, link to it
   3.223 +			QRect t=o->getBBoxSizeWithChilds();
   3.224 +			if (o->getLastBranch())
   3.225 +				y=t.y() + t.height() ;
   3.226 +			else
   3.227 +				y=t.y();
   3.228 +
   3.229 +		} else
   3.230 +		{
   3.231 +			if (off<0)
   3.232 +				// we want to link above lmo
   3.233 +				y=o->y() - height() + 5;
   3.234 +			else	
   3.235 +				// we want to link below lmo
   3.236 +				// Bottom of sel should be 5 pixels above
   3.237 +				// the bottom of the branch _below_ the target:
   3.238 +				// Don't try to find that branch, guess 12 pixels
   3.239 +				y=o->getChildPos().y()  -height() + 12; 
   3.240 +		}	
   3.241 +		if (o->getOrientation()==OrientLeftOfCenter)
   3.242 +			move ( o->getChildPos().x() - linkwidth, y );
   3.243 +		else	
   3.244 +			move (o->getChildPos().x() + linkwidth, y );
   3.245 +	}	
   3.246 +
   3.247 +	// updateLink is called implicitly in move
   3.248 +	reposition();	// FIXME shouldn't be this a request?
   3.249 +}
   3.250 +
   3.251 +void BranchObj::unsetParObjTmp()
   3.252 +{
   3.253 +	if (parObjTmpBuf) 
   3.254 +	{
   3.255 +		link2ParPos=false;
   3.256 +		parObj=parObjTmpBuf;
   3.257 +		parObjTmpBuf=NULL;
   3.258 +		depth=parObj->getDepth()+1;
   3.259 +		setLinkStyle (getDefLinkStyle() );
   3.260 +	}		
   3.261 +}
   3.262 +
   3.263 +void BranchObj::unScroll()
   3.264 +{
   3.265 +	if (tmpUnscrolled) resetTmpUnscroll();
   3.266 +	if (scrolled) toggleScroll();
   3.267 +}
   3.268 +
   3.269 +void BranchObj::toggleScroll()
   3.270 +{
   3.271 +	BranchObj *bo;
   3.272 +	if (scrolled)
   3.273 +	{
   3.274 +		scrolled=false;
   3.275 +		systemFlags->deactivate("scrolledright");
   3.276 +		for (bo=branch.first(); bo; bo=branch.next() )
   3.277 +		{
   3.278 +			bo->setVisibility(true);
   3.279 +		}
   3.280 +	} else
   3.281 +	{
   3.282 +		scrolled=true;
   3.283 +		systemFlags->activate("scrolledright");
   3.284 +		for (bo=branch.first(); bo; bo=branch.next() )
   3.285 +		{
   3.286 +			bo->setVisibility(false);
   3.287 +		}
   3.288 +	}
   3.289 +	calcBBoxSize();
   3.290 +	positionBBox();	
   3.291 +	move (absPos.x(), absPos.y() );
   3.292 +	forceReposition();
   3.293 +}
   3.294 +
   3.295 +bool BranchObj::isScrolled()
   3.296 +{
   3.297 +	return scrolled;
   3.298 +}
   3.299 +
   3.300 +bool BranchObj::hasScrolledParent(BranchObj *start)
   3.301 +{
   3.302 +	// Calls parents recursivly to
   3.303 +	// find out, if we are scrolled at all.
   3.304 +	// But ignore myself, just look at parents.
   3.305 +
   3.306 +	if (this !=start && scrolled) return true;
   3.307 +
   3.308 +	BranchObj* bo=(BranchObj*)(parObj);
   3.309 +	if (bo) 
   3.310 +		return bo->hasScrolledParent(start);
   3.311 +	else
   3.312 +		return false;
   3.313 +}
   3.314 +
   3.315 +void BranchObj::tmpUnscroll()
   3.316 +{
   3.317 +	// Unscroll parent (recursivly)
   3.318 +	BranchObj* bo=(BranchObj*)(parObj);
   3.319 +	if (bo) bo->tmpUnscroll();
   3.320 +		
   3.321 +	// Unscroll myself
   3.322 +	if (scrolled)
   3.323 +	{
   3.324 +		tmpUnscrolled=true;
   3.325 +		systemFlags->activate("tmpUnscrolledright");
   3.326 +		toggleScroll();
   3.327 +	}	
   3.328 +}
   3.329 +
   3.330 +void BranchObj::resetTmpUnscroll()
   3.331 +{
   3.332 +	// Unscroll parent (recursivly)
   3.333 +	BranchObj* bo=(BranchObj*)(parObj);
   3.334 +	if (bo)
   3.335 +		bo->resetTmpUnscroll();
   3.336 +		
   3.337 +	// Unscroll myself
   3.338 +	if (tmpUnscrolled)
   3.339 +	{
   3.340 +		tmpUnscrolled=false;
   3.341 +		systemFlags->deactivate("tmpUnscrolledright");
   3.342 +		toggleScroll();
   3.343 +	}	
   3.344 +}
   3.345 +
   3.346 +void BranchObj::setVisibility(bool v, int toDepth)
   3.347 +{
   3.348 +    if (depth <= toDepth)
   3.349 +    {
   3.350 +		frame->setVisibility(v);
   3.351 +		heading->setVisibility(v);
   3.352 +		systemFlags->setVisibility(v);
   3.353 +		standardFlags->setVisibility(v);
   3.354 +		LinkableMapObj::setVisibility (v);
   3.355 +		
   3.356 +		if (!scrolled && (depth < toDepth))
   3.357 +		{
   3.358 +			// Now go recursivly through all childs
   3.359 +			BranchObj* b;
   3.360 +			for (b=branch.first(); b;b=branch.next() ) 
   3.361 +				b->setVisibility (v,toDepth);	
   3.362 +			FloatImageObj *fio;
   3.363 +			for (fio=floatimage.first(); fio; fio=floatimage.next())
   3.364 +				fio->setVisibility (v);
   3.365 +		}
   3.366 +    } // depth <= toDepth	
   3.367 +	move (absPos.x(), absPos.y() );
   3.368 +	requestReposition();
   3.369 +}	
   3.370 +
   3.371 +void BranchObj::setVisibility(bool v)
   3.372 +{
   3.373 +    setVisibility (v,MAX_DEPTH);
   3.374 +}
   3.375 +
   3.376 +
   3.377 +void BranchObj::setLinkColor ()
   3.378 +{
   3.379 +	// Overloaded from LinkableMapObj
   3.380 +	// BranchObj can use color of heading
   3.381 +
   3.382 +	if (mapEditor->getLinkColorHint()==HeadingColor)
   3.383 +		LinkableMapObj::setLinkColor (heading->getColor() );
   3.384 +	else	
   3.385 +		LinkableMapObj::setLinkColor ();
   3.386 +}
   3.387 +
   3.388 +void BranchObj::setColor (QColor col, bool colorChilds)
   3.389 +{
   3.390 +    heading->setColor(col);
   3.391 +	setLinkColor();
   3.392 +    if (colorChilds) 
   3.393 +    {
   3.394 +		BranchObj *bo;
   3.395 +		for (bo=branch.first(); bo; bo=branch.next() )
   3.396 +			bo->setColor(col,colorChilds);
   3.397 +    }	
   3.398 +}
   3.399 +
   3.400 +
   3.401 +BranchObj* BranchObj::first()
   3.402 +{
   3.403 +	itLast=NULL;	
   3.404 +	return this; 
   3.405 +}
   3.406 +	
   3.407 +BranchObj* BranchObj::next()
   3.408 +{
   3.409 +	BranchObj *lmo;
   3.410 +	BranchObj *bo=branch.first();
   3.411 +	BranchObj *po=(BranchObj*)(parObj);
   3.412 +
   3.413 +	if (!itLast)
   3.414 +	{	// We are just beginning at the mapCenter
   3.415 +		if (bo) 
   3.416 +		{
   3.417 +			itLast=this;
   3.418 +			return bo;
   3.419 +		}	
   3.420 +		else
   3.421 +		{
   3.422 +			itLast=NULL;
   3.423 +			return NULL;
   3.424 +		}	
   3.425 +	}
   3.426 +
   3.427 +	if (itLast==parObj)
   3.428 +	{	// We come from above
   3.429 +		if (bo)
   3.430 +		{
   3.431 +			// there are childs, go there
   3.432 +			itLast=this;
   3.433 +			return bo;
   3.434 +		}	
   3.435 +		else
   3.436 +		{	// no childs, try to go up again
   3.437 +			if (po)
   3.438 +			{
   3.439 +				// go up
   3.440 +				itLast=this;
   3.441 +				lmo=po->next();
   3.442 +				itLast=this;
   3.443 +				return lmo;
   3.444 +
   3.445 +			}	
   3.446 +			else
   3.447 +			{
   3.448 +				// can't go up, I am mapCenter
   3.449 +				itLast=NULL;
   3.450 +				return NULL;
   3.451 +			}	
   3.452 +		}
   3.453 +	}
   3.454 +
   3.455 +	// Try to find last child, we came from, in my own childs
   3.456 +	bool searching=true;
   3.457 +	while (bo && searching)
   3.458 +	{
   3.459 +		if (itLast==bo) searching=false;
   3.460 +		bo=branch.next();
   3.461 +	}
   3.462 +	if (!searching)
   3.463 +	{	// found lastLMO in my childs
   3.464 +		if (bo)
   3.465 +		{
   3.466 +			// found a brother of lastLMO 
   3.467 +			itLast=this;
   3.468 +			return bo;
   3.469 +		}	
   3.470 +		else
   3.471 +		{
   3.472 +			if (po)
   3.473 +			{
   3.474 +				// go up
   3.475 +				itLast=this;
   3.476 +				lmo=po->next();
   3.477 +				itLast=this;
   3.478 +				return lmo;
   3.479 +			}
   3.480 +			else
   3.481 +			{
   3.482 +				// can't go up, I am mapCenter
   3.483 +				itLast=NULL;
   3.484 +				return NULL;
   3.485 +			}	
   3.486 +		}
   3.487 +	}
   3.488 +
   3.489 +	// couldn't find last child, it must be a nephew of mine
   3.490 +	bo=branch.first();
   3.491 +	if (bo)
   3.492 +	{
   3.493 +		// proceed with my first child
   3.494 +		itLast=this;	
   3.495 +		return bo;
   3.496 +	}	
   3.497 +	else
   3.498 +	{
   3.499 +		// or go back to my parents
   3.500 +		if (po)
   3.501 +		{
   3.502 +			// go up
   3.503 +			itLast=this;
   3.504 +			lmo=po->next();
   3.505 +			itLast=this;
   3.506 +			return lmo;
   3.507 +		}	
   3.508 +		else
   3.509 +		{
   3.510 +			// can't go up, I am mapCenter
   3.511 +			itLast=NULL;
   3.512 +			return NULL;
   3.513 +		}	
   3.514 +	}	
   3.515 +}
   3.516 +
   3.517 +BranchObj* BranchObj::getLastIterator()
   3.518 +{
   3.519 +	return itLast;
   3.520 +}
   3.521 +
   3.522 +void BranchObj::setLastIterator(BranchObj* it)
   3.523 +{
   3.524 +	itLast=it;
   3.525 +}
   3.526 +
   3.527 +
   3.528 +void BranchObj::move (double x, double y)
   3.529 +{
   3.530 +	OrnamentedObj::move (x,y);
   3.531 +    positionBBox();
   3.532 +}
   3.533 +
   3.534 +void BranchObj::move (QPoint p)
   3.535 +{
   3.536 +	move (p.x(), p.y());
   3.537 +}
   3.538 +
   3.539 +void BranchObj::moveBy (double x, double y)
   3.540 +{
   3.541 +	OrnamentedObj::moveBy (x,y);
   3.542 +    positionBBox();
   3.543 +    BranchObj* b;
   3.544 +    for (b=branch.first(); b;b=branch.next() ) 
   3.545 +		b->moveBy (x,y);
   3.546 +}
   3.547 +
   3.548 +void BranchObj::moveBy (QPoint p)
   3.549 +{
   3.550 +	moveBy (p.x(), p.y());
   3.551 +}
   3.552 +
   3.553 +
   3.554 +void BranchObj::positionBBox()
   3.555 +{
   3.556 +
   3.557 +    heading->positionBBox();
   3.558 +	systemFlags->positionBBox();
   3.559 +	standardFlags->positionBBox();
   3.560 +	// It seems that setting x,y also affects width,height
   3.561 +	int w_old=bbox.width();
   3.562 +	int h_old=bbox.height();
   3.563 +    bbox.setX (absPos.x() );
   3.564 +	bbox.setY (absPos.y() );
   3.565 +	bbox.setWidth(w_old);
   3.566 +	bbox.setHeight(h_old);
   3.567 +
   3.568 +
   3.569 +	setSelBox();
   3.570 +
   3.571 +	// set the frame
   3.572 +	frame->setRect(QRect(bbox.x(),bbox.y(),bbox.width(),bbox.height() ) );
   3.573 +}
   3.574 +
   3.575 +void BranchObj::calcBBoxSize()
   3.576 +{
   3.577 +    QSize heading_r=heading->getSize();
   3.578 +    int heading_w=static_cast <int> (heading_r.width() );
   3.579 +    int heading_h=static_cast <int> (heading_r.height() );
   3.580 +    QSize sysflags_r=systemFlags->getSize();
   3.581 +	int sysflags_h=sysflags_r.height();
   3.582 +	int sysflags_w=sysflags_r.width();
   3.583 +    QSize stanflags_r=standardFlags->getSize();
   3.584 +	int stanflags_h=stanflags_r.height();
   3.585 +	int stanflags_w=stanflags_r.width();
   3.586 +    int w;
   3.587 +    int h;
   3.588 +
   3.589 +	// set width to sum of all widths
   3.590 +	w=heading_w + sysflags_w + stanflags_w;
   3.591 +	// set height to maximum needed height
   3.592 +	h=max (sysflags_h,stanflags_h);
   3.593 +	h=max (h,heading_h);
   3.594 +
   3.595 +    w+=frame->getBorder();
   3.596 +    h+=frame->getBorder();
   3.597 +    bbox.setSize (QSize (w,h));
   3.598 +}
   3.599 +
   3.600 +LinkableMapObj* BranchObj::findMapObj(QPoint p, LinkableMapObj* excludeLMO)
   3.601 +{
   3.602 +	// Search branches
   3.603 +    BranchObj *b;
   3.604 +    LinkableMapObj *lmo;
   3.605 +    for (b=branch.first(); b; b=branch.next() )
   3.606 +    {	
   3.607 +		lmo=b->findMapObj(p, excludeLMO);
   3.608 +		if (lmo != NULL) return lmo;
   3.609 +    }
   3.610 +	
   3.611 +	// Search myself
   3.612 +    if (inBBox (p) && (this != excludeLMO) && isVisibleObj() ) 
   3.613 +		return this;
   3.614 +
   3.615 +	// Search float images
   3.616 +	FloatImageObj *foi;
   3.617 +    for (foi=floatimage.first(); foi; foi=floatimage.next() )
   3.618 +		if (foi->inBBox(p) && (foi != excludeLMO) && foi->getParObj()!= excludeLMO) return foi;
   3.619 +
   3.620 +    return NULL;
   3.621 +}
   3.622 +
   3.623 +void BranchObj::setHeading(QString s)
   3.624 +{
   3.625 +    // Adjusting font size
   3.626 +    QFont font=heading->getFont();
   3.627 +	if (depth==0)
   3.628 +		font.setPointSize(16);
   3.629 +	else	
   3.630 +		if (depth>1) 
   3.631 +			font.setPointSize(10);
   3.632 +		else
   3.633 +			font.setPointSize(12);
   3.634 +    heading->setFont(font);
   3.635 +    heading->setText(s);	// set new heading
   3.636 +	calcBBoxSize();			// recalculate bbox
   3.637 +    positionBBox();			// rearrange contents
   3.638 +	requestReposition();
   3.639 +}
   3.640 +
   3.641 +void BranchObj::setURL(QString s)
   3.642 +{
   3.643 +	url=s;
   3.644 +	if (!url.isEmpty())
   3.645 +		systemFlags->activate("url");
   3.646 +	else	
   3.647 +		systemFlags->deactivate("url");
   3.648 +	calcBBoxSize();			// recalculate bbox
   3.649 +    positionBBox();			// rearrange contents
   3.650 +	forceReposition();
   3.651 +}
   3.652 +
   3.653 +QString BranchObj::getURL()
   3.654 +{
   3.655 +	return url;
   3.656 +}
   3.657 +
   3.658 +void BranchObj::setVymLink(QString s)
   3.659 +{
   3.660 +	if (!s.isEmpty())
   3.661 +	{
   3.662 +		// We need the relative (from loading) 
   3.663 +		// or absolute path (from User event)
   3.664 +		// and build the absolute path.
   3.665 +		// Note: If we have relative, use path of
   3.666 +		// current map to build absolute path
   3.667 +		QDir d(s);
   3.668 +		if (!d.path().startsWith ("/"))
   3.669 +		{
   3.670 +			QString p=mapEditor->getDestPath();
   3.671 +			int i=p.findRev("/",-1);
   3.672 +			d.setPath(p.left(i)+"/"+s);
   3.673 +			d.convertToAbs();
   3.674 +		}
   3.675 +		vymLink=d.path();
   3.676 +		systemFlags->activate("vymLink");
   3.677 +	}	
   3.678 +	else	
   3.679 +	{
   3.680 +		systemFlags->deactivate("vymLink");
   3.681 +		vymLink="";
   3.682 +	}	
   3.683 +	calcBBoxSize();			// recalculate bbox
   3.684 +    positionBBox();			// rearrange contents
   3.685 +	forceReposition();
   3.686 +}
   3.687 +
   3.688 +QString BranchObj::getVymLink()
   3.689 +{
   3.690 +	return vymLink;
   3.691 +}
   3.692 +
   3.693 +QString BranchObj::saveToDir (const QString &tmpdir,const QString &prefix, const QPoint& offset)
   3.694 +{
   3.695 +    QString s,a;
   3.696 +	QString scrolledAttr;
   3.697 +	if (scrolled) 
   3.698 +		scrolledAttr=attribut ("scrolled","yes");
   3.699 +	else
   3.700 +		scrolledAttr="";
   3.701 +
   3.702 +	QString posAttr;
   3.703 +	if (depth<2) posAttr=
   3.704 +		attribut("absPosX",QString().setNum(absPos.x(),10)) +
   3.705 +		attribut("absPosY",QString().setNum(absPos.y(),10)); 
   3.706 +	else
   3.707 +		posAttr="";
   3.708 +
   3.709 +	QString urlAttr;
   3.710 +	if (!url.isEmpty())
   3.711 +		urlAttr=attribut ("url",url);
   3.712 +
   3.713 +	QString vymLinkAttr;
   3.714 +	if (!vymLink.isEmpty())
   3.715 +		vymLinkAttr=attribut ("vymLink",convertToRel(mapEditor->getDestPath(),vymLink) );
   3.716 +
   3.717 +	QString frameAttr;
   3.718 +	if (frame->getFrameType()!=NoFrame)
   3.719 +		frameAttr=attribut ("frameType",frame->getFrameTypeName());
   3.720 +	else
   3.721 +		frameAttr="";
   3.722 +
   3.723 +	// save area, if not scrolled
   3.724 +	QString areaAttr;
   3.725 +	if (!((BranchObj*)(parObj))->isScrolled() )
   3.726 +	{
   3.727 +		areaAttr=
   3.728 +			attribut("x1",QString().setNum(absPos.x()-offset.x(),10)) +
   3.729 +			attribut("y1",QString().setNum(absPos.y()-offset.y(),10)) +
   3.730 +			attribut("x2",QString().setNum(absPos.x()+width()-offset.x(),10)) +
   3.731 +			attribut("y2",QString().setNum(absPos.y()+height()-offset.y(),10));
   3.732 +
   3.733 +	} else
   3.734 +		areaAttr="";
   3.735 +	
   3.736 +    s=beginElement ("branch" +scrolledAttr +posAttr +urlAttr +vymLinkAttr +frameAttr +areaAttr);
   3.737 +    incIndent();
   3.738 +
   3.739 +	// save heading
   3.740 +    s=s+valueElement("heading", getHeading(),
   3.741 +		attribut ("textColor",QColor(heading->getColor()).name()));
   3.742 +
   3.743 +	// save names of flags set
   3.744 +	s+=standardFlags->saveToDir(tmpdir,prefix,0);
   3.745 +	
   3.746 +	// save note
   3.747 +	if (!note.isEmpty() )
   3.748 +		s+=note.saveToDir();
   3.749 +	
   3.750 +	// Save branches
   3.751 +    BranchObj *bo;
   3.752 +    for (bo=branch.first(); bo; bo=branch.next() )
   3.753 +		s+=bo->saveToDir(tmpdir,prefix,offset);
   3.754 +    decIndent();
   3.755 +
   3.756 +	// Save FloatImages
   3.757 +	FloatImageObj *fio;
   3.758 +	for (fio=floatimage.first(); fio; fio=floatimage.next() )
   3.759 +		s+=fio->saveToDir (tmpdir,prefix);
   3.760 +
   3.761 +    s+=endElement   ("branch");
   3.762 +    return s;
   3.763 +}
   3.764 +
   3.765 +LinkableMapObj* BranchObj::addFloatImage ()
   3.766 +{
   3.767 +	FloatImageObj *newfi=new FloatImageObj (canvas,this);
   3.768 +	floatimage.append (newfi);
   3.769 +	if (hasScrolledParent(this) )
   3.770 +		newfi->setVisibility (false);
   3.771 +	else	
   3.772 +		newfi->setVisibility(visible);
   3.773 +	requestReposition();
   3.774 +	return newfi;
   3.775 +}
   3.776 +
   3.777 +LinkableMapObj* BranchObj::addFloatImage (FloatImageObj *fio)
   3.778 +{
   3.779 +	FloatImageObj *newfi=new FloatImageObj (canvas,this);
   3.780 +	floatimage.append (newfi);
   3.781 +	newfi->copy (fio);
   3.782 +	if (hasScrolledParent(this) )
   3.783 +		newfi->setVisibility (false);
   3.784 +	else	
   3.785 +		newfi->setVisibility(visible);
   3.786 +	requestReposition();
   3.787 +	return newfi;
   3.788 +}
   3.789 +
   3.790 +FloatImageObj* BranchObj::getFirstFloatImage ()
   3.791 +{
   3.792 +    return floatimage.first();
   3.793 +}
   3.794 +
   3.795 +FloatImageObj* BranchObj::getLastFloatImage ()
   3.796 +{
   3.797 +    return floatimage.last();
   3.798 +}
   3.799 +
   3.800 +FloatImageObj* BranchObj::getFloatImageNum (const uint &i)
   3.801 +{
   3.802 +    return floatimage.at(i);
   3.803 +}
   3.804 +
   3.805 +void BranchObj::removeFloatImage (FloatImageObj *fio)
   3.806 +{
   3.807 +	floatimage.remove (fio);
   3.808 +	requestReposition();
   3.809 +}
   3.810 +
   3.811 +void BranchObj::savePosInAngle ()
   3.812 +{
   3.813 +	// Save position in angle
   3.814 +    BranchObj *b;
   3.815 +	int i=0;
   3.816 +    for (b=branch.first(); b; b=branch.next() )
   3.817 +	{
   3.818 +		b->angle=i;
   3.819 +		i++;
   3.820 +	}
   3.821 +}
   3.822 +
   3.823 +BranchObj* BranchObj::addBranch()
   3.824 +{
   3.825 +    BranchObj* newbo=new BranchObj(canvas,this);
   3.826 +    branch.append (newbo);
   3.827 +    newbo->setParObj(this);
   3.828 +    newbo->setColor(getColor(),false);	
   3.829 +    newbo->setLinkColor();	
   3.830 +    newbo->setHeading ("new");
   3.831 +	newbo->setLinkStyle (newbo->getDefLinkStyle());
   3.832 +	if (scrolled)
   3.833 +		newbo->setVisibility (false);
   3.834 +	else	
   3.835 +		newbo->setVisibility(visible);
   3.836 +	requestReposition();
   3.837 +	return newbo;
   3.838 +}
   3.839 +
   3.840 +BranchObj* BranchObj::addBranch(BranchObj* bo)
   3.841 +{
   3.842 +    BranchObj* newbo=new BranchObj(canvas,this);
   3.843 +    branch.append (newbo);
   3.844 +    newbo->copy(bo);
   3.845 +    newbo->setParObj(this);
   3.846 +	newbo->setHeading (newbo->getHeading());	// adjust fontsize to depth
   3.847 +	newbo->setLinkStyle (newbo->getDefLinkStyle());
   3.848 +	if (scrolled)
   3.849 +		newbo->setVisibility (false);
   3.850 +	else	
   3.851 +		newbo->setVisibility(bo->visible);
   3.852 +	requestReposition();
   3.853 +	return newbo;
   3.854 +}
   3.855 +
   3.856 +BranchObj* BranchObj::insertBranch(int pos)
   3.857 +{
   3.858 +	savePosInAngle();
   3.859 +	// Add new bo and resort branches
   3.860 +	BranchObj *newbo=addBranch ();
   3.861 +	newbo->angle=pos-0.5;
   3.862 +	branch.sort();
   3.863 +	return newbo;
   3.864 +}
   3.865 +
   3.866 +BranchObj* BranchObj::insertBranch(BranchObj* bo, int pos)
   3.867 +{
   3.868 +	savePosInAngle();
   3.869 +	// Add new bo and resort branches
   3.870 +	bo->angle=pos-0.5;
   3.871 +	BranchObj *newbo=addBranch (bo);
   3.872 +	branch.sort();
   3.873 +	return newbo;
   3.874 +}
   3.875 +
   3.876 +void BranchObj::removeBranch(BranchObj* bo)
   3.877 +{
   3.878 +    // if bo is not in branch remove returns false, we
   3.879 +    // don't care...
   3.880 +    branch.remove (bo);
   3.881 +	requestReposition();
   3.882 +}
   3.883 +
   3.884 +void BranchObj::setLastSelectedBranch (BranchObj* bo)
   3.885 +{
   3.886 +    lastSelectedBranch=branch.find(bo);
   3.887 +}
   3.888 +
   3.889 +BranchObj* BranchObj::getLastSelectedBranch ()
   3.890 +{
   3.891 +    if (lastSelectedBranch>=0) 
   3.892 +	{
   3.893 +		BranchObj* bo=branch.at(lastSelectedBranch);
   3.894 +		if (bo) return bo;
   3.895 +    }	
   3.896 +    return branch.first();
   3.897 +}
   3.898 +
   3.899 +BranchObj* BranchObj::getFirstBranch ()
   3.900 +{
   3.901 +    return branch.first();
   3.902 +}
   3.903 +
   3.904 +BranchObj* BranchObj::getLastBranch ()
   3.905 +{
   3.906 +    return branch.last();
   3.907 +}
   3.908 +
   3.909 +BranchObj* BranchObj::getBranchNum (const uint &i)
   3.910 +{
   3.911 +    return branch.at(i);
   3.912 +}
   3.913 +
   3.914 +
   3.915 +BranchObj* BranchObj::moveBranchUp(BranchObj* bo1) // move a branch up (modify myself)
   3.916 +{
   3.917 +	savePosInAngle();
   3.918 +    int i=branch.find(bo1);
   3.919 +    if (i>0) 
   3.920 +	{	// -1 if bo1 not found 
   3.921 +		branch.at(i)->angle--;
   3.922 +		branch.at(i-1)->angle++;
   3.923 +		branch.sort();
   3.924 +		return branch.at(i-1);
   3.925 +	} else
   3.926 +		return branch.at(i);
   3.927 +}
   3.928 +
   3.929 +BranchObj* BranchObj::moveBranchDown(BranchObj* bo1)
   3.930 +{
   3.931 +	savePosInAngle();
   3.932 +    int i=branch.find(bo1);
   3.933 +	int j;
   3.934 +	if (branch.next())
   3.935 +	{
   3.936 +		j = branch.at();
   3.937 +		branch.at(i)->angle++;
   3.938 +		branch.at(j)->angle--;
   3.939 +		branch.sort();
   3.940 +		return branch.at(j);
   3.941 +	} else
   3.942 +		return branch.at(i);
   3.943 +}
   3.944 +
   3.945 +void BranchObj::alignRelativeTo (QPoint ref)
   3.946 +{
   3.947 +/* FIXME testing
   3.948 +	if (!getHeading().isEmpty())
   3.949 +		cout << "BO::alignRelTo "<<getHeading()<<endl;
   3.950 +	else	
   3.951 +		cout << "BO::alignRelTo  ???"<<endl;
   3.952 +	cout << "  d="<<depth<<endl;
   3.953 +*/	
   3.954 +	int th = bboxTotal.height();	
   3.955 +
   3.956 +	// If I am the mapcenter or a mainbranch, reposition heading
   3.957 +	if (depth<2)
   3.958 +	{
   3.959 +		move (absPos.x(),absPos.y());
   3.960 +		if (depth==1)
   3.961 +		{
   3.962 +			// Calc angle to mapCenter if I am a mainbranch
   3.963 +			// needed for reordering the mainbranches clockwise 
   3.964 +			// around mapcenter 
   3.965 +			angle=getAngle (QPoint ((int)(x() - parObj->getChildPos().x() ), 
   3.966 +									(int)(y() - parObj->getChildPos().y() ) ) );
   3.967 +		}	
   3.968 +	} 
   3.969 +	else
   3.970 +    {
   3.971 +		// Align myself depending on orientation and parent, but
   3.972 +		// only if I am not the mainbranch or mapcenter itself
   3.973 +		switch (orientation) 
   3.974 +		{
   3.975 +			case OrientLeftOfCenter:
   3.976 +				move (ref.x()-bbox.width(), ref.y() + (th-bbox.height())/2 );
   3.977 +			break;
   3.978 +			case OrientRightOfCenter:	
   3.979 +				move (ref.x(), ref.y() + (th-bbox.height())/2 );
   3.980 +			break;
   3.981 +			default:
   3.982 +				cout <<"LMO::alignRelativeTo: oops, no orientation given...\n";
   3.983 +			break;
   3.984 +		}		
   3.985 +    }		
   3.986 +
   3.987 +	FloatImageObj *fio;
   3.988 +    for (fio=floatimage.first(); fio; fio=floatimage.next() )
   3.989 +		fio->reposition();
   3.990 +
   3.991 +	if (scrolled) return;
   3.992 +
   3.993 +    // Set reference point for alignment of childs
   3.994 +    QPoint ref2;
   3.995 +    if (orientation==OrientLeftOfCenter)
   3.996 +		ref2.setX(childPos.x() - linkwidth);
   3.997 +    else	
   3.998 +		ref2.setX(childPos.x() + linkwidth);
   3.999 +
  3.1000 +	if (depth==1)
  3.1001 +		ref2.setY(absPos.y()-(bboxTotal.height()-bbox.height())/2);
  3.1002 +	else	
  3.1003 +		ref2.setY(ref.y() );	
  3.1004 +
  3.1005 +    // Align the childs depending on reference point 
  3.1006 +    BranchObj *b;
  3.1007 +    for (b=branch.first(); b; b=branch.next() )
  3.1008 +    {	
  3.1009 +		b->alignRelativeTo (ref2);
  3.1010 +		ref2.setY(ref2.y() + b->getBBoxSizeWithChilds().height() );
  3.1011 +    }
  3.1012 +}
  3.1013 +
  3.1014 +
  3.1015 +void BranchObj::reposition()
  3.1016 +{	
  3.1017 +/* FIXME testing
  3.1018 +	if (!getHeading().isEmpty())
  3.1019 +		cout << "BO::reposition  "<<getHeading()<<endl;
  3.1020 +	else	
  3.1021 +		cout << "BO::reposition  ???"<<endl;
  3.1022 +*/		
  3.1023 +	if (depth==0)
  3.1024 +	{
  3.1025 +		// only calculate the sizes once. If the deepest LMO 
  3.1026 +		// changes its height,
  3.1027 +		// all upper LMOs have to change, too.
  3.1028 +		calcBBoxSizeWithChilds();
  3.1029 +	    alignRelativeTo ( QPoint (absPos.x(),
  3.1030 +			absPos.y()-(bboxTotal.height()-bbox.height())/2) );
  3.1031 +		branch.sort();	
  3.1032 +	} else
  3.1033 +	{
  3.1034 +		// This is only important for moving branches:
  3.1035 +		// For editing a branch it isn't called...
  3.1036 +	    alignRelativeTo ( QPoint (absPos.x(),
  3.1037 +							absPos.y()-(bboxTotal.height()-bbox.height())/2) );
  3.1038 +	}
  3.1039 +}
  3.1040 +
  3.1041 +
  3.1042 +QRect BranchObj::getTotalBBox()
  3.1043 +{
  3.1044 +	QRect r=bbox;
  3.1045 +
  3.1046 +	if (scrolled) return r;
  3.1047 +
  3.1048 +	BranchObj* b;
  3.1049 +	for (b=branch.first();b ;b=branch.next() )
  3.1050 +		r=addBBox(b->getTotalBBox(),r);
  3.1051 +
  3.1052 +	FloatImageObj* fio;
  3.1053 +	for (fio=floatimage.first();fio ;fio=floatimage.next() )
  3.1054 +		r=addBBox(fio->getTotalBBox(),r);
  3.1055 +		
  3.1056 +	return r;
  3.1057 +}
  3.1058 +
  3.1059 +QRect BranchObj::getBBoxSizeWithChilds()
  3.1060 +{
  3.1061 +	return bboxTotal;
  3.1062 +}
  3.1063 +
  3.1064 +void BranchObj::calcBBoxSizeWithChilds()
  3.1065 +{
  3.1066 +	// This is called only from reposition and
  3.1067 +	// and only for mapcenter. So it won't be
  3.1068 +	// called more than once for a single user 
  3.1069 +	// action
  3.1070 +	
  3.1071 +	// Calculate size of LMO including all childs (to align them later)
  3.1072 +
  3.1073 +	bboxTotal.setX(bbox.x() );
  3.1074 +	bboxTotal.setY(bbox.y() );
  3.1075 +
  3.1076 +	// if branch is scrolled, ignore childs, but still consider floatimages
  3.1077 +	if (scrolled)
  3.1078 +	{
  3.1079 +		bboxTotal.setWidth (bbox.width());
  3.1080 +		bboxTotal.setHeight(bbox.height());
  3.1081 +		return;
  3.1082 +	}
  3.1083 +	
  3.1084 +	QRect r(0,0,0,0);
  3.1085 +	QRect br;
  3.1086 +	// Now calculate recursivly
  3.1087 +	// sum of heights 
  3.1088 +	// maximum of widths 
  3.1089 +	// minimum of y
  3.1090 +	BranchObj* b;
  3.1091 +	for (b=branch.first();b ;b=branch.next() )
  3.1092 +	{
  3.1093 +		b->calcBBoxSizeWithChilds();
  3.1094 +		br=b->getBBoxSizeWithChilds();
  3.1095 +		r.setWidth( max (br.width(), r.width() ));
  3.1096 +		r.setHeight(br.height() + r.height() );
  3.1097 +		if (br.y()<bboxTotal.y()) bboxTotal.setY(br.y());
  3.1098 +	}
  3.1099 +	// Add myself and also
  3.1100 +	// add width of link to sum if necessary
  3.1101 +	if (branch.isEmpty())
  3.1102 +		bboxTotal.setWidth (bbox.width() + r.width() );
  3.1103 +	else	
  3.1104 +		bboxTotal.setWidth (bbox.width() + r.width() + linkwidth);
  3.1105 +	bboxTotal.setHeight(max (r.height(),  bbox.height() ) );
  3.1106 +//	frame->setRect(QRect(bbox.x(),bbox.y(),bbox.width(),bbox.height() ) );
  3.1107 +}
  3.1108 +
  3.1109 +void BranchObj::select()
  3.1110 +{
  3.1111 +    LinkableMapObj::select();
  3.1112 +	// Tell parent that I am selected now:
  3.1113 +	BranchObj* po=(BranchObj*)(parObj);
  3.1114 +    if (po)	// TODO	    Try to get rid of this cast...
  3.1115 +        po->setLastSelectedBranch(this);
  3.1116 +		
  3.1117 +	// temporary unscroll, if we have scrolled parents somewhere
  3.1118 +	if (parObj) ((BranchObj*)(parObj))->tmpUnscroll();
  3.1119 +
  3.1120 +	// set Text in Editor	
  3.1121 +	textEditor->setText(note.getNote() );
  3.1122 +	textEditor->setFilename(note.getFilenameHint() );
  3.1123 +	textEditor->setFontHint (note.getFontHint() );
  3.1124 +	connect (textEditor, SIGNAL (textHasChanged() ), this, SLOT (updateNoteFlag() ) ); 
  3.1125 +	connect (textEditor, SIGNAL (fontSizeHasChanged() ), this, SLOT (updateNoteFlag() ) ); 
  3.1126 +
  3.1127 +	// Show URL and link in statusbar
  3.1128 +	QString status;
  3.1129 +	if (!url.isEmpty()) status+="URL: "+url+"  ";
  3.1130 +	if (!vymLink.isEmpty()) status+="Link: "+vymLink;
  3.1131 +	if (!status.isEmpty()) mainWindow->statusMessage (status);
  3.1132 +
  3.1133 +	// Update Toolbar
  3.1134 +	standardFlags->updateToolBar();
  3.1135 +
  3.1136 +	// Update Browserbutton
  3.1137 +	if (!url.isEmpty())
  3.1138 +		actionEditOpenURL->setEnabled (true);
  3.1139 +	else	
  3.1140 +		actionEditOpenURL->setEnabled (false);
  3.1141 +
  3.1142 +	// Update actions in mapeditor
  3.1143 +	mapEditor->updateActions();
  3.1144 +}
  3.1145 +
  3.1146 +void BranchObj::unselect()
  3.1147 +{
  3.1148 +	LinkableMapObj::unselect();
  3.1149 +	// Delete any messages like vymLink in StatusBar
  3.1150 +	mainWindow->statusMessage ("");
  3.1151 +
  3.1152 +	// save note from editor and set flag
  3.1153 +	// text is done by updateNoteFlag(), just save
  3.1154 +	// filename here
  3.1155 +	note.setFilenameHint (textEditor->getFilename());
  3.1156 +
  3.1157 +	// reset temporary unscroll, if we have scrolled parents somewhere
  3.1158 +	if (parObj) ((BranchObj*)(parObj))->resetTmpUnscroll();
  3.1159 +
  3.1160 +	// Disconnect textEditor from this LMO
  3.1161 +	disconnect( textEditor, SIGNAL(textHasChanged()), 0, 0 );
  3.1162 +	disconnect( textEditor, SIGNAL (fontSizeHasChanged()),0,0 ); 
  3.1163 +
  3.1164 +	// Erase content of editor 
  3.1165 +	textEditor->setInactive();
  3.1166 +
  3.1167 +	// unselect all buttons in toolbar
  3.1168 +	standardFlagsDefault->updateToolBar();
  3.1169 +}
  3.1170 +
  3.1171 +QString BranchObj::getSelectString()
  3.1172 +{
  3.1173 +	QString s;
  3.1174 +	if (parObj)
  3.1175 +	{
  3.1176 +		if (parObj->getDepth()==0)
  3.1177 +			s= "bo:" + QString("%1").arg(getNum());
  3.1178 +		else	
  3.1179 +			s= ((BranchObj*)(parObj))->getSelectString() + ",bo:" + QString("%1").arg(getNum());
  3.1180 +	} else
  3.1181 +	{
  3.1182 +		s="mc:";
  3.1183 +	}
  3.1184 +	
  3.1185 +	return s;
  3.1186 +}
  3.1187 +
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/branchobj.h	Sun Jan 30 12:59:10 2005 +0000
     4.3 @@ -0,0 +1,113 @@
     4.4 +#ifndef BRANCHOBJ_H
     4.5 +#define BRANCHOBJ_H
     4.6 +
     4.7 +#include "floatimageobj.h"
     4.8 +#include "linkablemapobj.h"
     4.9 +#include "ornamentedobj.h"
    4.10 +
    4.11 +class BranchObjPtrList : public QPtrList<BranchObj>
    4.12 +{
    4.13 +	virtual int compareItems (QPtrCollection::Item i, QPtrCollection::Item j);
    4.14 +};
    4.15 +
    4.16 +/////////////////////////////////////////////////////////////////////////////
    4.17 +class BranchObj:public OrnamentedObj {
    4.18 +public:
    4.19 +    BranchObj ();
    4.20 +    BranchObj (QCanvas*);
    4.21 +    BranchObj (QCanvas*, LinkableMapObj* parent);
    4.22 +    ~BranchObj ();
    4.23 +	bool operator< ( const BranchObj & );
    4.24 +	bool operator== ( const BranchObj & );
    4.25 +    virtual void init ();
    4.26 +    virtual void copy (BranchObj*);
    4.27 +    void clear();
    4.28 +	virtual int getNum();				// return number of this in parent
    4.29 +	virtual int getNum(BranchObj*);		// return number of this in parent
    4.30 +	virtual int getFloatImageNum(FloatImageObj*);		
    4.31 +	virtual int countBranches();		
    4.32 +	virtual int countFloatImages();		
    4.33 +    virtual void setParObjTmp (LinkableMapObj*,QPoint,int);// Only for moving Obj around
    4.34 +	virtual void unsetParObjTmp();			// reuse original ParObj
    4.35 +
    4.36 +	virtual void unScroll();				
    4.37 +	virtual void toggleScroll();			// scroll or unscroll
    4.38 +	virtual bool isScrolled();				// returns scroll state
    4.39 +	virtual bool hasScrolledParent(BranchObj*);	// true, if any of the parents is scrolled
    4.40 +	virtual void tmpUnscroll();				// unscroll scrolled parents temporary e.g. during "find" process
    4.41 +	virtual void resetTmpUnscroll();		// scroll all tmp scrolled parents again e.g. when unselecting
    4.42 +
    4.43 +	virtual void setVisibility(bool,int);	// set visibility
    4.44 +    virtual void setVisibility(bool);	    // set vis. for w
    4.45 +	virtual void setLinkColor();			// set the color of link
    4.46 +	virtual void setColor(QColor,bool);		// set the color of heading
    4.47 +
    4.48 +
    4.49 +	BranchObj* first ();				// set Iterator to first LMO
    4.50 +	BranchObj* next ();					// find next LMO after given one
    4.51 +	BranchObj* getLastIterator();		// to interrupt and resume next iteration
    4.52 +	void setLastIterator (BranchObj*);	// needed by next() 
    4.53 +
    4.54 +    virtual void move (double x,double y);
    4.55 +    virtual void move (QPoint);
    4.56 +    virtual void moveBy (double x,double y);
    4.57 +    virtual void moveBy (QPoint);
    4.58 +    virtual void positionBBox();
    4.59 +    virtual void calcBBoxSize();
    4.60 +    virtual LinkableMapObj* findMapObj(QPoint,LinkableMapObj*);	// find MapObj 
    4.61 +    virtual void setHeading (QString);
    4.62 +    virtual void setURL (QString);
    4.63 +    virtual QString getURL ();
    4.64 +    virtual void setVymLink (QString);
    4.65 +    virtual QString getVymLink ();
    4.66 +	virtual QString saveToDir (const QString&,const QString&, const QPoint&);// Save data recursivly to tempdir
    4.67 +	virtual LinkableMapObj* addFloatImage();
    4.68 +	virtual LinkableMapObj* addFloatImage(FloatImageObj*);
    4.69 +	virtual void removeFloatImage(FloatImageObj*);
    4.70 +    virtual FloatImageObj* getFirstFloatImage();
    4.71 +    virtual FloatImageObj* getLastFloatImage();
    4.72 +	virtual FloatImageObj* getFloatImageNum(const uint &);
    4.73 +protected:	
    4.74 +	virtual void savePosInAngle();			// write pos in angle for resorting			
    4.75 +public:	
    4.76 +    virtual BranchObj* addBranch();
    4.77 +    virtual BranchObj* addBranch(BranchObj*);		// makes deep copy of BranchObj
    4.78 +    virtual BranchObj* insertBranch(int);
    4.79 +    virtual BranchObj* insertBranch(BranchObj*,int);
    4.80 +    virtual void removeBranch(BranchObj*);  
    4.81 +    virtual void setLastSelectedBranch(BranchObj*);
    4.82 +    virtual BranchObj* getLastSelectedBranch();
    4.83 +    virtual BranchObj* getFirstBranch();
    4.84 +    virtual BranchObj* getLastBranch();
    4.85 +	virtual BranchObj* getBranchNum(const uint &);
    4.86 +    virtual BranchObj* moveBranchUp(BranchObj*);
    4.87 +    virtual BranchObj* moveBranchDown(BranchObj*);
    4.88 +
    4.89 +    virtual void alignRelativeTo(const QPoint );
    4.90 +	virtual void reposition();
    4.91 +
    4.92 +	virtual QRect getTotalBBox();			// return BBox including childs			
    4.93 +	virtual QRect getBBoxSizeWithChilds();	// return size of BBox including childs  
    4.94 +	virtual void calcBBoxSizeWithChilds();	// calc size of  BBox including childs recursivly
    4.95 +
    4.96 +    virtual void select();
    4.97 +    virtual void unselect();
    4.98 +	virtual QString getSelectString();
    4.99 +
   4.100 +protected:
   4.101 +	static BranchObj* itLast;		// iterator for first(), next()
   4.102 +    BranchObjPtrList branch;		// all child branches
   4.103 +	QPtrList<FloatImageObj> floatimage;	// child images
   4.104 +public:	
   4.105 +	float angle;					// used in mainbranch to reorder mainbranches
   4.106 +protected:	
   4.107 +    int lastSelectedBranch;			// for going deeper into tree
   4.108 +	bool scrolled;					// true if all childs are scrolled and thus invisible
   4.109 +	bool tmpUnscrolled;				// can only be true (temporary) for a scrolled subtree
   4.110 +	QString url;					// url to external doc
   4.111 +	QString vymLink;				// path to another map
   4.112 +};
   4.113 +
   4.114 +
   4.115 +#endif
   4.116 +
     5.1 Binary file demos/liveform.vym has changed
     6.1 Binary file demos/math.vym has changed
     7.1 Binary file demos/time-management.vym has changed
     8.1 Binary file demos/todo.vym has changed
     9.1 Binary file doc/vym.pdf has changed
    10.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.2 +++ b/exporthtmldialog.ui	Sun Jan 30 12:59:10 2005 +0000
    10.3 @@ -0,0 +1,321 @@
    10.4 +<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
    10.5 +<class>ExportHTMLDialog</class>
    10.6 +<author>Uwe Drechsel</author>
    10.7 +<widget class="QDialog">
    10.8 +    <property name="name">
    10.9 +        <cstring>ExportHTMLDialog</cstring>
   10.10 +    </property>
   10.11 +    <property name="geometry">
   10.12 +        <rect>
   10.13 +            <x>0</x>
   10.14 +            <y>0</y>
   10.15 +            <width>364</width>
   10.16 +            <height>346</height>
   10.17 +        </rect>
   10.18 +    </property>
   10.19 +    <property name="caption">
   10.20 +        <string>Export HTML</string>
   10.21 +    </property>
   10.22 +    <property name="modal">
   10.23 +        <bool>false</bool>
   10.24 +    </property>
   10.25 +    <vbox>
   10.26 +        <property name="name">
   10.27 +            <cstring>unnamed</cstring>
   10.28 +        </property>
   10.29 +        <widget class="QLayoutWidget">
   10.30 +            <property name="name">
   10.31 +                <cstring>layout33</cstring>
   10.32 +            </property>
   10.33 +            <hbox>
   10.34 +                <property name="name">
   10.35 +                    <cstring>unnamed</cstring>
   10.36 +                </property>
   10.37 +                <widget class="QLabel">
   10.38 +                    <property name="name">
   10.39 +                        <cstring>textLabel1</cstring>
   10.40 +                    </property>
   10.41 +                    <property name="text">
   10.42 +                        <string>Directory:</string>
   10.43 +                    </property>
   10.44 +                </widget>
   10.45 +                <widget class="QLineEdit">
   10.46 +                    <property name="name">
   10.47 +                        <cstring>lineEdit1</cstring>
   10.48 +                    </property>
   10.49 +                </widget>
   10.50 +                <widget class="QPushButton">
   10.51 +                    <property name="name">
   10.52 +                        <cstring>browseButton</cstring>
   10.53 +                    </property>
   10.54 +                    <property name="text">
   10.55 +                        <string>Browse</string>
   10.56 +                    </property>
   10.57 +                </widget>
   10.58 +            </hbox>
   10.59 +        </widget>
   10.60 +        <widget class="QButtonGroup">
   10.61 +            <property name="name">
   10.62 +                <cstring>buttonGroup2</cstring>
   10.63 +            </property>
   10.64 +            <property name="sizePolicy">
   10.65 +                <sizepolicy>
   10.66 +                    <hsizetype>3</hsizetype>
   10.67 +                    <vsizetype>5</vsizetype>
   10.68 +                    <horstretch>0</horstretch>
   10.69 +                    <verstretch>0</verstretch>
   10.70 +                </sizepolicy>
   10.71 +            </property>
   10.72 +            <property name="minimumSize">
   10.73 +                <size>
   10.74 +                    <width>0</width>
   10.75 +                    <height>230</height>
   10.76 +                </size>
   10.77 +            </property>
   10.78 +            <property name="title">
   10.79 +                <string>Options</string>
   10.80 +            </property>
   10.81 +            <vbox>
   10.82 +                <property name="name">
   10.83 +                    <cstring>unnamed</cstring>
   10.84 +                </property>
   10.85 +                <widget class="QCheckBox">
   10.86 +                    <property name="name">
   10.87 +                        <cstring>checkBox4</cstring>
   10.88 +                    </property>
   10.89 +                    <property name="text">
   10.90 +                        <string>Include image of map</string>
   10.91 +                    </property>
   10.92 +                </widget>
   10.93 +                <widget class="QCheckBox">
   10.94 +                    <property name="name">
   10.95 +                        <cstring>checkBox5_2</cstring>
   10.96 +                    </property>
   10.97 +                    <property name="text">
   10.98 +                        <string>create image only</string>
   10.99 +                    </property>
  10.100 +                </widget>
  10.101 +                <widget class="QCheckBox">
  10.102 +                    <property name="name">
  10.103 +                        <cstring>checkBox5</cstring>
  10.104 +                    </property>
  10.105 +                    <property name="text">
  10.106 +                        <string>use WIKI style</string>
  10.107 +                    </property>
  10.108 +                </widget>
  10.109 +                <widget class="QCheckBox">
  10.110 +                    <property name="name">
  10.111 +                        <cstring>checkBox4_2</cstring>
  10.112 +                    </property>
  10.113 +                    <property name="text">
  10.114 +                        <string>use heading for URLs (instead of link target)</string>
  10.115 +                    </property>
  10.116 +                </widget>
  10.117 +                <widget class="QCheckBox">
  10.118 +                    <property name="name">
  10.119 +                        <cstring>checkBox6</cstring>
  10.120 +                    </property>
  10.121 +                    <property name="text">
  10.122 +                        <string>use image of earth to mark URLs in text</string>
  10.123 +                    </property>
  10.124 +                </widget>
  10.125 +                <widget class="QCheckBox">
  10.126 +                    <property name="name">
  10.127 +                        <cstring>checkBox7</cstring>
  10.128 +                    </property>
  10.129 +                    <property name="text">
  10.130 +                        <string>use default CSS file</string>
  10.131 +                    </property>
  10.132 +                </widget>
  10.133 +                <widget class="QCheckBox">
  10.134 +                    <property name="name">
  10.135 +                        <cstring>checkBox3</cstring>
  10.136 +                    </property>
  10.137 +                    <property name="sizePolicy">
  10.138 +                        <sizepolicy>
  10.139 +                            <hsizetype>1</hsizetype>
  10.140 +                            <vsizetype>0</vsizetype>
  10.141 +                            <horstretch>0</horstretch>
  10.142 +                            <verstretch>0</verstretch>
  10.143 +                        </sizepolicy>
  10.144 +                    </property>
  10.145 +                    <property name="text">
  10.146 +                        <string>show output of external scripts</string>
  10.147 +                    </property>
  10.148 +                </widget>
  10.149 +            </vbox>
  10.150 +        </widget>
  10.151 +        <spacer>
  10.152 +            <property name="name">
  10.153 +                <cstring>spacer6</cstring>
  10.154 +            </property>
  10.155 +            <property name="orientation">
  10.156 +                <enum>Vertical</enum>
  10.157 +            </property>
  10.158 +            <property name="sizeType">
  10.159 +                <enum>Expanding</enum>
  10.160 +            </property>
  10.161 +            <property name="sizeHint">
  10.162 +                <size>
  10.163 +                    <width>21</width>
  10.164 +                    <height>60</height>
  10.165 +                </size>
  10.166 +            </property>
  10.167 +        </spacer>
  10.168 +        <widget class="QLayoutWidget">
  10.169 +            <property name="name">
  10.170 +                <cstring>layout17</cstring>
  10.171 +            </property>
  10.172 +            <hbox>
  10.173 +                <property name="name">
  10.174 +                    <cstring>unnamed</cstring>
  10.175 +                </property>
  10.176 +                <spacer>
  10.177 +                    <property name="name">
  10.178 +                        <cstring>spacer5</cstring>
  10.179 +                    </property>
  10.180 +                    <property name="orientation">
  10.181 +                        <enum>Horizontal</enum>
  10.182 +                    </property>
  10.183 +                    <property name="sizeType">
  10.184 +                        <enum>Expanding</enum>
  10.185 +                    </property>
  10.186 +                    <property name="sizeHint">
  10.187 +                        <size>
  10.188 +                            <width>61</width>
  10.189 +                            <height>21</height>
  10.190 +                        </size>
  10.191 +                    </property>
  10.192 +                </spacer>
  10.193 +                <widget class="QPushButton">
  10.194 +                    <property name="name">
  10.195 +                        <cstring>pushButton4</cstring>
  10.196 +                    </property>
  10.197 +                    <property name="text">
  10.198 +                        <string>Export</string>
  10.199 +                    </property>
  10.200 +                    <property name="default">
  10.201 +                        <bool>true</bool>
  10.202 +                    </property>
  10.203 +                </widget>
  10.204 +                <widget class="QPushButton">
  10.205 +                    <property name="name">
  10.206 +                        <cstring>pushButton5</cstring>
  10.207 +                    </property>
  10.208 +                    <property name="text">
  10.209 +                        <string>Cancel</string>
  10.210 +                    </property>
  10.211 +                </widget>
  10.212 +            </hbox>
  10.213 +        </widget>
  10.214 +    </vbox>
  10.215 +</widget>
  10.216 +<connections>
  10.217 +    <connection>
  10.218 +        <sender>pushButton5</sender>
  10.219 +        <signal>pressed()</signal>
  10.220 +        <receiver>ExportHTMLDialog</receiver>
  10.221 +        <slot>reject()</slot>
  10.222 +    </connection>
  10.223 +    <connection>
  10.224 +        <sender>pushButton4</sender>
  10.225 +        <signal>clicked()</signal>
  10.226 +        <receiver>ExportHTMLDialog</receiver>
  10.227 +        <slot>accept()</slot>
  10.228 +    </connection>
  10.229 +    <connection>
  10.230 +        <sender>browseButton</sender>
  10.231 +        <signal>pressed()</signal>
  10.232 +        <receiver>ExportHTMLDialog</receiver>
  10.233 +        <slot>browseDirectory()</slot>
  10.234 +    </connection>
  10.235 +    <connection>
  10.236 +        <sender>checkBox4</sender>
  10.237 +        <signal>toggled(bool)</signal>
  10.238 +        <receiver>ExportHTMLDialog</receiver>
  10.239 +        <slot>includeImage(bool)</slot>
  10.240 +    </connection>
  10.241 +    <connection>
  10.242 +        <sender>checkBox5</sender>
  10.243 +        <signal>toggled(bool)</signal>
  10.244 +        <receiver>ExportHTMLDialog</receiver>
  10.245 +        <slot>useWIKIpressed(bool)</slot>
  10.246 +    </connection>
  10.247 +    <connection>
  10.248 +        <sender>lineEdit1</sender>
  10.249 +        <signal>textChanged(const QString&amp;)</signal>
  10.250 +        <receiver>ExportHTMLDialog</receiver>
  10.251 +        <slot>dirChanged()</slot>
  10.252 +    </connection>
  10.253 +    <connection>
  10.254 +        <sender>checkBox3</sender>
  10.255 +        <signal>toggled(bool)</signal>
  10.256 +        <receiver>ExportHTMLDialog</receiver>
  10.257 +        <slot>showOut(bool)</slot>
  10.258 +    </connection>
  10.259 +    <connection>
  10.260 +        <sender>checkBox4_2</sender>
  10.261 +        <signal>toggled(bool)</signal>
  10.262 +        <receiver>ExportHTMLDialog</receiver>
  10.263 +        <slot>useHeadingPressed(bool)</slot>
  10.264 +    </connection>
  10.265 +    <connection>
  10.266 +        <sender>checkBox5_2</sender>
  10.267 +        <signal>toggled(bool)</signal>
  10.268 +        <receiver>ExportHTMLDialog</receiver>
  10.269 +        <slot>imgOnly(bool)</slot>
  10.270 +    </connection>
  10.271 +    <connection>
  10.272 +        <sender>checkBox6</sender>
  10.273 +        <signal>toggled(bool)</signal>
  10.274 +        <receiver>ExportHTMLDialog</receiver>
  10.275 +        <slot>useURLImagePressed(bool)</slot>
  10.276 +    </connection>
  10.277 +</connections>
  10.278 +<includes>
  10.279 +    <include location="local" impldecl="in declaration">showtextdialog.h</include>
  10.280 +    <include location="global" impldecl="in declaration">qprocess.h</include>
  10.281 +    <include location="global" impldecl="in implementation">iostream</include>
  10.282 +    <include location="local" impldecl="in implementation">settings.h</include>
  10.283 +    <include location="global" impldecl="in implementation">qfiledialog.h</include>
  10.284 +    <include location="global" impldecl="in implementation">qmessagebox.h</include>
  10.285 +    <include location="local" impldecl="in implementation">misc.h</include>
  10.286 +    <include location="local" impldecl="in implementation">icons/flag-url.xpm</include>
  10.287 +    <include location="local" impldecl="in implementation">exporthtmldialog.ui.h</include>
  10.288 +</includes>
  10.289 +<variables>
  10.290 +    <variable>QString css;</variable>
  10.291 +    <variable>QString xsl;</variable>
  10.292 +    <variable>QString scriptpath;</variable>
  10.293 +    <variable>QString stylepath;</variable>
  10.294 +    <variable>QString dir;</variable>
  10.295 +    <variable>bool image;</variable>
  10.296 +    <variable>bool wikistyle;</variable>
  10.297 +    <variable>QString script;</variable>
  10.298 +    <variable>bool showOutput;</variable>
  10.299 +    <variable>QProcess *proc;</variable>
  10.300 +    <variable>ShowTextDialog *dia;</variable>
  10.301 +    <variable>bool imageOnly;</variable>
  10.302 +    <variable>bool useHeading;</variable>
  10.303 +    <variable>bool useURLImage;</variable>
  10.304 +</variables>
  10.305 +<slots>
  10.306 +    <slot>browseDirectory()</slot>
  10.307 +    <slot>useWIKIpressed( bool b )</slot>
  10.308 +    <slot>includeImage( bool b )</slot>
  10.309 +    <slot>imgOnly( bool b )</slot>
  10.310 +    <slot>useHeadingPressed( bool b )</slot>
  10.311 +    <slot>useURLImagePressed( bool b )</slot>
  10.312 +    <slot>showOut( bool b )</slot>
  10.313 +    <slot>dirChanged()</slot>
  10.314 +    <slot>doExport( const QString &amp; mapname )</slot>
  10.315 +    <slot returnType="QString">getDir()</slot>
  10.316 +    <slot>readOutput()</slot>
  10.317 +</slots>
  10.318 +<functions>
  10.319 +    <function access="private" specifier="non virtual">init()</function>
  10.320 +    <function access="private" specifier="non virtual">destroy()</function>
  10.321 +</functions>
  10.322 +<pixmapinproject/>
  10.323 +<layoutdefaults spacing="6" margin="11"/>
  10.324 +</UI>
    11.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.2 +++ b/exporthtmldialog.ui.h	Sun Jan 30 12:59:10 2005 +0000
    11.3 @@ -0,0 +1,218 @@
    11.4 +/****************************************************************************
    11.5 +** ui.h extension file, included from the uic-generated form implementation.
    11.6 +**
    11.7 +** If you wish to add, delete or rename functions or slots use
    11.8 +** Qt Designer which will update this file, preserving your code. Create an
    11.9 +** init() function in place of a constructor, and a destroy() function in
   11.10 +** place of a destructor.
   11.11 +*****************************************************************************/
   11.12 +
   11.13 +
   11.14 +extern Settings settings;
   11.15 +
   11.16 +void ExportHTMLDialog::init()
   11.17 +{
   11.18 +	dir=settings.readEntry ("/vym/export/html/dir","" );
   11.19 +	lineEdit1->setText(dir);
   11.20 +	
   11.21 +    if ( settings.readEntry ("/vym/export/html/image","yes")=="yes")
   11.22 +		image=true;
   11.23 +	else	
   11.24 +		image=false;
   11.25 +	checkBox4->setChecked(image);
   11.26 +	
   11.27 +	if ( settings.readEntry ("/vym/export/html/imageOnly","no")=="yes")
   11.28 +		imageOnly=true;
   11.29 +	else	
   11.30 +		imageOnly=false;
   11.31 +	checkBox5_2->setChecked(imageOnly);
   11.32 +		
   11.33 +    if ( settings.readEntry ("/vym/export/html/wiki","no")=="yes")
   11.34 +		wikistyle=true;
   11.35 +	else	
   11.36 +		wikistyle=false;
   11.37 +	checkBox5->setChecked(wikistyle);
   11.38 +	
   11.39 +	if ( settings.readEntry ("/vym/export/html/useHeading","no")=="yes")
   11.40 +		useHeading=true;
   11.41 +	else	
   11.42 +		useHeading=false;
   11.43 +	checkBox4_2->setChecked(useHeading);
   11.44 +		
   11.45 +	if ( settings.readEntry ("/vym/export/html/useURLImage","yes")=="yes")
   11.46 +		useURLImage=true;
   11.47 +	else	
   11.48 +		useURLImage=false;
   11.49 +	checkBox6->setChecked(useURLImage);
   11.50 +	
   11.51 +	if ( settings.readEntry ("/vym/export/html/showOutput","no")=="yes")
   11.52 +		showOutput=true;
   11.53 +	else	
   11.54 +		showOutput=false;
   11.55 +	checkBox3->setChecked(showOutput);
   11.56 +		
   11.57 +	stylepath=settings.readEntry
   11.58 +		("/vym/export/html/styles","styles");
   11.59 +	scriptpath=settings.readEntry 
   11.60 +		("/vym/export/html/scripts","scripts");
   11.61 +	xsl=settings.readEntry 
   11.62 +		("/vym/export/html/xsl","vym2html.xsl");
   11.63 +	css=settings.readEntry 
   11.64 +		("/vym/export/html/css","vym.css");	
   11.65 +	script=settings.readEntry 
   11.66 +		("/vym/export/html/script","vym2html.sh");	
   11.67 +	
   11.68 +	proc = new QProcess( this );
   11.69 +	connect( proc, SIGNAL(readyReadStdout()),
   11.70 +			 this, SLOT(readOutput()) );
   11.71 +
   11.72 +	dia=new ShowTextDialog ();
   11.73 +}
   11.74 +
   11.75 +void ExportHTMLDialog::destroy()
   11.76 +{
   11.77 +	delete (proc);
   11.78 +	delete (dia);
   11.79 +}
   11.80 +
   11.81 +void ExportHTMLDialog::browseDirectory()
   11.82 +{
   11.83 +   	QFileDialog fd( this, tr("VYM - Export HTML to directory"));
   11.84 +	fd.setMode (QFileDialog::DirectoryOnly);
   11.85 +	fd.setCaption(tr("VYM - Export HTML to directory"));
   11.86 +	fd.setModal (true);
   11.87 +	fd.show();
   11.88 +
   11.89 +	if ( fd.exec() == QDialog::Accepted )
   11.90 +	{
   11.91 +		dir=fd.selectedFile();
   11.92 +		lineEdit1->setText (dir );
   11.93 +	}
   11.94 +}
   11.95 +
   11.96 +void ExportHTMLDialog::useWIKIpressed(bool b)
   11.97 +{
   11.98 +	wikistyle=b;
   11.99 +}
  11.100 +
  11.101 +void ExportHTMLDialog::includeImage(bool b)
  11.102 +{
  11.103 +	image=b;
  11.104 +}
  11.105 +
  11.106 +void ExportHTMLDialog::imgOnly(bool b)
  11.107 +{
  11.108 +	imageOnly=b;
  11.109 +}
  11.110 +
  11.111 +void ExportHTMLDialog::useHeadingPressed(bool b)
  11.112 +{
  11.113 +	useHeading=b;
  11.114 +}
  11.115 +
  11.116 +void ExportHTMLDialog::useURLImagePressed(bool b)
  11.117 +{
  11.118 +	useURLImage=b;
  11.119 +}
  11.120 +
  11.121 +void ExportHTMLDialog::showOut(bool b)
  11.122 +{
  11.123 +	showOutput=b;
  11.124 +}
  11.125 +
  11.126 +void ExportHTMLDialog::dirChanged()
  11.127 +{
  11.128 +	dir=lineEdit1->text();
  11.129 +}
  11.130 +
  11.131 +
  11.132 +
  11.133 +
  11.134 +void ExportHTMLDialog::doExport (const QString &mapname)
  11.135 +{
  11.136 +	// Save options to settings file 
  11.137 +	// (but don't save at destructor, which
  11.138 +	// is called for "cancel", too)
  11.139 +	settings.writeEntry ("/vym/export/html/dir",lineEdit1->text() );
  11.140 +
  11.141 +	if (wikistyle)
  11.142 +		settings.writeEntry ("/vym/export/html/wiki","yes");
  11.143 +	else	
  11.144 +		settings.writeEntry ("/vym/export/html/wiki","no");
  11.145 +
  11.146 +    if (image)
  11.147 +		settings.writeEntry ("/vym/export/html/image","yes");
  11.148 +    else
  11.149 +		settings.writeEntry ("/vym/export/html/image","no");	
  11.150 +	
  11.151 +  if (imageOnly)
  11.152 +		settings.writeEntry ("/vym/export/html/imageOnly","yes");
  11.153 +    else
  11.154 +		settings.writeEntry ("/vym/export/html/imageOnly","no");	
  11.155 +	
  11.156 +  if (useHeading)
  11.157 +		settings.writeEntry ("/vym/export/html/useHeading","yes");
  11.158 +    else
  11.159 +		settings.writeEntry ("/vym/export/html/useHeading","no");	
  11.160 +			
  11.161 +    if (showOutput)
  11.162 +		settings.writeEntry ("/vym/export/html/showOutput","yes");
  11.163 +    else
  11.164 +		settings.writeEntry ("/vym/export/html/showOutput","no");	
  11.165 +		
  11.166 +	settings.writeEntry
  11.167 +		("/vym/export/html/styles",stylepath);
  11.168 +	settings.writeEntry 
  11.169 +		("/vym/export/html/scripts",scriptpath);
  11.170 +	settings.writeEntry 
  11.171 +		("/vym/export/html/xsl",xsl);
  11.172 +	settings.writeEntry 
  11.173 +		("/vym/export/html/css",css);	
  11.174 +	settings.writeEntry 
  11.175 +		("/vym/export/html/script",script);	
  11.176 +
  11.177 +	proc->addArgument (scriptpath + "/" + script );
  11.178 +	proc->addArgument(dir + maskPath(mapname) + ".xml");
  11.179 +	proc->addArgument("-sp=" + stylepath +"/" + xsl );
  11.180 +	proc->addArgument("-css=" + css );
  11.181 +	if (image) proc->addArgument("-image" );
  11.182 +	if (wikistyle) proc->addArgument("-wikistyle" );
  11.183 +	if (useHeading) proc->addArgument("-useURLHeading" );
  11.184 +	if (useURLImage) 
  11.185 +	{	
  11.186 +		proc->addArgument("-useURLImage" );
  11.187 +		QPixmap pm (flag_url_xpm);
  11.188 +		pm.save (dir + "/flags/url.png","PNG");
  11.189 +	}	
  11.190 +
  11.191 +	dia->append ("vym is executing: " + proc->arguments().join(" ") );
  11.192 +	if ( !proc->start() ) 
  11.193 +	{
  11.194 +		// error handling
  11.195 +		dia->show();
  11.196 +		QString s;
  11.197 +		QStringList list = proc->arguments();
  11.198 +		QStringList::Iterator it = list.begin();
  11.199 +		while( it != list.end() ) 
  11.200 +		{
  11.201 +			s+= ( *it ) + "\n";
  11.202 +			++it;
  11.203 +		}
  11.204 +		QMessageBox::critical(0, tr("Critcal export error"),"Couldn't start script to export:\n"+s);
  11.205 +	} else 
  11.206 +		if (showOutput) dia->exec();
  11.207 +	
  11.208 +
  11.209 +}
  11.210 +
  11.211 +
  11.212 +QString ExportHTMLDialog::getDir()
  11.213 +{
  11.214 +	return dir;
  11.215 +}
  11.216 +
  11.217 +
  11.218 +void ExportHTMLDialog::readOutput()
  11.219 +{
  11.220 +	dia->append (proc->readStdout() );
  11.221 +}
    12.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.2 +++ b/exports.cpp	Sun Jan 30 12:59:10 2005 +0000
    12.3 @@ -0,0 +1,132 @@
    12.4 +#include "exports.h"
    12.5 +
    12.6 +#include "linkablemapobj.h"
    12.7 +
    12.8 +
    12.9 +Export::Export()
   12.10 +{
   12.11 +	indentPerDepth="  ";
   12.12 +}
   12.13 +
   12.14 +bool Export::setOutputDir(QString dirname)
   12.15 +{
   12.16 +	outdir.setPath (dirname);
   12.17 +	if ( outdir.exists() )
   12.18 +	{
   12.19 +		// FIXME
   12.20 +		// ask for confirmation
   12.21 +		// then delete outdir
   12.22 +		return true;
   12.23 +	} else
   12.24 +	{
   12.25 +		// try to create directory
   12.26 +		//return outdir.mkdir (outdir.absPath());
   12.27 +		// FIXME
   12.28 +		return true;
   12.29 +	}
   12.30 +}
   12.31 +
   12.32 +void Export::setPath (const QString &p)
   12.33 +{
   12.34 +	filepath=p;
   12.35 +}
   12.36 +
   12.37 +void Export::setMapCenter(MapCenterObj *mc)
   12.38 +{
   12.39 +	mapCenter=mc;
   12.40 +}
   12.41 +
   12.42 +void Export::exportMap()
   12.43 +{
   12.44 +	QFile file (filepath);
   12.45 +	if ( !file.open( IO_WriteOnly ) )
   12.46 +	{
   12.47 +		// FIXME
   12.48 +		cout << "Export::exportMap  couldn't open "<<filepath<<endl;
   12.49 +		return;
   12.50 +	}
   12.51 +	QTextStream ts( &file );	// use LANG decoding here...
   12.52 +
   12.53 +	// Main loop over all branches
   12.54 +	QString s;
   12.55 +	QString actIndent("");
   12.56 +	int i;
   12.57 +	BranchObj *bo;
   12.58 +	bo=mapCenter->first();
   12.59 +	while (bo) 
   12.60 +	{
   12.61 +		// Make indentstring
   12.62 +		for (i=0;i<bo->getDepth();i++) actIndent+= indentPerDepth;
   12.63 +
   12.64 +		// Write heading
   12.65 +		//	write (actIndent + getSectionString(bo) + bo->getHeading()+ "\n");
   12.66 +		if (bo->getDepth()==1)
   12.67 +			ts << (getSectionString(bo) + bo->getHeading()+ "\n");
   12.68 +		else	
   12.69 +			ts << (actIndent + " - " + bo->getHeading()+ "\n");
   12.70 +		
   12.71 +		// If necessary, write note
   12.72 +		if (!bo->getNote().isEmpty())
   12.73 +		{
   12.74 +			ts << ("-------------------Begin of Note-----------------\n");
   12.75 +			ts << (bo->getNote());
   12.76 +			ts << ("\n");
   12.77 +			ts << ("-------------------End of Note-------------------\n");
   12.78 +		}
   12.79 +		
   12.80 +		bo=bo->next();
   12.81 +		actIndent="";
   12.82 +	}
   12.83 +	file.close();
   12.84 +}
   12.85 +
   12.86 +QString Export::getSectionString(BranchObj *bostart)
   12.87 +{
   12.88 +	QString r;
   12.89 +	BranchObj *bo=bostart;
   12.90 +	int depth=bo->getDepth();
   12.91 +	while (depth>0)
   12.92 +	{
   12.93 +		r=QString("%1").arg(1+bo->getNum(),0,10)+"." + r;
   12.94 +		bo=(BranchObj*)(bo->getParObj());
   12.95 +		depth=bo->getDepth();
   12.96 +	}	
   12.97 +	if (r.isEmpty())
   12.98 +		return r;
   12.99 +	else	
  12.100 +		return r + " ";
  12.101 +}
  12.102 +
  12.103 +void Export::exportAsHTML()
  12.104 +{
  12.105 +	// FIXME  just testing...
  12.106 +	// Main loop over all branches
  12.107 +	QString s;
  12.108 +	QString actIndent("");
  12.109 +	int i;
  12.110 +	BranchObj *bo;
  12.111 +	bo=mapCenter->first();
  12.112 +	while (bo) 
  12.113 +	{
  12.114 +		// Make indentstring
  12.115 +		for (i=0;i<bo->getDepth();i++) actIndent+= indentPerDepth;
  12.116 +
  12.117 +		// Write heading
  12.118 +		write (actIndent + getSectionString(bo) + bo->getHeading()+ "\n");
  12.119 +		
  12.120 +		// If necessary, write note
  12.121 +		if (!bo->getNote().isEmpty())
  12.122 +		{
  12.123 +			write (bo->getNote());
  12.124 +		}
  12.125 +		
  12.126 +		bo=bo->next();
  12.127 +		actIndent="";
  12.128 +	}
  12.129 +}
  12.130 +
  12.131 +void Export::write(QString s)
  12.132 +{
  12.133 +	cout << s;
  12.134 +}
  12.135 +
    13.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.2 +++ b/exports.h	Sun Jan 30 12:59:10 2005 +0000
    13.3 @@ -0,0 +1,34 @@
    13.4 +#ifndef EXPORTS_H
    13.5 +#define EXPORTS_H
    13.6 +
    13.7 +#include <qdir.h>
    13.8 +#include <qstring.h>
    13.9 +#include <iostream>
   13.10 +
   13.11 +#include "mapcenterobj.h"
   13.12 +
   13.13 +using namespace std;
   13.14 +
   13.15 +/////////////////////////////////////////////////////////////////////////////
   13.16 +class Export
   13.17 +{
   13.18 +public:
   13.19 +	Export();
   13.20 +	bool setOutputDir (QString);
   13.21 +	void setPath(const QString &);
   13.22 +	void setMapCenter (MapCenterObj*);
   13.23 +	void setIndentPerDepth (QString);
   13.24 +	void exportMap();
   13.25 +	void exportAsHTML();
   13.26 +protected:  
   13.27 +	QString getSectionString (BranchObj*);
   13.28 +	void write (QString);
   13.29 +
   13.30 +private:
   13.31 +	QDir outdir;
   13.32 +	QString filepath;
   13.33 +	MapCenterObj *mapCenter;
   13.34 +	QString	indentPerDepth;
   13.35 +};
   13.36 +
   13.37 +#endif
    14.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.2 +++ b/exportxhtmldialog.ui	Sun Jan 30 12:59:10 2005 +0000
    14.3 @@ -0,0 +1,555 @@
    14.4 +<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
    14.5 +<class>ExportXHTMLDialog</class>
    14.6 +<widget class="QDialog">
    14.7 +    <property name="name">
    14.8 +        <cstring>ExportXHTMLDialog</cstring>
    14.9 +    </property>
   14.10 +    <property name="geometry">
   14.11 +        <rect>
   14.12 +            <x>0</x>
   14.13 +            <y>0</y>
   14.14 +            <width>582</width>
   14.15 +            <height>599</height>
   14.16 +        </rect>
   14.17 +    </property>
   14.18 +    <property name="minimumSize">
   14.19 +        <size>
   14.20 +            <width>0</width>
   14.21 +            <height>130</height>
   14.22 +        </size>
   14.23 +    </property>
   14.24 +    <property name="caption">
   14.25 +        <string>Export XHTML</string>
   14.26 +    </property>
   14.27 +    <vbox>
   14.28 +        <property name="name">
   14.29 +            <cstring>unnamed</cstring>
   14.30 +        </property>
   14.31 +        <widget class="QLayoutWidget">
   14.32 +            <property name="name">
   14.33 +                <cstring>layout33</cstring>
   14.34 +            </property>
   14.35 +            <hbox>
   14.36 +                <property name="name">
   14.37 +                    <cstring>unnamed</cstring>
   14.38 +                </property>
   14.39 +                <widget class="QLabel">
   14.40 +                    <property name="name">
   14.41 +                        <cstring>textLabel1</cstring>
   14.42 +                    </property>
   14.43 +                    <property name="text">
   14.44 +                        <string>Export to directory:</string>
   14.45 +                    </property>
   14.46 +                </widget>
   14.47 +                <widget class="QLineEdit">
   14.48 +                    <property name="name">
   14.49 +                        <cstring>lineEditDir</cstring>
   14.50 +                    </property>
   14.51 +                </widget>
   14.52 +                <widget class="QPushButton">
   14.53 +                    <property name="name">
   14.54 +                        <cstring>browseExportDirButton</cstring>
   14.55 +                    </property>
   14.56 +                    <property name="text">
   14.57 +                        <string>Browse</string>
   14.58 +                    </property>
   14.59 +                </widget>
   14.60 +            </hbox>
   14.61 +        </widget>
   14.62 +        <widget class="QButtonGroup">
   14.63 +            <property name="name">
   14.64 +                <cstring>buttonGroup2</cstring>
   14.65 +            </property>
   14.66 +            <property name="sizePolicy">
   14.67 +                <sizepolicy>
   14.68 +                    <hsizetype>3</hsizetype>
   14.69 +                    <vsizetype>3</vsizetype>
   14.70 +                    <horstretch>0</horstretch>
   14.71 +                    <verstretch>0</verstretch>
   14.72 +                </sizepolicy>
   14.73 +            </property>
   14.74 +            <property name="minimumSize">
   14.75 +                <size>
   14.76 +                    <width>0</width>
   14.77 +                    <height>160</height>
   14.78 +                </size>
   14.79 +            </property>
   14.80 +            <property name="title">
   14.81 +                <string>Options</string>
   14.82 +            </property>
   14.83 +            <vbox>
   14.84 +                <property name="name">
   14.85 +                    <cstring>unnamed</cstring>
   14.86 +                </property>
   14.87 +                <widget class="QCheckBox">
   14.88 +                    <property name="name">
   14.89 +                        <cstring>imageButton</cstring>
   14.90 +                    </property>
   14.91 +                    <property name="text">
   14.92 +                        <string>Include image</string>
   14.93 +                    </property>
   14.94 +                </widget>
   14.95 +                <widget class="QCheckBox">
   14.96 +                    <property name="name">
   14.97 +                        <cstring>textColorButton</cstring>
   14.98 +                    </property>
   14.99 +                    <property name="text">
  14.100 +                        <string>Colored headings in text</string>
  14.101 +                    </property>
  14.102 +                </widget>
  14.103 +                <widget class="QCheckBox">
  14.104 +                    <property name="name">
  14.105 +                        <cstring>saveSettingsInMapButton</cstring>
  14.106 +                    </property>
  14.107 +                    <property name="text">
  14.108 +                        <string>Save settings in map</string>
  14.109 +                    </property>
  14.110 +                </widget>
  14.111 +                <widget class="QCheckBox">
  14.112 +                    <property name="name">
  14.113 +                        <cstring>warningsButton</cstring>
  14.114 +                    </property>
  14.115 +                    <property name="text">
  14.116 +                        <string>showWarnings e.g. if directory is not empty</string>
  14.117 +                    </property>
  14.118 +                </widget>
  14.119 +                <widget class="QCheckBox">
  14.120 +                    <property name="name">
  14.121 +                        <cstring>outputButton</cstring>
  14.122 +                    </property>
  14.123 +                    <property name="sizePolicy">
  14.124 +                        <sizepolicy>
  14.125 +                            <hsizetype>1</hsizetype>
  14.126 +                            <vsizetype>0</vsizetype>
  14.127 +                            <horstretch>0</horstretch>
  14.128 +                            <verstretch>0</verstretch>
  14.129 +                        </sizepolicy>
  14.130 +                    </property>
  14.131 +                    <property name="text">
  14.132 +                        <string>show output of external scripts</string>
  14.133 +                    </property>
  14.134 +                </widget>
  14.135 +            </vbox>
  14.136 +        </widget>
  14.137 +        <widget class="QButtonGroup">
  14.138 +            <property name="name">
  14.139 +                <cstring>buttonGroup2_2</cstring>
  14.140 +            </property>
  14.141 +            <property name="sizePolicy">
  14.142 +                <sizepolicy>
  14.143 +                    <hsizetype>3</hsizetype>
  14.144 +                    <vsizetype>3</vsizetype>
  14.145 +                    <horstretch>0</horstretch>
  14.146 +                    <verstretch>0</verstretch>
  14.147 +                </sizepolicy>
  14.148 +            </property>
  14.149 +            <property name="title">
  14.150 +                <string>Stylesheets</string>
  14.151 +            </property>
  14.152 +            <widget class="QLayoutWidget">
  14.153 +                <property name="name">
  14.154 +                    <cstring>layout7</cstring>
  14.155 +                </property>
  14.156 +                <property name="geometry">
  14.157 +                    <rect>
  14.158 +                        <x>10</x>
  14.159 +                        <y>30</y>
  14.160 +                        <width>540</width>
  14.161 +                        <height>84</height>
  14.162 +                    </rect>
  14.163 +                </property>
  14.164 +                <vbox>
  14.165 +                    <property name="name">
  14.166 +                        <cstring>unnamed</cstring>
  14.167 +                    </property>
  14.168 +                    <widget class="QLayoutWidget">
  14.169 +                        <property name="name">
  14.170 +                            <cstring>layout5</cstring>
  14.171 +                        </property>
  14.172 +                        <hbox>
  14.173 +                            <property name="name">
  14.174 +                                <cstring>unnamed</cstring>
  14.175 +                            </property>
  14.176 +                            <widget class="QLabel">
  14.177 +                                <property name="name">
  14.178 +                                    <cstring>textLabel1_2</cstring>
  14.179 +                                </property>
  14.180 +                                <property name="text">
  14.181 +                                    <string>CSS:</string>
  14.182 +                                </property>
  14.183 +                            </widget>
  14.184 +                            <widget class="QLineEdit">
  14.185 +                                <property name="name">
  14.186 +                                    <cstring>lineEditCSS</cstring>
  14.187 +                                </property>
  14.188 +                            </widget>
  14.189 +                            <widget class="QPushButton">
  14.190 +                                <property name="name">
  14.191 +                                    <cstring>browseCSSButton</cstring>
  14.192 +                                </property>
  14.193 +                                <property name="text">
  14.194 +                                    <string>Browse</string>
  14.195 +                                </property>
  14.196 +                            </widget>
  14.197 +                        </hbox>
  14.198 +                    </widget>
  14.199 +                    <widget class="QLayoutWidget">
  14.200 +                        <property name="name">
  14.201 +                            <cstring>layout6</cstring>
  14.202 +                        </property>
  14.203 +                        <hbox>
  14.204 +                            <property name="name">
  14.205 +                                <cstring>unnamed</cstring>
  14.206 +                            </property>
  14.207 +                            <widget class="QLabel">
  14.208 +                                <property name="name">
  14.209 +                                    <cstring>textLabel2</cstring>
  14.210 +                                </property>
  14.211 +                                <property name="text">
  14.212 +                                    <string>XSL:</string>
  14.213 +                                </property>
  14.214 +                            </widget>
  14.215 +                            <widget class="QLineEdit">
  14.216 +                                <property name="name">
  14.217 +                                    <cstring>lineEditXSL</cstring>
  14.218 +                                </property>
  14.219 +                            </widget>
  14.220 +                            <widget class="QPushButton">
  14.221 +                                <property name="name">
  14.222 +                                    <cstring>browseXSLButton</cstring>
  14.223 +                                </property>
  14.224 +                                <property name="text">
  14.225 +                                    <string>Browse</string>
  14.226 +                                </property>
  14.227 +                            </widget>
  14.228 +                        </hbox>
  14.229 +                    </widget>
  14.230 +                </vbox>
  14.231 +            </widget>
  14.232 +        </widget>
  14.233 +        <widget class="QGroupBox">
  14.234 +            <property name="name">
  14.235 +                <cstring>groupBox1</cstring>
  14.236 +            </property>
  14.237 +            <property name="title">
  14.238 +                <string>Scripts</string>
  14.239 +            </property>
  14.240 +            <widget class="QLabel">
  14.241 +                <property name="name">
  14.242 +                    <cstring>textLabel1_3</cstring>
  14.243 +                </property>
  14.244 +                <property name="geometry">
  14.245 +                    <rect>
  14.246 +                        <x>12</x>
  14.247 +                        <y>22</y>
  14.248 +                        <width>110</width>
  14.249 +                        <height>36</height>
  14.250 +                    </rect>
  14.251 +                </property>
  14.252 +                <property name="text">
  14.253 +                    <string>Before export:</string>
  14.254 +                </property>
  14.255 +            </widget>
  14.256 +            <widget class="QLineEdit">
  14.257 +                <property name="name">
  14.258 +                    <cstring>lineEditPreScript</cstring>
  14.259 +                </property>
  14.260 +                <property name="geometry">
  14.261 +                    <rect>
  14.262 +                        <x>128</x>
  14.263 +                        <y>26</y>
  14.264 +                        <width>322</width>
  14.265 +                        <height>28</height>
  14.266 +                    </rect>
  14.267 +                </property>
  14.268 +            </widget>
  14.269 +            <widget class="QPushButton">
  14.270 +                <property name="name">
  14.271 +                    <cstring>browsePreExportButton</cstring>
  14.272 +                </property>
  14.273 +                <property name="geometry">
  14.274 +                    <rect>
  14.275 +                        <x>456</x>
  14.276 +                        <y>22</y>
  14.277 +                        <width>94</width>
  14.278 +                        <height>36</height>
  14.279 +                    </rect>
  14.280 +                </property>
  14.281 +                <property name="text">
  14.282 +                    <string>Browse</string>
  14.283 +                </property>
  14.284 +            </widget>
  14.285 +            <widget class="QLabel">
  14.286 +                <property name="name">
  14.287 +                    <cstring>textLabel2_2</cstring>
  14.288 +                </property>
  14.289 +                <property name="geometry">
  14.290 +                    <rect>
  14.291 +                        <x>11</x>
  14.292 +                        <y>61</y>
  14.293 +                        <width>99</width>
  14.294 +                        <height>36</height>
  14.295 +                    </rect>
  14.296 +                </property>
  14.297 +                <property name="text">
  14.298 +                    <string>After Export:</string>
  14.299 +                </property>
  14.300 +            </widget>
  14.301 +            <widget class="QLineEdit">
  14.302 +                <property name="name">
  14.303 +                    <cstring>lineEditPostScript</cstring>
  14.304 +                </property>
  14.305 +                <property name="geometry">
  14.306 +                    <rect>
  14.307 +                        <x>116</x>
  14.308 +                        <y>65</y>
  14.309 +                        <width>333</width>
  14.310 +                        <height>28</height>
  14.311 +                    </rect>
  14.312 +                </property>
  14.313 +            </widget>
  14.314 +            <widget class="QPushButton">
  14.315 +                <property name="name">
  14.316 +                    <cstring>browsePostExportButton</cstring>
  14.317 +                </property>
  14.318 +                <property name="geometry">
  14.319 +                    <rect>
  14.320 +                        <x>455</x>
  14.321 +                        <y>61</y>
  14.322 +                        <width>94</width>
  14.323 +                        <height>36</height>
  14.324 +                    </rect>
  14.325 +                </property>
  14.326 +                <property name="text">
  14.327 +                    <string>Browse</string>
  14.328 +                </property>
  14.329 +            </widget>
  14.330 +        </widget>
  14.331 +        <spacer>
  14.332 +            <property name="name">
  14.333 +                <cstring>spacer3</cstring>
  14.334 +            </property>
  14.335 +            <property name="orientation">
  14.336 +                <enum>Vertical</enum>
  14.337 +            </property>
  14.338 +            <property name="sizeType">
  14.339 +                <enum>Expanding</enum>
  14.340 +            </property>
  14.341 +            <property name="sizeHint">
  14.342 +                <size>
  14.343 +                    <width>20</width>
  14.344 +                    <height>31</height>
  14.345 +                </size>
  14.346 +            </property>
  14.347 +        </spacer>
  14.348 +        <widget class="QLayoutWidget">
  14.349 +            <property name="name">
  14.350 +                <cstring>layout17</cstring>
  14.351 +            </property>
  14.352 +            <hbox>
  14.353 +                <property name="name">
  14.354 +                    <cstring>unnamed</cstring>
  14.355 +                </property>
  14.356 +                <spacer>
  14.357 +                    <property name="name">
  14.358 +                        <cstring>spacer5</cstring>
  14.359 +                    </property>
  14.360 +                    <property name="orientation">
  14.361 +                        <enum>Horizontal</enum>
  14.362 +                    </property>
  14.363 +                    <property name="sizeType">
  14.364 +                        <enum>Expanding</enum>
  14.365 +                    </property>
  14.366 +                    <property name="sizeHint">
  14.367 +                        <size>
  14.368 +                            <width>61</width>
  14.369 +                            <height>21</height>
  14.370 +                        </size>
  14.371 +                    </property>
  14.372 +                </spacer>
  14.373 +                <widget class="QPushButton">
  14.374 +                    <property name="name">
  14.375 +                        <cstring>exportButton</cstring>
  14.376 +                    </property>
  14.377 +                    <property name="text">
  14.378 +                        <string>Export</string>
  14.379 +                    </property>
  14.380 +                    <property name="default">
  14.381 +                        <bool>true</bool>
  14.382 +                    </property>
  14.383 +                </widget>
  14.384 +                <widget class="QPushButton">
  14.385 +                    <property name="name">
  14.386 +                        <cstring>cancelButton</cstring>
  14.387 +                    </property>
  14.388 +                    <property name="text">
  14.389 +                        <string>Cancel</string>
  14.390 +                    </property>
  14.391 +                </widget>
  14.392 +            </hbox>
  14.393 +        </widget>
  14.394 +    </vbox>
  14.395 +</widget>
  14.396 +<connections>
  14.397 +    <connection>
  14.398 +        <sender>outputButton</sender>
  14.399 +        <signal>toggled(bool)</signal>
  14.400 +        <receiver>ExportXHTMLDialog</receiver>
  14.401 +        <slot>outputButtonPressed(bool)</slot>
  14.402 +    </connection>
  14.403 +    <connection>
  14.404 +        <sender>exportButton</sender>
  14.405 +        <signal>pressed()</signal>
  14.406 +        <receiver>ExportXHTMLDialog</receiver>
  14.407 +        <slot>accept()</slot>
  14.408 +    </connection>
  14.409 +    <connection>
  14.410 +        <sender>cancelButton</sender>
  14.411 +        <signal>pressed()</signal>
  14.412 +        <receiver>ExportXHTMLDialog</receiver>
  14.413 +        <slot>close()</slot>
  14.414 +    </connection>
  14.415 +    <connection>
  14.416 +        <sender>browseExportDirButton</sender>
  14.417 +        <signal>pressed()</signal>
  14.418 +        <receiver>ExportXHTMLDialog</receiver>
  14.419 +        <slot>browseDirectoryPressed()</slot>
  14.420 +    </connection>
  14.421 +    <connection>
  14.422 +        <sender>browseXSLButton</sender>
  14.423 +        <signal>pressed()</signal>
  14.424 +        <receiver>ExportXHTMLDialog</receiver>
  14.425 +        <slot>browseXSLPressed()</slot>
  14.426 +    </connection>
  14.427 +    <connection>
  14.428 +        <sender>browseCSSButton</sender>
  14.429 +        <signal>pressed()</signal>
  14.430 +        <receiver>ExportXHTMLDialog</receiver>
  14.431 +        <slot>browseCSSPressed()</slot>
  14.432 +    </connection>
  14.433 +    <connection>
  14.434 +        <sender>imageButton</sender>
  14.435 +        <signal>toggled(bool)</signal>
  14.436 +        <receiver>ExportXHTMLDialog</receiver>
  14.437 +        <slot>imageButtonPressed(bool)</slot>
  14.438 +    </connection>
  14.439 +    <connection>
  14.440 +        <sender>textColorButton</sender>
  14.441 +        <signal>toggled(bool)</signal>
  14.442 +        <receiver>ExportXHTMLDialog</receiver>
  14.443 +        <slot>textcolorButtonPressed(bool)</slot>
  14.444 +    </connection>
  14.445 +    <connection>
  14.446 +        <sender>lineEditDir</sender>
  14.447 +        <signal>textChanged(const QString&amp;)</signal>
  14.448 +        <receiver>ExportXHTMLDialog</receiver>
  14.449 +        <slot>dirChanged()</slot>
  14.450 +    </connection>
  14.451 +    <connection>
  14.452 +        <sender>lineEditCSS</sender>
  14.453 +        <signal>textChanged(const QString&amp;)</signal>
  14.454 +        <receiver>ExportXHTMLDialog</receiver>
  14.455 +        <slot>cssChanged()</slot>
  14.456 +    </connection>
  14.457 +    <connection>
  14.458 +        <sender>lineEditXSL</sender>
  14.459 +        <signal>textChanged(const QString&amp;)</signal>
  14.460 +        <receiver>ExportXHTMLDialog</receiver>
  14.461 +        <slot>xslChanged()</slot>
  14.462 +    </connection>
  14.463 +    <connection>
  14.464 +        <sender>browsePreExportButton</sender>
  14.465 +        <signal>pressed()</signal>
  14.466 +        <receiver>ExportXHTMLDialog</receiver>
  14.467 +        <slot>browsePreExportButtonPressed()</slot>
  14.468 +    </connection>
  14.469 +    <connection>
  14.470 +        <sender>browsePostExportButton</sender>
  14.471 +        <signal>pressed()</signal>
  14.472 +        <receiver>ExportXHTMLDialog</receiver>
  14.473 +        <slot>browsePostExportButtonPressed()</slot>
  14.474 +    </connection>
  14.475 +    <connection>
  14.476 +        <sender>lineEditPreScript</sender>
  14.477 +        <signal>textChanged(const QString&amp;)</signal>
  14.478 +        <receiver>ExportXHTMLDialog</receiver>
  14.479 +        <slot>prescriptChanged()</slot>
  14.480 +    </connection>
  14.481 +    <connection>
  14.482 +        <sender>lineEditPostScript</sender>
  14.483 +        <signal>textChanged(const QString&amp;)</signal>
  14.484 +        <receiver>ExportXHTMLDialog</receiver>
  14.485 +        <slot>postscriptChanged()</slot>
  14.486 +    </connection>
  14.487 +    <connection>
  14.488 +        <sender>warningsButton</sender>
  14.489 +        <signal>toggled(bool)</signal>
  14.490 +        <receiver>ExportXHTMLDialog</receiver>
  14.491 +        <slot>warningsButtonPressed(bool)</slot>
  14.492 +    </connection>
  14.493 +    <connection>
  14.494 +        <sender>saveSettingsInMapButton</sender>
  14.495 +        <signal>toggled(bool)</signal>
  14.496 +        <receiver>ExportXHTMLDialog</receiver>
  14.497 +        <slot>saveSettingsInMapButtonPressed(bool)</slot>
  14.498 +    </connection>
  14.499 +</connections>
  14.500 +<includes>
  14.501 +    <include location="local" impldecl="in declaration">process.h</include>
  14.502 +    <include location="local" impldecl="in declaration">showtextdialog.h</include>
  14.503 +    <include location="global" impldecl="in implementation">qfiledialog.h</include>
  14.504 +    <include location="global" impldecl="in implementation">qmessagebox.h</include>
  14.505 +    <include location="local" impldecl="in implementation">settings.h</include>
  14.506 +    <include location="local" impldecl="in implementation">icons/flag-url.xpm</include>
  14.507 +    <include location="local" impldecl="in implementation">exportxhtmldialog.ui.h</include>
  14.508 +</includes>
  14.509 +<variables>
  14.510 +    <variable>bool useTextColor;</variable>
  14.511 +    <variable>bool showWarnings;</variable>
  14.512 +    <variable>QString xsl;</variable>
  14.513 +    <variable>QString css;</variable>
  14.514 +    <variable>bool useImage;</variable>
  14.515 +    <variable>bool showOutput;</variable>
  14.516 +    <variable>Process *xsltProc;</variable>
  14.517 +    <variable>ShowTextDialog *dia;</variable>
  14.518 +    <variable>QString dir;</variable>
  14.519 +    <variable>QString xsltprocessor;</variable>
  14.520 +    <variable>QString filepath;</variable>
  14.521 +    <variable>QString prescript;</variable>
  14.522 +    <variable>QString postscript;</variable>
  14.523 +    <variable>bool settingsChanged;</variable>
  14.524 +    <variable>QString mapname;</variable>
  14.525 +    <variable>bool saveSettingsInMap;</variable>
  14.526 +</variables>
  14.527 +<slots>
  14.528 +    <slot>readSettings()</slot>
  14.529 +    <slot>dirChanged()</slot>
  14.530 +    <slot>browseDirectoryPressed()</slot>
  14.531 +    <slot>imageButtonPressed( bool b )</slot>
  14.532 +    <slot>textcolorButtonPressed( bool b )</slot>
  14.533 +    <slot>saveSettingsInMapButtonPressed( bool b )</slot>
  14.534 +    <slot>warningsButtonPressed( bool b )</slot>
  14.535 +    <slot>outputButtonPressed( bool b )</slot>
  14.536 +    <slot>cssChanged()</slot>
  14.537 +    <slot>browseCSSPressed()</slot>
  14.538 +    <slot>xslChanged()</slot>
  14.539 +    <slot>prescriptChanged()</slot>
  14.540 +    <slot>browseXSLPressed()</slot>
  14.541 +    <slot>postscriptChanged()</slot>
  14.542 +    <slot>browsePreExportButtonPressed()</slot>
  14.543 +    <slot>browsePostExportButtonPressed()</slot>
  14.544 +    <slot>doExport( const QString &amp; mapname )</slot>
  14.545 +    <slot>setFilePath( const QString &amp; s )</slot>
  14.546 +    <slot>setMapName( const QString &amp; s )</slot>
  14.547 +</slots>
  14.548 +<functions>
  14.549 +    <function access="private" specifier="non virtual">init()</function>
  14.550 +    <function access="private" specifier="non virtual">destroy()</function>
  14.551 +    <function returnType="QString">getDir()</function>
  14.552 +    <function returnType="bool">warnings()</function>
  14.553 +    <function returnType="bool">hasChanged()</function>
  14.554 +    <function access="private" specifier="non virtual">runScript( QString spath, QString fpath )</function>
  14.555 +</functions>
  14.556 +<pixmapinproject/>
  14.557 +<layoutdefaults spacing="6" margin="11"/>
  14.558 +</UI>
    15.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.2 +++ b/exportxhtmldialog.ui.h	Sun Jan 30 12:59:10 2005 +0000
    15.3 @@ -0,0 +1,412 @@
    15.4 +/****************************************************************************
    15.5 +** ui.h extension file, included from the uic-generated form implementation.
    15.6 +**
    15.7 +** If you wish to add, delete or rename functions or slots use
    15.8 +** Qt Designer which will update this file, preserving your code. Create an
    15.9 +** init() function in place of a constructor, and a destroy() function in
   15.10 +** place of a destructor.
   15.11 +*****************************************************************************/
   15.12 +
   15.13 +
   15.14 +extern Settings settings;
   15.15 +
   15.16 +void ExportXHTMLDialog::init()
   15.17 +{
   15.18 +	dia=new ShowTextDialog ();
   15.19 +	xsltprocessor="xsltproc";
   15.20 +	filepath="";
   15.21 +	settingsChanged=false;
   15.22 +}
   15.23 +
   15.24 +void ExportXHTMLDialog::readSettings()
   15.25 +{
   15.26 +
   15.27 +	dir=settings.readLocalEntry (filepath,"/vym/export/xhtml/exportDir","./" );
   15.28 +	lineEditDir->setText(dir);
   15.29 +	
   15.30 +	
   15.31 +    if ( settings.readLocalEntry (filepath,"/vym/export/xhtml/useImage","yes")=="yes")
   15.32 +		useImage=true;
   15.33 +	else	
   15.34 +		useImage=false;
   15.35 +	imageButton->setChecked(useImage);
   15.36 +		
   15.37 +	if ( settings.readLocalEntry (filepath,"/vym/export/xhtml/useTextColor","no")=="yes")
   15.38 +		useTextColor=true;
   15.39 +	else	
   15.40 +		useTextColor=false;
   15.41 +	textColorButton->setChecked(useTextColor);
   15.42 +	
   15.43 +/* FIXME this was used in old html export, is not yet in new stylesheet
   15.44 +	if ( settings.readEntry ("/vym/export/html/useHeading","no")=="yes")
   15.45 +		useHeading=true;
   15.46 +	else	
   15.47 +		useHeading=false;
   15.48 +	checkBox4_2->setChecked(useHeading);
   15.49 +*/		
   15.50 +
   15.51 +	if ( settings.readLocalEntry (filepath,"/vym/export/xhtml/saveSettingsInMap","no")=="yes")
   15.52 +		saveSettingsInMap=true;
   15.53 +	else	
   15.54 +		saveSettingsInMap=false;
   15.55 +	saveSettingsInMapButton->setChecked(saveSettingsInMap);
   15.56 +
   15.57 +	if ( settings.readEntry ("/vym/export/xhtml/showWarnings","yes")=="yes")
   15.58 +		showWarnings=true;
   15.59 +	else	
   15.60 +		showWarnings=false;
   15.61 +	warningsButton->setChecked(showWarnings);
   15.62 +	
   15.63 +	if ( settings.readEntry ("/vym/export/xhtml/showOutput","no")=="yes")
   15.64 +		showOutput=true;
   15.65 +	else	
   15.66 +		showOutput=false;
   15.67 +	outputButton->setChecked(showOutput);
   15.68 +
   15.69 +	xsl=settings.readLocalEntry 
   15.70 +		(filepath,"/vym/export/xhtml/xsl","/usr/share/vym/styles/vym2xhtml.xsl");
   15.71 +	lineEditXSL->setText(xsl);
   15.72 +	
   15.73 +	css=settings.readLocalEntry 
   15.74 +		(filepath,"/vym/export/xhtml/css","/usr/share/vym/styles/vym.css");	
   15.75 +	lineEditCSS->setText(css);
   15.76 +	
   15.77 +	prescript=settings.readLocalEntry
   15.78 +		(filepath,"/vym/export/xhtml/prescript","");
   15.79 +	lineEditPreScript->setText (prescript);	
   15.80 +	
   15.81 +	postscript=settings.readLocalEntry
   15.82 +		(filepath,"/vym/export/xhtml/postscript","");
   15.83 +	lineEditPostScript->setText (postscript);	
   15.84 +
   15.85 +	if (!prescript.isEmpty() || !postscript.isEmpty())
   15.86 +	{
   15.87 +		QMessageBox::warning( 0, tr( "Warning" ),tr(
   15.88 +		"The settings saved in the map "
   15.89 +		"would like to run scripts:\n\n") +
   15.90 +		prescript +"  "+postscript +"\n\n"+
   15.91 +		tr("Please check, if you really\n"
   15.92 +		"want to allow this in your system!"));
   15.93 +		
   15.94 +	}
   15.95 +}
   15.96 +
   15.97 +void ExportXHTMLDialog::destroy()
   15.98 +{
   15.99 +	delete (dia);
  15.100 +}
  15.101 +
  15.102 +void ExportXHTMLDialog::dirChanged()
  15.103 +{
  15.104 +	dir=lineEditDir->text();
  15.105 +	if (dir.right(1)!="/")
  15.106 +		dir+="/";
  15.107 +	settingsChanged=true;
  15.108 +}
  15.109 +
  15.110 +void ExportXHTMLDialog::browseDirectoryPressed()
  15.111 +{
  15.112 +   	QFileDialog fd( this, tr("VYM - Export HTML to directory"));
  15.113 +	fd.setMode (QFileDialog::DirectoryOnly);
  15.114 +	fd.setCaption(tr("VYM - Export HTML to directory"));
  15.115 +	fd.setModal (true);
  15.116 +	fd.show();
  15.117 +
  15.118 +	if ( fd.exec() == QDialog::Accepted )
  15.119 +	{
  15.120 +		dir=fd.selectedFile();
  15.121 +		lineEditDir->setText (dir );
  15.122 +		settingsChanged=true;
  15.123 +	}
  15.124 +}
  15.125 +
  15.126 +void ExportXHTMLDialog::imageButtonPressed(bool b)
  15.127 +{
  15.128 +	useImage=b;
  15.129 +	settingsChanged=true;
  15.130 +}
  15.131 +
  15.132 +void ExportXHTMLDialog::textcolorButtonPressed(bool b)
  15.133 +{
  15.134 +	useTextColor=b;	
  15.135 +	settingsChanged=true;
  15.136 +}
  15.137 +
  15.138 +void ExportXHTMLDialog::saveSettingsInMapButtonPressed(bool b)
  15.139 +{
  15.140 +	saveSettingsInMap=b;	
  15.141 +	settingsChanged=true;
  15.142 +}
  15.143 +
  15.144 +void ExportXHTMLDialog::warningsButtonPressed(bool b)
  15.145 +{
  15.146 +	showWarnings=b;
  15.147 +	settingsChanged=true;
  15.148 +}
  15.149 +
  15.150 +
  15.151 +void ExportXHTMLDialog::outputButtonPressed(bool b)
  15.152 +{
  15.153 +	showOutput=b;
  15.154 +	settingsChanged=true;
  15.155 +}
  15.156 +
  15.157 +void ExportXHTMLDialog::cssChanged()
  15.158 +{
  15.159 +	css=lineEditCSS->text();
  15.160 +	settingsChanged=true;
  15.161 +}
  15.162 +
  15.163 +void ExportXHTMLDialog::browseCSSPressed()
  15.164 +{
  15.165 +   	QFileDialog fd( this, tr("VYM - Path to CSS file"));
  15.166 +	fd.setModal (true);
  15.167 +	fd.addFilter ("Cascading Stylesheet (*.css)");
  15.168 +	fd.show();
  15.169 +
  15.170 +	if ( fd.exec() == QDialog::Accepted )
  15.171 +	{
  15.172 +		css=fd.selectedFile();
  15.173 +		lineEditCSS->setText (css );
  15.174 +		settingsChanged=true;
  15.175 +	}
  15.176 +}
  15.177 +
  15.178 +void ExportXHTMLDialog::xslChanged()
  15.179 +{
  15.180 +	xsl=lineEditXSL->text();
  15.181 +	settingsChanged=true;
  15.182 +}
  15.183 +
  15.184 +void ExportXHTMLDialog::prescriptChanged()
  15.185 +{
  15.186 +	prescript=lineEditPreScript->text();
  15.187 +	settingsChanged=true;
  15.188 +}
  15.189 +
  15.190 +void ExportXHTMLDialog::browseXSLPressed()
  15.191 +{
  15.192 +   	QFileDialog fd( this, tr("VYM - Path to XSL file"));
  15.193 +	fd.setModal (true);
  15.194 +	fd.addFilter ("Extensible Styleshee Language (*.xsl)");
  15.195 +	fd.show();
  15.196 +
  15.197 +	if ( fd.exec() == QDialog::Accepted )
  15.198 +	{
  15.199 +		xsl=fd.selectedFile();
  15.200 +		lineEditXSL->setText (xsl );
  15.201 +		settingsChanged=true;
  15.202 +	}
  15.203 +}
  15.204 +
  15.205 +void ExportXHTMLDialog::postscriptChanged()
  15.206 +{
  15.207 +	postscript=lineEditPostScript->text();
  15.208 +	settingsChanged=true;
  15.209 +}
  15.210 +
  15.211 +void ExportXHTMLDialog::browsePreExportButtonPressed()
  15.212 +{
  15.213 +	QFileDialog fd( this, tr("VYM - Path to pre export script"));
  15.214 +	fd.setModal (true);
  15.215 +	fd.addFilter ("Scripts (*.sh *.pl *.py *.php)");
  15.216 +	fd.show();
  15.217 +
  15.218 +	if ( fd.exec() == QDialog::Accepted )
  15.219 +	{
  15.220 +		prescript=fd.selectedFile();
  15.221 +		lineEditPreScript->setText (prescript );
  15.222 +		settingsChanged=true;
  15.223 +	}
  15.224 +
  15.225 +}
  15.226 +
  15.227 +void ExportXHTMLDialog::browsePostExportButtonPressed()
  15.228 +{
  15.229 +	QFileDialog fd( this, tr("VYM - Path to post export script"));
  15.230 +	fd.setModal (true);
  15.231 +	fd.addFilter ("Scripts (*.sh *.pl *.py *.php)");
  15.232 +	fd.show();
  15.233 +
  15.234 +	if ( fd.exec() == QDialog::Accepted )
  15.235 +	{
  15.236 +		postscript=fd.selectedFile();
  15.237 +		lineEditPostScript->setText (postscript );
  15.238 +		settingsChanged=true;
  15.239 +	}
  15.240 +}
  15.241 +
  15.242 +
  15.243 +void ExportXHTMLDialog::doExport (const QString &mapname)
  15.244 +{
  15.245 +	// Save options to settings file 
  15.246 +	// (but don't save at destructor, which
  15.247 +	// is called for "cancel", too)
  15.248 +	settings.setLocalEntry (filepath,"/vym/export/xhtml/exportDir",dir);
  15.249 +
  15.250 +	settings.setLocalEntry (filepath,"/vym/export/xhtml/prescript",prescript);
  15.251 +	settings.setLocalEntry (filepath,"/vym/export/xhtml/postscript",postscript);
  15.252 +
  15.253 +    if (useImage)
  15.254 +		settings.setLocalEntry (filepath,"/vym/export/xhtml/useImage","yes");
  15.255 +    else
  15.256 +		settings.setLocalEntry (filepath,"/vym/export/xhtml/useImage","no");	
  15.257 +	
  15.258 +  if (useTextColor)
  15.259 +		settings.setLocalEntry (filepath,"/vym/export/xhtml/useTextColor","yes");
  15.260 +    else
  15.261 +		settings.setLocalEntry (filepath,"/vym/export/xhtml/useTextColor","no");	
  15.262 +	
  15.263 +   if (showWarnings)
  15.264 +		settings.writeEntry ("/vym/export/xhtml/showWarnings","yes");
  15.265 +    else
  15.266 +		settings.writeEntry ("/vym/export/xhtml/showWarnings","no");	
  15.267 +			
  15.268 +	if (showOutput)
  15.269 +		settings.writeEntry ("/vym/export/xhtml/showOutput","yes");
  15.270 +	else
  15.271 +		settings.writeEntry ("/vym/export/xhtml/showOutput","no");	
  15.272 +		
  15.273 +	settings.setLocalEntry 
  15.274 +		(filepath,"/vym/export/xhtml/xsl",xsl);
  15.275 +	settings.setLocalEntry 
  15.276 +		(filepath,"/vym/export/xhtml/css",css);	
  15.277 +
  15.278 +	//FIXME add option for url image (globe flag) here	
  15.279 +	if (true) 
  15.280 +	{	
  15.281 +		QPixmap pm (flag_url_xpm);
  15.282 +		pm.save (dir + "/flags/url.png","PNG");
  15.283 +	}
  15.284 +
  15.285 +	if (!saveSettingsInMap)
  15.286 +		settings.clearLocal("/vym/export/xhtml");
  15.287 +	else	
  15.288 +		settings.setLocalEntry 
  15.289 +			(filepath,"/vym/export/xhtml/saveSettingsInMap","yes");
  15.290 +
  15.291 +	// Copy CSS file
  15.292 +	QFile css_src (css);
  15.293 +	QFile css_dst (dir+"vym.css");
  15.294 +	if (!css_src.open ( IO_ReadOnly))
  15.295 +		QMessageBox::warning( 0, tr( "Warning" ),css +tr(" could not be opened!"));
  15.296 +	else
  15.297 +	{
  15.298 +		if (!css_dst.open( IO_WriteOnly))
  15.299 +			QMessageBox::warning( 0, tr( "Warning" ), dir+"vym.css" +tr(" could not be opened!"));
  15.300 +		else
  15.301 +		{	
  15.302 +		
  15.303 +			QTextStream tsout( &css_dst);
  15.304 +			QTextStream tsin ( &css_src);
  15.305 +			QString s= tsin.read();
  15.306 +			tsout << s;
  15.307 +			css_dst.close();
  15.308 +		}	
  15.309 +		css_src.close();
  15.310 +	}
  15.311 +
  15.312 +	if (!prescript.isEmpty()) runScript (prescript,dir+mapname+".xml");
  15.313 +	
  15.314 +	Process *xsltProc=new Process ();
  15.315 +	xsltProc->clearArguments();
  15.316 +	xsltProc->addArgument (xsltprocessor);	
  15.317 +	if (useImage)
  15.318 +	{
  15.319 +		xsltProc->addArgument ("--stringparam");
  15.320 +		xsltProc->addArgument ("imagemap");
  15.321 +		xsltProc->addArgument ("images/"+mapname+".png");
  15.322 +	}	
  15.323 +	if (useTextColor)
  15.324 +	{
  15.325 +		xsltProc->addArgument ("--stringparam");
  15.326 +		xsltProc->addArgument ("use.textcolor");
  15.327 +		xsltProc->addArgument ("1");
  15.328 +	}	
  15.329 +	xsltProc->addArgument ("--stringparam");
  15.330 +	xsltProc->addArgument ("mapname");
  15.331 +	xsltProc->addArgument (mapname+".vym");
  15.332 +	
  15.333 +	xsltProc->addArgument ("--output");
  15.334 +	xsltProc->addArgument (dir+mapname+".html");
  15.335 +	xsltProc->addArgument (xsl);
  15.336 +	xsltProc->addArgument (dir+mapname+".xml");
  15.337 +	dia->append ("vym is executing: \n" + xsltProc->arguments().join(" ") );	
  15.338 +	if (!xsltProc->start() )
  15.339 +	{
  15.340 +		QMessageBox::critical( 0, tr( "Critical Error" ),
  15.341 +					   tr("Couldn't start ") + xsltprocessor );
  15.342 +	} else
  15.343 +	{
  15.344 +		xsltProc->waitFinished();
  15.345 +		if (!xsltProc->normalExit() )
  15.346 +			QMessageBox::critical( 0, tr( "Critical Error" ),
  15.347 +			   xsltprocessor +" " +tr("didn't exit normally") +
  15.348 +			   xsltProc->getErrout() );
  15.349 +		else
  15.350 +			if (xsltProc->exitStatus()>0) showOutput=true;
  15.351 +			
  15.352 +	}	
  15.353 +	dia->append ("\n");
  15.354 +	dia->append (xsltProc->getErrout());
  15.355 +	dia->append (xsltProc->getStdout());
  15.356 +	
  15.357 +	if (!postscript.isEmpty()) runScript (postscript,dir+mapname+".html");
  15.358 +
  15.359 +	if (showOutput) dia->exec();
  15.360 +}
  15.361 +
  15.362 +void ExportXHTMLDialog::setFilePath(const QString &s)
  15.363 +{
  15.364 +	filepath=s;
  15.365 +}
  15.366 +
  15.367 +void ExportXHTMLDialog::setMapName(const QString &s)
  15.368 +{
  15.369 +	mapname=s;
  15.370 +}
  15.371 +
  15.372 +QString ExportXHTMLDialog::getDir()
  15.373 +{
  15.374 +	return dir;
  15.375 +}
  15.376 +
  15.377 +bool ExportXHTMLDialog::warnings()
  15.378 +{
  15.379 +	return showWarnings;
  15.380 +}
  15.381 +
  15.382 +bool ExportXHTMLDialog::hasChanged()
  15.383 +{
  15.384 +	return settingsChanged;
  15.385 +}
  15.386 +
  15.387 +
  15.388 +void ExportXHTMLDialog::runScript(QString spath, QString fpath)
  15.389 +{
  15.390 +	spath.replace ("%f",fpath);
  15.391 +	QStringList args=QStringList::split (' ',spath,false);
  15.392 +		
  15.393 +	Process *scriptProc=new Process ();
  15.394 +	scriptProc->clearArguments();
  15.395 +	scriptProc->setArguments (args);	
  15.396 +	dia->append ("vym is executing: \n" + scriptProc->arguments().join(" ") );	
  15.397 +	if (!scriptProc->start() )
  15.398 +	{
  15.399 +		QMessageBox::critical( 0, tr( "Critical Error" ),
  15.400 +					   tr("Couldn't start ") + spath );
  15.401 +	} else
  15.402 +	{
  15.403 +		scriptProc->waitFinished();
  15.404 +		if (!scriptProc->normalExit() )
  15.405 +			QMessageBox::critical( 0, tr( "Critical Error" ),
  15.406 +			   spath +" " +tr("didn't exit normally") +
  15.407 +			   scriptProc->getErrout() );
  15.408 +		else
  15.409 +			if (scriptProc->exitStatus()>0) showOutput=true;
  15.410 +			
  15.411 +	}	
  15.412 +	dia->append ("\n");
  15.413 +	dia->append (scriptProc->getErrout());
  15.414 +	dia->append (scriptProc->getStdout());
  15.415 +}
    16.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.2 +++ b/extrainfodialog.ui	Sun Jan 30 12:59:10 2005 +0000
    16.3 @@ -0,0 +1,204 @@
    16.4 +<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
    16.5 +<class>ExtraInfoDialog</class>
    16.6 +<author>Uwe Drechsel</author>
    16.7 +<widget class="QDialog">
    16.8 +    <property name="name">
    16.9 +        <cstring>ExtraInfoDialog</cstring>
   16.10 +    </property>
   16.11 +    <property name="geometry">
   16.12 +        <rect>
   16.13 +            <x>0</x>
   16.14 +            <y>0</y>
   16.15 +            <width>338</width>
   16.16 +            <height>410</height>
   16.17 +        </rect>
   16.18 +    </property>
   16.19 +    <property name="caption">
   16.20 +        <string>VYM - Info</string>
   16.21 +    </property>
   16.22 +    <vbox>
   16.23 +        <property name="name">
   16.24 +            <cstring>unnamed</cstring>
   16.25 +        </property>
   16.26 +        <widget class="QLabel">
   16.27 +            <property name="name">
   16.28 +                <cstring>textLabel1_2</cstring>
   16.29 +            </property>
   16.30 +            <property name="text">
   16.31 +                <string>Map:</string>
   16.32 +            </property>
   16.33 +        </widget>
   16.34 +        <widget class="QLineEdit">
   16.35 +            <property name="name">
   16.36 +                <cstring>lineEdit7</cstring>
   16.37 +            </property>
   16.38 +            <property name="paletteBackgroundColor">
   16.39 +                <color>
   16.40 +                    <red>225</red>
   16.41 +                    <green>225</green>
   16.42 +                    <blue>225</blue>
   16.43 +                </color>
   16.44 +            </property>
   16.45 +            <property name="backgroundOrigin">
   16.46 +                <enum>WidgetOrigin</enum>
   16.47 +            </property>
   16.48 +            <property name="readOnly">
   16.49 +                <bool>true</bool>
   16.50 +            </property>
   16.51 +        </widget>
   16.52 +        <widget class="QLabel">
   16.53 +            <property name="name">
   16.54 +                <cstring>textLabel1</cstring>
   16.55 +            </property>
   16.56 +            <property name="text">
   16.57 +                <string>Author:</string>
   16.58 +            </property>
   16.59 +        </widget>
   16.60 +        <widget class="QLineEdit">
   16.61 +            <property name="name">
   16.62 +                <cstring>lineEdit2</cstring>
   16.63 +            </property>
   16.64 +        </widget>
   16.65 +        <widget class="QLabel">
   16.66 +            <property name="name">
   16.67 +                <cstring>textLabel2</cstring>
   16.68 +            </property>
   16.69 +            <property name="text">
   16.70 +                <string>Comment:</string>
   16.71 +            </property>
   16.72 +        </widget>
   16.73 +        <widget class="QTextEdit">
   16.74 +            <property name="name">
   16.75 +                <cstring>textEdit4</cstring>
   16.76 +            </property>
   16.77 +            <property name="sizePolicy">
   16.78 +                <sizepolicy>
   16.79 +                    <hsizetype>7</hsizetype>
   16.80 +                    <vsizetype>4</vsizetype>
   16.81 +                    <horstretch>0</horstretch>
   16.82 +                    <verstretch>0</verstretch>
   16.83 +                </sizepolicy>
   16.84 +            </property>
   16.85 +            <property name="maximumSize">
   16.86 +                <size>
   16.87 +                    <width>32767</width>
   16.88 +                    <height>76</height>
   16.89 +                </size>
   16.90 +            </property>
   16.91 +        </widget>
   16.92 +        <widget class="QLabel">
   16.93 +            <property name="name">
   16.94 +                <cstring>textLabel2_2</cstring>
   16.95 +            </property>
   16.96 +            <property name="text">
   16.97 +                <string>Statistics:</string>
   16.98 +            </property>
   16.99 +        </widget>
  16.100 +        <widget class="QTextEdit">
  16.101 +            <property name="name">
  16.102 +                <cstring>textEdit4_2</cstring>
  16.103 +            </property>
  16.104 +            <property name="paletteBackgroundColor">
  16.105 +                <color>
  16.106 +                    <red>225</red>
  16.107 +                    <green>225</green>
  16.108 +                    <blue>225</blue>
  16.109 +                </color>
  16.110 +            </property>
  16.111 +            <property name="font">
  16.112 +                <font>
  16.113 +                    <family>Courier</family>
  16.114 +                    <pointsize>12</pointsize>
  16.115 +                </font>
  16.116 +            </property>
  16.117 +            <property name="textFormat">
  16.118 +                <enum>PlainText</enum>
  16.119 +            </property>
  16.120 +            <property name="readOnly">
  16.121 +                <bool>true</bool>
  16.122 +            </property>
  16.123 +        </widget>
  16.124 +        <widget class="QLayoutWidget">
  16.125 +            <property name="name">
  16.126 +                <cstring>layout21</cstring>
  16.127 +            </property>
  16.128 +            <hbox>
  16.129 +                <property name="name">
  16.130 +                    <cstring>unnamed</cstring>
  16.131 +                </property>
  16.132 +                <spacer>
  16.133 +                    <property name="name">
  16.134 +                        <cstring>spacer10</cstring>
  16.135 +                    </property>
  16.136 +                    <property name="orientation">
  16.137 +                        <enum>Horizontal</enum>
  16.138 +                    </property>
  16.139 +                    <property name="sizeType">
  16.140 +                        <enum>Expanding</enum>
  16.141 +                    </property>
  16.142 +                    <property name="sizeHint">
  16.143 +                        <size>
  16.144 +                            <width>160</width>
  16.145 +                            <height>21</height>
  16.146 +                        </size>
  16.147 +                    </property>
  16.148 +                </spacer>
  16.149 +                <widget class="QPushButton">
  16.150 +                    <property name="name">
  16.151 +                        <cstring>pushButton13</cstring>
  16.152 +                    </property>
  16.153 +                    <property name="text">
  16.154 +                        <string>Cancel</string>
  16.155 +                    </property>
  16.156 +                </widget>
  16.157 +                <widget class="QPushButton">
  16.158 +                    <property name="name">
  16.159 +                        <cstring>pushButton7</cstring>
  16.160 +                    </property>
  16.161 +                    <property name="text">
  16.162 +                        <string>Close</string>
  16.163 +                    </property>
  16.164 +                </widget>
  16.165 +            </hbox>
  16.166 +        </widget>
  16.167 +    </vbox>
  16.168 +</widget>
  16.169 +<connections>
  16.170 +    <connection>
  16.171 +        <sender>pushButton7</sender>
  16.172 +        <signal>clicked()</signal>
  16.173 +        <receiver>ExtraInfoDialog</receiver>
  16.174 +        <slot>accept()</slot>
  16.175 +    </connection>
  16.176 +    <connection>
  16.177 +        <sender>pushButton13</sender>
  16.178 +        <signal>clicked()</signal>
  16.179 +        <receiver>ExtraInfoDialog</receiver>
  16.180 +        <slot>reject()</slot>
  16.181 +    </connection>
  16.182 +</connections>
  16.183 +<tabstops>
  16.184 +    <tabstop>lineEdit2</tabstop>
  16.185 +    <tabstop>textEdit4</tabstop>
  16.186 +    <tabstop>pushButton7</tabstop>
  16.187 +    <tabstop>pushButton13</tabstop>
  16.188 +    <tabstop>lineEdit7</tabstop>
  16.189 +    <tabstop>textEdit4_2</tabstop>
  16.190 +</tabstops>
  16.191 +<includes>
  16.192 +    <include location="global" impldecl="in implementation">qstring.h</include>
  16.193 +    <include location="local" impldecl="in implementation">extrainfodialog.ui.h</include>
  16.194 +</includes>
  16.195 +<slots>
  16.196 +    <slot>setMapName( const QString &amp; s )</slot>
  16.197 +    <slot>setComment( const QString &amp; s )</slot>
  16.198 +    <slot>setAuthor( const QString &amp; s )</slot>
  16.199 +</slots>
  16.200 +<functions>
  16.201 +    <function returnType="QString">getComment()</function>
  16.202 +    <function returnType="QString">getAuthor()</function>
  16.203 +    <function>setStats( const QString &amp; s )</function>
  16.204 +</functions>
  16.205 +<pixmapinproject/>
  16.206 +<layoutdefaults spacing="6" margin="11"/>
  16.207 +</UI>
    17.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    17.2 +++ b/extrainfodialog.ui.h	Sun Jan 30 12:59:10 2005 +0000
    17.3 @@ -0,0 +1,39 @@
    17.4 +/****************************************************************************
    17.5 +** ui.h extension file, included from the uic-generated form implementation.
    17.6 +**
    17.7 +** If you wish to add, delete or rename functions or slots use
    17.8 +** Qt Designer which will update this file, preserving your code. Create an
    17.9 +** init() function in place of a constructor, and a destroy() function in
   17.10 +** place of a destructor.
   17.11 +*****************************************************************************/
   17.12 +
   17.13 +void ExtraInfoDialog::setMapName(const QString &s)
   17.14 +{
   17.15 +	lineEdit7->setText (s);
   17.16 +}
   17.17 +
   17.18 +void ExtraInfoDialog::setComment (const QString &s)
   17.19 +{
   17.20 +	textEdit4->setText (s);
   17.21 +}
   17.22 +
   17.23 +QString ExtraInfoDialog::getComment()
   17.24 +{
   17.25 +	return textEdit4->text();
   17.26 +}	
   17.27 +
   17.28 +
   17.29 +void ExtraInfoDialog::setAuthor(const QString &s)
   17.30 +{
   17.31 +	lineEdit2->setText (s);
   17.32 +}
   17.33 +
   17.34 +QString ExtraInfoDialog::getAuthor()
   17.35 +{
   17.36 +	return lineEdit2->text();
   17.37 +}
   17.38 +
   17.39 +void ExtraInfoDialog::setStats(const QString &s)
   17.40 +{
   17.41 +	textEdit4_2->setText (s);
   17.42 +}
    18.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    18.2 +++ b/findwindow.cpp	Sun Jan 30 12:59:10 2005 +0000
    18.3 @@ -0,0 +1,85 @@
    18.4 +#include <qlineedit.h>
    18.5 +
    18.6 +#include "findwindow.h"
    18.7 +
    18.8 +
    18.9 +FindWindow::FindWindow(QWidget* parent, const char* name, WFlags f) 
   18.10 +	: QGroupBox( 0, Horizontal, "Find", parent, name )
   18.11 +
   18.12 +{
   18.13 +	setCaption ("VYM - Find Text");
   18.14 +	//resize (180,130);
   18.15 +	move (130,130);
   18.16 +
   18.17 +	setMargin( 100 );
   18.18 +
   18.19 +    QVBoxLayout* box = new QVBoxLayout( layout() );
   18.20 +    
   18.21 +    QHBoxLayout *row1 = new QHBoxLayout( box );
   18.22 +    row1->setMargin( 10 );
   18.23 +
   18.24 +    // Create a Label
   18.25 +    QLabel* label = new QLabel( "Text to find: ", this);
   18.26 +    row1->addWidget( label );
   18.27 +
   18.28 +	// Create LineEdit (here QComboBox)
   18.29 +    QHBoxLayout *row2 = new QHBoxLayout( box );
   18.30 +    row2->setMargin( 10 );
   18.31 +    findcombo = new QComboBox( true, this );
   18.32 +	findcombo->setMinimumWidth(150);
   18.33 +    row2->addWidget( findcombo );
   18.34 +	connect ( findcombo, SIGNAL( highlighted(int) ), 
   18.35 +		this, SLOT( findPressed() ) );
   18.36 +	connect ( findcombo, SIGNAL( textChanged(const QString &) ), 
   18.37 +		this, SLOT( findTextChanged(const QString&) ) );
   18.38 +    //findcombo->insertItem( "Normal", -1 );
   18.39 +
   18.40 +	// Create Buttons
   18.41 +    QHBoxLayout *row3 = new QHBoxLayout( box );
   18.42 +    row3->setMargin( 10 );
   18.43 +	clearbutton = new QPushButton (tr("Clear"),this);
   18.44 +	connect ( clearbutton, SIGNAL( clicked() ), 
   18.45 +		findcombo, SLOT( clearEdit() ) );
   18.46 +	row3->addWidget (clearbutton);
   18.47 +	
   18.48 +	QSpacerItem *si1= new QSpacerItem (10,0,QSizePolicy::Minimum, QSizePolicy::Expanding );
   18.49 +	row3->addItem(si1);
   18.50 +	
   18.51 +	cancelbutton = new QPushButton (tr("Cancel"),this);
   18.52 +	cancelbutton->setAccel (Key_Escape);
   18.53 +	connect ( cancelbutton, SIGNAL( clicked() ), 
   18.54 +		this, SLOT( cancelPressed() ) );
   18.55 +	row3->addWidget (cancelbutton);
   18.56 +
   18.57 +	QSpacerItem *si2= new QSpacerItem (10,0,QSizePolicy::Fixed, QSizePolicy::Fixed);
   18.58 +	row3->addItem(si2);
   18.59 +	
   18.60 +	findbutton = new QPushButton (tr("Find"),this);
   18.61 +	findbutton->setDefault (true);
   18.62 +	connect ( findbutton, SIGNAL( clicked() ), 
   18.63 +		this, SLOT( findPressed() ) );
   18.64 +	row3->add(findbutton);
   18.65 +	
   18.66 +	findcombo->setFocus();
   18.67 +}
   18.68 +
   18.69 +void FindWindow::popup()
   18.70 +{
   18.71 +	findcombo->lineEdit()->selectAll();
   18.72 +	show();
   18.73 +}
   18.74 +
   18.75 +void FindWindow::cancelPressed()
   18.76 +{
   18.77 +	hide();
   18.78 +}
   18.79 +
   18.80 +void FindWindow::findPressed()
   18.81 +{
   18.82 +	emit (findButton(findcombo->currentText() ) );
   18.83 +}
   18.84 +
   18.85 +void FindWindow::findTextChanged(const QString&)
   18.86 +{
   18.87 +	emit (somethingChanged() );
   18.88 +}
    19.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.2 +++ b/findwindow.h	Sun Jan 30 12:59:10 2005 +0000
    19.3 @@ -0,0 +1,38 @@
    19.4 +#ifndef FINDWINDOW_H 
    19.5 +#define FINDWINDOW_H
    19.6 +
    19.7 +#include <qmainwindow.h>
    19.8 +#include <qcombobox.h>
    19.9 +#include <qpushbutton.h>
   19.10 +#include <qgroupbox.h>
   19.11 +#include <qlayout.h>
   19.12 +#include <qlabel.h>
   19.13 +
   19.14 +
   19.15 +class FindWindow : public QGroupBox
   19.16 +{
   19.17 +	Q_OBJECT
   19.18 +
   19.19 +public:
   19.20 +	FindWindow (QWidget* parent=0, const char* namme=0, WFlags f=0);
   19.21 +
   19.22 +public slots:	
   19.23 +	void popup();
   19.24 +	void cancelPressed();
   19.25 +	void findPressed();
   19.26 +	void findTextChanged(const QString&);
   19.27 +
   19.28 +signals:
   19.29 +	void findButton(QString);		// emit to mainwindow
   19.30 +	void somethingChanged();	// emit to mainwindow
   19.31 +
   19.32 +private:
   19.33 +	QGroupBox *findbox;
   19.34 +	QComboBox *findcombo;
   19.35 +	QPushButton *clearbutton;
   19.36 +	QPushButton *findbutton;
   19.37 +	QPushButton *cancelbutton;
   19.38 +};
   19.39 +
   19.40 +
   19.41 +#endif
    20.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    20.2 +++ b/flagobj.cpp	Sun Jan 30 12:59:10 2005 +0000
    20.3 @@ -0,0 +1,201 @@
    20.4 +#include "flagobj.h"
    20.5 +
    20.6 +/////////////////////////////////////////////////////////////////
    20.7 +// FlagObj
    20.8 +/////////////////////////////////////////////////////////////////
    20.9 +FlagObj::FlagObj()
   20.10 +{
   20.11 +//    cout << "Const FlagObj ()\n";
   20.12 +    init ();
   20.13 +}
   20.14 +
   20.15 +FlagObj::FlagObj(QCanvas* c):MapObj(c) 
   20.16 +{
   20.17 +//    cout << "Const FlagObj\n";
   20.18 +    init ();
   20.19 +}
   20.20 +
   20.21 +FlagObj::FlagObj (FlagObj* io)
   20.22 +{
   20.23 +    copy (io);
   20.24 +}
   20.25 +
   20.26 +FlagObj::~FlagObj()
   20.27 +{
   20.28 +//    cout << "Destr FlagObj  " << name << "\n";
   20.29 +	delete (icon);
   20.30 +}
   20.31 +
   20.32 +
   20.33 +void FlagObj::init ()
   20.34 +{
   20.35 +	name="undefined";
   20.36 +
   20.37 +	icon=new ImageObj (canvas);
   20.38 +	icon->move (absPos.x(), absPos.y() );
   20.39 +	button=NULL;
   20.40 +	state=false;
   20.41 +}
   20.42 +
   20.43 +void FlagObj::copy (FlagObj* other)
   20.44 +{
   20.45 +    MapObj::copy(other);
   20.46 +	name=other->name;
   20.47 +	tooltip=other->tooltip;
   20.48 +	state=other->state;
   20.49 +	icon->copy(other->icon);
   20.50 +	setVisibility (other->isVisibleObj() );
   20.51 +	// button is not copied, because
   20.52 +	// we won't copy to a parentRow and
   20.53 +	// all others don't need a button
   20.54 +}
   20.55 +
   20.56 +void FlagObj::move(double x, double y)
   20.57 +{
   20.58 +    MapObj::move(x,y);
   20.59 +	icon->move(x,y);
   20.60 +	positionBBox();
   20.61 +}
   20.62 +
   20.63 +void FlagObj::moveBy(double x, double y)
   20.64 +{
   20.65 +    move (x+absPos.x(),y+absPos.y() );
   20.66 +}
   20.67 +
   20.68 +void FlagObj::setVisibility (bool v)
   20.69 +{
   20.70 +    MapObj::setVisibility(v);
   20.71 +	if (v && state)
   20.72 +	    icon->setVisibility(true);
   20.73 +	else
   20.74 +	    icon->setVisibility(false);
   20.75 +}
   20.76 +
   20.77 +void FlagObj::load (const QString &fn)
   20.78 +{
   20.79 +	icon->load(fn);
   20.80 +	calcBBoxSize();
   20.81 +	positionBBox();
   20.82 +}
   20.83 +
   20.84 +void FlagObj::load (const QPixmap &pm)
   20.85 +{
   20.86 +	icon->load(pm);
   20.87 +	calcBBoxSize();
   20.88 +	positionBBox();
   20.89 +}
   20.90 +
   20.91 +void FlagObj::setName(const QString &n)
   20.92 +{
   20.93 +	name=n;
   20.94 +}
   20.95 +
   20.96 +const QString FlagObj::getName()
   20.97 +{
   20.98 +	return name;
   20.99 +}
  20.100 +
  20.101 +void FlagObj::setToolTip(const QString &n)
  20.102 +{
  20.103 +	tooltip=n;
  20.104 +}
  20.105 +
  20.106 +const QString FlagObj::getToolTip()
  20.107 +{
  20.108 +	return tooltip;
  20.109 +}
  20.110 +
  20.111 +void FlagObj::setButton(QAction* b)
  20.112 +{
  20.113 +    button=b;
  20.114 +}
  20.115 +
  20.116 +void FlagObj::updateButton()
  20.117 +{
  20.118 +	if (button)
  20.119 +		button->setOn(state);
  20.120 +	else
  20.121 +		qWarning ("FlagObj::updateButton  no button defined");
  20.122 +}
  20.123 +
  20.124 +QPixmap FlagObj::getPixmap()
  20.125 +{
  20.126 +	return icon->getPixmap();
  20.127 +}
  20.128 +
  20.129 +bool FlagObj::isActive()
  20.130 +{
  20.131 +	return state;
  20.132 +}
  20.133 +
  20.134 +void FlagObj::toggle()
  20.135 +{
  20.136 +	if (state)
  20.137 +		deactivate();
  20.138 +	else
  20.139 +		activate();
  20.140 +}
  20.141 +
  20.142 +void FlagObj::activate()
  20.143 +{
  20.144 +	state=true;
  20.145 +	// only show icon, if flag itself is visible 
  20.146 +	if (visible) 
  20.147 +	{
  20.148 +		icon->setVisibility (true);
  20.149 +		calcBBoxSize();
  20.150 +	}	
  20.151 +}
  20.152 +
  20.153 +void FlagObj::deactivate()
  20.154 +{
  20.155 +	state=false;
  20.156 +	// if flag itself is invisible we don't need to call 
  20.157 +	if (visible) 
  20.158 +	{
  20.159 +		icon->setVisibility (false);
  20.160 +		calcBBoxSize();
  20.161 +	}	
  20.162 +}
  20.163 +
  20.164 +void FlagObj::setEnabled(bool b)
  20.165 +{
  20.166 +	button->setEnabled (b);
  20.167 +}	
  20.168 +	
  20.169 +
  20.170 +void FlagObj::setUsed (bool b)
  20.171 +{
  20.172 +	used=b;
  20.173 +}
  20.174 +
  20.175 +bool FlagObj::isUsed()
  20.176 +{
  20.177 +	return used;
  20.178 +}
  20.179 +
  20.180 +void FlagObj::saveToDir (const QString &tmpdir, const QString &prefix)
  20.181 +{
  20.182 +	QString fn=tmpdir + prefix + name + ".png";
  20.183 +	icon->save (fn,"PNG");
  20.184 +}
  20.185 +
  20.186 +void FlagObj::positionBBox()
  20.187 +{
  20.188 +    bbox.setX (absPos.x() );
  20.189 +    bbox.setY (absPos.y() );
  20.190 +}
  20.191 +
  20.192 +void FlagObj::calcBBoxSize()
  20.193 +{
  20.194 +	if (visible && state)
  20.195 +	{
  20.196 +		bbox.setSize (	QSize(
  20.197 +			icon->boundingRect().width(), 
  20.198 +			icon->boundingRect().height() ) );
  20.199 +	} else
  20.200 +	{
  20.201 +		bbox.setSize (QSize(0,0));
  20.202 +	}
  20.203 +}
  20.204 +
    21.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.2 +++ b/flagobj.h	Sun Jan 30 12:59:10 2005 +0000
    21.3 @@ -0,0 +1,53 @@
    21.4 +#ifndef FLAGOBJ_H
    21.5 +#define FLAGOBJ_H
    21.6 +
    21.7 +
    21.8 +#include <qcanvas.h>
    21.9 +#include <qaction.h>
   21.10 +
   21.11 +#include "mapobj.h"
   21.12 +#include "imageobj.h"
   21.13 +
   21.14 +/////////////////////////////////////////////////////////////////////////////
   21.15 +class FlagObj:public MapObj {
   21.16 +public:
   21.17 +    FlagObj ();
   21.18 +    FlagObj (QCanvas*);
   21.19 +    FlagObj (FlagObj*);
   21.20 +    ~FlagObj ();
   21.21 +    virtual void init ();
   21.22 +    virtual void copy (FlagObj*);
   21.23 +    virtual void move (double x,double y);      // move to absolute Position
   21.24 +    virtual void moveBy (double x,double y);    // move to relative Position
   21.25 +    virtual void setVisibility(bool);
   21.26 +	void load (const QString&);
   21.27 +	void load (const QPixmap&);
   21.28 +	void setName (const QString&);
   21.29 +	const QString getName ();
   21.30 +	void setToolTip(const QString&);
   21.31 +	const QString getToolTip();
   21.32 +	void setButton (QAction*);
   21.33 +	void updateButton ();
   21.34 +	QPixmap getPixmap();
   21.35 +	bool isActive();
   21.36 +	void toggle();
   21.37 +	void activate();
   21.38 +	void deactivate();
   21.39 +	void setEnabled (bool);
   21.40 +	void setUsed (bool);
   21.41 +	bool isUsed();
   21.42 +	void saveToDir (const QString&, const QString&);
   21.43 +	
   21.44 +protected:	
   21.45 +	QString name;
   21.46 +	QString tooltip;
   21.47 +	bool state;
   21.48 +	bool used;
   21.49 +    virtual void positionBBox();
   21.50 +    virtual void calcBBoxSize();
   21.51 +private:
   21.52 +	ImageObj* icon;
   21.53 +	QAction* button;
   21.54 +};
   21.55 +
   21.56 +#endif
    22.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.2 +++ b/flagrowobj.cpp	Sun Jan 30 12:59:10 2005 +0000
    22.3 @@ -0,0 +1,322 @@
    22.4 +#include "flagrowobj.h"
    22.5 +
    22.6 +/////////////////////////////////////////////////////////////////
    22.7 +// FlagRowObj
    22.8 +/////////////////////////////////////////////////////////////////
    22.9 +FlagRowObj::FlagRowObj()
   22.10 +{
   22.11 +    cout << "Const FlagRowObj ()\n";
   22.12 +    init ();
   22.13 +}
   22.14 +
   22.15 +FlagRowObj::FlagRowObj(QCanvas* c):MapObj(c) 
   22.16 +{
   22.17 +//    cout << "Const FlagRowObj\n";
   22.18 +    init ();
   22.19 +}
   22.20 +
   22.21 +FlagRowObj::~FlagRowObj()
   22.22 +{
   22.23 +//    cout << "Destr FlagRowObj\n";
   22.24 +	flag.clear();
   22.25 +}
   22.26 +
   22.27 +void FlagRowObj::init ()
   22.28 +{
   22.29 +    flag.setAutoDelete (true);
   22.30 +	parentRow=NULL;
   22.31 +}
   22.32 +
   22.33 +void FlagRowObj::copy (FlagRowObj* other)
   22.34 +{
   22.35 +    MapObj::copy(other);
   22.36 +	parentRow=other->parentRow;
   22.37 +	flag.clear();
   22.38 +	FlagObj *fo;
   22.39 +    for (fo=other->flag.first(); fo; fo=other->flag.next() )
   22.40 +		addFlag (fo);
   22.41 +}
   22.42 +
   22.43 +void FlagRowObj::clone (FlagRowObj* pr)
   22.44 +{
   22.45 +	// Difference to copy:
   22.46 +	// We don't copy the flags here, they
   22.47 +	// are created on the fly by toggle and activate
   22.48 +	// This saves lots of canvas objects.
   22.49 +	MapObj::copy(pr);
   22.50 +	flag.clear();
   22.51 +	parentRow=pr;
   22.52 +}
   22.53 +
   22.54 +void FlagRowObj::move(double x, double y)
   22.55 +{
   22.56 +    MapObj::move(x,y);
   22.57 +	int dx=0;
   22.58 +	FlagObj *fo;
   22.59 +    for (fo=flag.first(); fo; fo=flag.next() )
   22.60 +	{
   22.61 +		fo->move(x+dx,y);
   22.62 +		dx+=QSize(fo->getSize() ).width();
   22.63 +	}
   22.64 +}
   22.65 +
   22.66 +void FlagRowObj::moveBy(double x, double y)
   22.67 +{
   22.68 +    move (x+absPos.x(),y+absPos.y() );
   22.69 +}
   22.70 +
   22.71 +void FlagRowObj::setVisibility (bool v)
   22.72 +{
   22.73 +	MapObj::setVisibility(v);
   22.74 +	FlagObj *fo;
   22.75 +	for (fo=flag.first(); fo; fo=flag.next() )
   22.76 +		fo->setVisibility (v);
   22.77 +}
   22.78 +
   22.79 +FlagObj* FlagRowObj::addFlag (FlagObj *fo)
   22.80 +{
   22.81 +	FlagObj *newfo=new FlagObj (canvas);
   22.82 +	newfo->move (absPos.x() + bbox.width(), absPos.y() );
   22.83 +	newfo->copy (fo);	// create a deep copy of fo
   22.84 +	flag.append(newfo);
   22.85 +	calcBBoxSize();
   22.86 +	positionBBox();
   22.87 +	return newfo;
   22.88 +}
   22.89 +
   22.90 +void FlagRowObj::positionBBox()
   22.91 +{
   22.92 +    bbox.setX (absPos.x() );
   22.93 +    bbox.setY (absPos.y() );
   22.94 +}
   22.95 +
   22.96 +void FlagRowObj::calcBBoxSize()
   22.97 +{
   22.98 +	QSize size(0,0);
   22.99 +	QSize boxsize(0,0);
  22.100 +	FlagObj *fo;
  22.101 +    for (fo=flag.first(); fo; fo=flag.next() )
  22.102 +	{
  22.103 +		size=fo->getSize();
  22.104 +		// add widths
  22.105 +		boxsize.setWidth(boxsize.width() + size.width() );
  22.106 +		// maximize height
  22.107 +		if (size.height() > boxsize.height() ) 
  22.108 +			boxsize.setHeight(size.height() );
  22.109 +	}
  22.110 +	bbox.setSize (QSize(boxsize.width(), boxsize.height() ));
  22.111 +}
  22.112 +
  22.113 +QString FlagRowObj::getFlagName (const QPoint &p)
  22.114 +{
  22.115 +	if (!inBBox (p)) return "";
  22.116 +	FlagObj *fo;
  22.117 +	for (fo=flag.first();fo; fo=flag.next() )
  22.118 +		if (fo->inBBox (p)) return fo->getName();
  22.119 +	return "";	
  22.120 +
  22.121 +	
  22.122 +}
  22.123 +
  22.124 +bool FlagRowObj::isActive (const QString &foname)
  22.125 +{
  22.126 +	FlagObj *fo=findFlag (foname);
  22.127 +	if (parentRow)
  22.128 +	{
  22.129 +		if (fo)
  22.130 +			return fo->isActive();
  22.131 +		else
  22.132 +			qWarning ("FlagRowObj::isActive of "+name+" couldn't find "+foname);
  22.133 +			
  22.134 +	} else
  22.135 +		if (fo) return true;
  22.136 +	return false;
  22.137 +}
  22.138 +
  22.139 +void FlagRowObj::toggle (const QString &foname)
  22.140 +{
  22.141 +	FlagObj *fo=findFlag (foname);
  22.142 +	if (fo)
  22.143 +	{
  22.144 +		// FlagObj is here, it will be active, too.
  22.145 +		// Deactivate it by removing it from this row.
  22.146 +		flag.remove (fo);
  22.147 +	} else
  22.148 +	{
  22.149 +		// FlagObj is not present in this row.
  22.150 +		// Copy it from parentRow
  22.151 +		fo=parentRow->findFlag (foname);
  22.152 +		if (fo)
  22.153 +		{
  22.154 +			fo=addFlag (fo);
  22.155 +			fo->activate();
  22.156 +		} else
  22.157 +			qWarning ("FlagRowObj ("+name+")::toggle ("+foname+")  failed - could not find it in parentRow");
  22.158 +	}	
  22.159 +	calcBBoxSize();
  22.160 +	positionBBox();	
  22.161 +}
  22.162 +
  22.163 +void FlagRowObj::activate (const QString &foname)
  22.164 +{
  22.165 +	FlagObj *fo=findFlag (foname);
  22.166 +	if (parentRow)
  22.167 +	{
  22.168 +		if (!fo)
  22.169 +		{
  22.170 +			// FlagObj is not present in this row.
  22.171 +			// Copy it from parentRow and activate there
  22.172 +			fo=parentRow->findFlag (foname);
  22.173 +			if (fo)
  22.174 +			{
  22.175 +				fo=addFlag (fo);
  22.176 +				fo->activate();
  22.177 +				fo->setVisibility (visible);
  22.178 +				calcBBoxSize();
  22.179 +				positionBBox();
  22.180 +			} else
  22.181 +				qWarning ("FlagRowObj ("+name+")::activate ("+foname+")  failed - could not find it in parentRow");
  22.182 +		}	
  22.183 +	} else
  22.184 +	{
  22.185 +		// I am the parentRow, mark flag as used
  22.186 +		if (fo)
  22.187 +		{
  22.188 +			fo->setUsed(true);
  22.189 +			fo->activate();
  22.190 +		}	
  22.191 +		else
  22.192 +			qWarning ("FlagRowObj::activate no FlagObj \""+foname+"\" found in parentRow");
  22.193 +	}
  22.194 +}
  22.195 +
  22.196 +void FlagRowObj::deactivate (const QString &foname)
  22.197 +{
  22.198 +	FlagObj *fo=findFlag (foname);
  22.199 +	if (fo) flag.remove(fo);
  22.200 +	calcBBoxSize();
  22.201 +	positionBBox();
  22.202 +}
  22.203 +
  22.204 +void FlagRowObj::deactivateAll ()
  22.205 +{
  22.206 +	if (!parentRow)
  22.207 +	{
  22.208 +		FlagObj *fo;
  22.209 +		for (fo=flag.first();fo; fo=flag.next() )
  22.210 +		{
  22.211 +			fo->deactivate();
  22.212 +		}
  22.213 +	} else
  22.214 +		qWarning ("FlagRowObj::deactivateAll mustn't be called for ordinary rows");
  22.215 +}
  22.216 +
  22.217 +void FlagRowObj::setEnabled (bool b)
  22.218 +{
  22.219 +	// If we have no parent, we are the default FlagRowObj
  22.220 +	// and have QToolbarButtons
  22.221 +	if (!parentRow)
  22.222 +	{
  22.223 +		FlagObj *fo;
  22.224 +		for (fo=flag.first();fo; fo=flag.next() )
  22.225 +			fo->setEnabled (b);
  22.226 +	}
  22.227 +}
  22.228 +
  22.229 +void FlagRowObj::resetUsedCounter()
  22.230 +{
  22.231 +	FlagObj *fo;
  22.232 +	for (fo=flag.first();fo; fo=flag.next() )
  22.233 +		fo->setUsed (false);
  22.234 +}
  22.235 +
  22.236 +QString FlagRowObj::saveToDir (const QString &tmpdir,const QString &prefix, bool writeflags)
  22.237 +{
  22.238 +	// Build xml string
  22.239 +	QString s;
  22.240 +	FlagObj *fo;
  22.241 +	if (parentRow)
  22.242 +		for (fo=flag.first();fo; fo=flag.next() )
  22.243 +		{
  22.244 +			// save flag to xml, if flag is set 
  22.245 +			s+=valueElement("standardflag",fo->getName() );
  22.246 +
  22.247 +			// and tell parentRow, that this flag is used
  22.248 +			parentRow->activate(fo->getName() );
  22.249 +		}	
  22.250 +	else
  22.251 +		// Save icons to dir, if verbose is set (xml export)
  22.252 +		// and I am a parentRow 
  22.253 +		// and this flag is really used somewhere
  22.254 +		if (writeflags)
  22.255 +			for (fo=flag.first();fo; fo=flag.next() )
  22.256 +				if (fo->isUsed()) fo->saveToDir (tmpdir,prefix);
  22.257 +	return s;		
  22.258 +
  22.259 +}
  22.260 +
  22.261 +void FlagRowObj::setName (const QString &n)
  22.262 +{
  22.263 +	name=n;
  22.264 +}
  22.265 +
  22.266 +void FlagRowObj::makeToolbar (QMainWindow *w, const QString &n)
  22.267 +{
  22.268 +	if (!parentRow)
  22.269 +	{
  22.270 +		// create bar and buttons
  22.271 +		QToolBar* tb = new QToolBar( w);
  22.272 +		tb->setLabel (n);
  22.273 +		QAction *a;
  22.274 +		FlagObj *fo;
  22.275 +		for (fo=flag.first();fo; fo=flag.next() )
  22.276 +		{
  22.277 +			a=new QAction (
  22.278 +				fo->getToolTip(),
  22.279 +				fo->getPixmap(),
  22.280 +				fo->getName(),
  22.281 +				0,
  22.282 +				w,
  22.283 +				fo->getName()
  22.284 +			);
  22.285 +			a->setToggleAction(true);
  22.286 +			// FIXME should not be enabled by default, later in updateToolbar
  22.287 +			a->setEnabled(true);
  22.288 +			a->addTo (tb);
  22.289 +			fo->setButton (a);
  22.290 +			connect(a, SIGNAL( activated() ), 
  22.291 +					w, SLOT( standardFlagChanged() ) );
  22.292 +		}
  22.293 +	} else
  22.294 +		qWarning ("FlagRowObj::makeToolbar mustn't be called for ordinary rows");
  22.295 +}
  22.296 +
  22.297 +void  FlagRowObj::updateToolBar()
  22.298 +{
  22.299 +	FlagObj *fo;
  22.300 +	if (parentRow)
  22.301 +	{
  22.302 +		// We are just a branch, not the toolbar default
  22.303 +		parentRow->deactivateAll();
  22.304 +		// In parentRow activate all existing (==active) flags
  22.305 +		for (fo=flag.first();fo; fo=flag.next() ) 
  22.306 +			parentRow->activate(fo->getName());
  22.307 +		parentRow->updateToolBar();	
  22.308 +	} else
  22.309 +	{
  22.310 +		// We are the toolbar default
  22.311 +		for (fo=flag.first();fo; fo=flag.next() ) 
  22.312 +			fo->updateButton();
  22.313 +	}
  22.314 +}
  22.315 +
  22.316 +FlagObj* FlagRowObj::findFlag (const QString &name)
  22.317 +{
  22.318 +	FlagObj *fo;
  22.319 +	for (fo=flag.first();fo; fo=flag.next() )
  22.320 +	{
  22.321 +		if (fo->getName()==name) return fo;
  22.322 +	}
  22.323 +	return NULL;
  22.324 +}
  22.325 +
    23.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    23.2 +++ b/flagrowobj.h	Sun Jan 30 12:59:10 2005 +0000
    23.3 @@ -0,0 +1,41 @@
    23.4 +#ifndef FLAGROWOBJ_H
    23.5 +#define FLAGROWOBJ_H
    23.6 +
    23.7 +#include <qmainwindow.h>
    23.8 +
    23.9 +#include "mapobj.h"
   23.10 +#include "flagobj.h"
   23.11 +
   23.12 +class FlagRowObj:public QObject,public MapObj {
   23.13 +public:
   23.14 +    FlagRowObj ();
   23.15 +    FlagRowObj (QCanvas*);
   23.16 +    ~FlagRowObj ();
   23.17 +    virtual void init ();
   23.18 +    virtual void copy (FlagRowObj*);
   23.19 +    virtual void clone(FlagRowObj*);
   23.20 +    virtual void move   (double,double);
   23.21 +    virtual void moveBy (double,double);
   23.22 +    virtual void setVisibility(bool);
   23.23 +    virtual FlagObj* addFlag (FlagObj *fo);			// make deep copy of FlagObj
   23.24 +    virtual void positionBBox();
   23.25 +    virtual void calcBBoxSize();
   23.26 +	virtual QString getFlagName (const QPoint &p);	// Find flag by position
   23.27 +	bool isActive(const QString&);
   23.28 +	void toggle (const QString&);
   23.29 +	void activate(const QString&);
   23.30 +	void deactivate(const QString&);
   23.31 +	void deactivateAll();
   23.32 +	void setEnabled (bool);
   23.33 +	void resetUsedCounter();
   23.34 +	QString saveToDir (const QString &,const QString &,bool);
   23.35 +	void setName (const QString&);			// prefix for exporting flags to dir
   23.36 +	void makeToolbar (QMainWindow*, const QString &);	// Create Toolbar buttons
   23.37 +	void updateToolBar();					// Update Toolbar buttons	
   23.38 +private:	
   23.39 +	FlagRowObj* parentRow;					// look for flags in this row
   23.40 +	FlagObj* findFlag (const QString&);
   23.41 +    QPtrList <FlagObj> flag; 
   23.42 +	QString name;
   23.43 +};
   23.44 +#endif
    24.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    24.2 +++ b/floatimageobj.cpp	Sun Jan 30 12:59:10 2005 +0000
    24.3 @@ -0,0 +1,219 @@
    24.4 +#include "floatimageobj.h"
    24.5 +#include "branchobj.h"
    24.6 +#include <math.h>
    24.7 +
    24.8 +
    24.9 +/////////////////////////////////////////////////////////////////
   24.10 +// FloatImageObj
   24.11 +/////////////////////////////////////////////////////////////////
   24.12 +
   24.13 +int FloatImageObj::counter=0;		// make instance 
   24.14 +
   24.15 +
   24.16 +FloatImageObj::FloatImageObj ():FloatObj()
   24.17 +{
   24.18 +//    cout << "Const FloatImageObj ()\n";
   24.19 +    setParObj (this);	
   24.20 +    init();
   24.21 +    depth=-1;
   24.22 +}
   24.23 +
   24.24 +FloatImageObj::FloatImageObj (QCanvas* c):FloatObj(c)
   24.25 +{
   24.26 + //   cout << "Const FloatImageObj (c)  called from MapCenterObj (c)\n";
   24.27 +    setParObj (this);	
   24.28 +    init();
   24.29 +    depth=-1;
   24.30 +}
   24.31 +
   24.32 +FloatImageObj::FloatImageObj (QCanvas* c, LinkableMapObj* p):FloatObj(c,p)
   24.33 +{
   24.34 + //   cout << "Const FloatImageObj (c,p)\n";
   24.35 +    init();
   24.36 +}
   24.37 +
   24.38 +FloatImageObj::~FloatImageObj ()
   24.39 +{
   24.40 +//	cout << "Destr FloatImageObj "<<this<<"\n";
   24.41 +	delete(icon);
   24.42 +}
   24.43 +
   24.44 +void FloatImageObj::init () 
   24.45 +{
   24.46 +	icon=new ImageObj (canvas);
   24.47 +	icon->move (absPos.x(), absPos.y() );
   24.48 +	icon->setVisibility (true);
   24.49 +	bbox.setSize (QSize(icon->size().width(), icon->size().height()));
   24.50 +	filename="";
   24.51 +	originalFilename="no original name available";
   24.52 +	filetype="";
   24.53 +	saveInMap=true;
   24.54 +}
   24.55 +
   24.56 +void FloatImageObj::copy (FloatImageObj* other)
   24.57 +{					
   24.58 +	FloatObj::copy (other);
   24.59 +	icon->copy (other->icon);
   24.60 +	filename=other->filename;
   24.61 +	saveInMap=other->saveInMap;
   24.62 +    positionBBox();
   24.63 +}
   24.64 +
   24.65 +void FloatImageObj::setZ (const int &i)
   24.66 +{
   24.67 +	icon->setZ (i);
   24.68 +	zPlane=i;
   24.69 +}
   24.70 +
   24.71 +int FloatImageObj::z ()
   24.72 +{
   24.73 +	return lrint (icon->z());
   24.74 +}
   24.75 +
   24.76 +bool FloatImageObj::load (const QString &fn)
   24.77 +{	
   24.78 +	if( icon->load (fn))
   24.79 +	{
   24.80 +		bbox.setSize (QSize(icon->size().width()+8, icon->size().height()+8));
   24.81 +		positionBBox();
   24.82 +		filename=fn;
   24.83 +		filetype=QPixmap::imageFormat (fn);
   24.84 +		return true;
   24.85 +	} else
   24.86 +		return false;
   24.87 +	
   24.88 +}
   24.89 +
   24.90 +void FloatImageObj::save (const QString &fn, const char *format)
   24.91 +{	
   24.92 +	icon->save (fn,format);
   24.93 +}
   24.94 +
   24.95 +void FloatImageObj::setOriginalFilename(const QString & fn)
   24.96 +{
   24.97 +	originalFilename=fn;
   24.98 +}
   24.99 +
  24.100 +QString FloatImageObj::getOriginalFilename()
  24.101 +{
  24.102 +	return originalFilename;
  24.103 +}
  24.104 +
  24.105 +void FloatImageObj::setVisibility(bool v)
  24.106 +{
  24.107 +    LinkableMapObj::setVisibility(v);
  24.108 +	if (v)
  24.109 +	    icon->setVisibility(true);
  24.110 +	else
  24.111 +	    icon->setVisibility(false);
  24.112 +}
  24.113 +
  24.114 +void FloatImageObj::move (double x, double y)
  24.115 +{
  24.116 +	FloatObj::move(x,y);
  24.117 +	icon->move (x+4,y+4);
  24.118 +    positionBBox();
  24.119 +}
  24.120 +
  24.121 +void FloatImageObj::move (QPoint p)
  24.122 +{
  24.123 +	move (p.x(), p.y());
  24.124 +}
  24.125 +
  24.126 +void FloatImageObj::positionBBox()
  24.127 +{
  24.128 +	// TODO
  24.129 +}
  24.130 +
  24.131 +void FloatImageObj::calcBBoxSize()
  24.132 +{
  24.133 +	// TODO
  24.134 +}
  24.135 +
  24.136 +QString FloatImageObj::saveToDir (const QString &tmpdir,const QString &prefix)
  24.137 +{
  24.138 +	counter++;
  24.139 +
  24.140 +	QString posAttr=
  24.141 +		attribut("relPosX",QString().setNum(relPos.x(),10)) +
  24.142 +		attribut("relPosY",QString().setNum(relPos.y(),10)); 
  24.143 +
  24.144 +	QString useOrientAttr;
  24.145 +	if (useOrientation)
  24.146 +		useOrientAttr=attribut ("useOrientation","true");
  24.147 +	else	
  24.148 +		useOrientAttr=attribut ("useOrientation","false");
  24.149 +		
  24.150 +	QString saveInMapAttr;
  24.151 +	if (saveInMap)
  24.152 +		saveInMapAttr=attribut ("saveInMap","true");
  24.153 +	else	
  24.154 +		
  24.155 +		saveInMapAttr=attribut ("saveInMap","false");
  24.156 +
  24.157 +	QString exportAttr;
  24.158 +	if (floatExport)
  24.159 +		exportAttr=attribut ("floatExport","true");
  24.160 +	else	
  24.161 +		exportAttr=attribut ("floatExport","false");
  24.162 +
  24.163 +	QString zAttr=attribut ("zPlane",QString().setNum(zPlane));
  24.164 +	QString url;
  24.165 +
  24.166 +	// prevent saving as GIF
  24.167 +	if (filetype=="GIF")
  24.168 +		filetype="PNG";
  24.169 +		
  24.170 +	url="images/"+prefix+"image-" + QString().number(counter,10) + "." +filetype;
  24.171 +
  24.172 +	// And really save the image
  24.173 +	icon->save (tmpdir + "/" + url, filetype);
  24.174 +
  24.175 +    return singleElement ("floatimage",  
  24.176 +		posAttr + 
  24.177 +		useOrientAttr + 
  24.178 +		saveInMapAttr + 
  24.179 +		exportAttr + 
  24.180 +		zAttr + 
  24.181 +		attribut ("href",QString ("file:")+url)
  24.182 +	);	
  24.183 +}
  24.184 +
  24.185 +void FloatImageObj::resetSaveCounter()
  24.186 +{
  24.187 +	counter=0;
  24.188 +}
  24.189 +
  24.190 +
  24.191 +QRect FloatImageObj::getTotalBBox()
  24.192 +{
  24.193 +	return bbox;
  24.194 +}
  24.195 +
  24.196 +QRect FloatImageObj::getBBoxSizeWithChilds()
  24.197 +{
  24.198 +	//FIXME  abstract in linkablemapobj.h, not calculated
  24.199 +	return bboxTotal;
  24.200 +}
  24.201 +
  24.202 +void FloatImageObj::calcBBoxSizeWithChilds()
  24.203 +{
  24.204 +	//FIXME  abstract in linkablemapobj.h
  24.205 +}
  24.206 +
  24.207 +QString FloatImageObj::getSelectString()
  24.208 +{
  24.209 +	QString s;
  24.210 +	if (parObj)
  24.211 +	{
  24.212 +		if (parObj->getDepth()==0)
  24.213 +			s= "fi:" + QString("%1").arg( ((BranchObj*)(parObj))->getFloatImageNum(this));
  24.214 +		else	
  24.215 +			s= ((BranchObj*)(parObj))->getSelectString() + ",fi:" + QString("%1").arg( ((BranchObj*)(parObj))->getFloatImageNum(this));
  24.216 +	} else
  24.217 +		s="mc:";
  24.218 +	
  24.219 +	return s;
  24.220 +
  24.221 +}
  24.222 +
    25.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    25.2 +++ b/floatimageobj.h	Sun Jan 30 12:59:10 2005 +0000
    25.3 @@ -0,0 +1,44 @@
    25.4 +#ifndef FLOATIMAGEOBJ_H
    25.5 +#define FLOATIMAGEOBJ_H
    25.6 +
    25.7 +#include "floatobj.h"
    25.8 +
    25.9 +/////////////////////////////////////////////////////////////////////////////
   25.10 +class FloatImageObj:public FloatObj {
   25.11 +public:
   25.12 +    FloatImageObj ();
   25.13 +    FloatImageObj (QCanvas*);
   25.14 +    FloatImageObj (QCanvas*, LinkableMapObj* parent);
   25.15 +    ~FloatImageObj ();
   25.16 +    virtual void init ();
   25.17 +    virtual void copy (FloatImageObj*);
   25.18 +	virtual void setZ (const int&);
   25.19 +	virtual int z();
   25.20 +
   25.21 +	virtual bool load (const QString &);
   25.22 +	virtual void save (const QString &, const char *);
   25.23 +	virtual void setOriginalFilename(const QString &);
   25.24 +	virtual QString getOriginalFilename();
   25.25 +    virtual void setVisibility(bool);	    // set vis. for w
   25.26 +    virtual void move (double x,double y);
   25.27 +    virtual void move (QPoint);
   25.28 +	virtual void positionBBox();
   25.29 +	virtual void calcBBoxSize();
   25.30 +	virtual QRect getTotalBBox();			// return BBox including childs			
   25.31 +	virtual QRect getBBoxSizeWithChilds();	// return size of BBox including childs  
   25.32 +	virtual void calcBBoxSizeWithChilds();	// calc size of  BBox including childs recursivly
   25.33 +	virtual QString saveToDir(const QString &,const QString&);
   25.34 +	virtual void resetSaveCounter();
   25.35 +	virtual QString getSelectString();
   25.36 +
   25.37 +
   25.38 +protected:
   25.39 +	ImageObj *icon;
   25.40 +	bool saveInMap;
   25.41 +	static int counter;			// numerate the files during saveToDir
   25.42 +	QString filetype;
   25.43 +	QString filename;
   25.44 +	QString originalFilename;
   25.45 +};
   25.46 +
   25.47 +#endif
    26.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    26.2 +++ b/floatobj.cpp	Sun Jan 30 12:59:10 2005 +0000
    26.3 @@ -0,0 +1,163 @@
    26.4 +#include "floatobj.h"
    26.5 +
    26.6 +extern QAction* actionEditToggleFloatExport;
    26.7 +
    26.8 +/////////////////////////////////////////////////////////////////
    26.9 +// FloatObj
   26.10 +/////////////////////////////////////////////////////////////////
   26.11 +
   26.12 +FloatObj::FloatObj ():LinkableMapObj() 
   26.13 +{
   26.14 +//    cout << "Const FloatObj ()\n";
   26.15 +    setParObj (this);	
   26.16 +    init();
   26.17 +    depth=-1;
   26.18 +}
   26.19 +
   26.20 +FloatObj::FloatObj (QCanvas* c):LinkableMapObj(c)
   26.21 +{
   26.22 +//	cout << "Const FloatObj (c)  called from MapCenterObj (c)\n";
   26.23 +    setParObj (this);	
   26.24 +    init();
   26.25 +    depth=-1;
   26.26 +}
   26.27 +
   26.28 +FloatObj::FloatObj (QCanvas* c, LinkableMapObj* p):LinkableMapObj (c)
   26.29 +{
   26.30 +//    cout << "Const FloatObj (c,p)\n";
   26.31 +    setParObj (p);	
   26.32 +    depth=p->getDepth()+1;
   26.33 +    init();
   26.34 +}
   26.35 +
   26.36 +FloatObj::~FloatObj ()
   26.37 +{
   26.38 +//   cout << "Destr FloatObj\n";
   26.39 +}
   26.40 +
   26.41 +void FloatObj::init () 
   26.42 +{
   26.43 +    setChildObj(this);
   26.44 +	relPos=getRandPos();
   26.45 +	useOrientation=true;
   26.46 +	floatExport=true;
   26.47 +	zPlane=Z_ICON;
   26.48 +}
   26.49 +
   26.50 +void FloatObj::copy (FloatObj* other)
   26.51 +{
   26.52 +	LinkableMapObj::copy (other);
   26.53 +	relPos=other->relPos;
   26.54 +	useOrientation=other->useOrientation;
   26.55 +	setVisibility (other->visible);
   26.56 +}
   26.57 +
   26.58 +void FloatObj::setRelPos()
   26.59 +{
   26.60 +	if (useOrientation)
   26.61 +	{
   26.62 +		if (parObj->getOrientation()==OrientLeftOfCenter)
   26.63 +			relPos.setX ( parObj->x() +parObj->width() - bbox.width() -absPos.x());
   26.64 +		else	
   26.65 +			relPos.setX (absPos.x() - parObj->x() );
   26.66 +	}
   26.67 +	else
   26.68 +		relPos.setX (absPos.x() - parObj->x() );
   26.69 +	relPos.setY (absPos.y() - parObj->y() );
   26.70 +}
   26.71 +
   26.72 +void FloatObj::setRelPos(const QPoint &p)
   26.73 +{
   26.74 +	relPos=p;
   26.75 +}
   26.76 +
   26.77 +void FloatObj::setZ(const int &i)
   26.78 +{
   26.79 +	zPlane=i;
   26.80 +}
   26.81 +
   26.82 +int FloatObj::z()
   26.83 +{
   26.84 +	return zPlane;
   26.85 +}
   26.86 +
   26.87 +
   26.88 +void FloatObj::setUseOrientation (const bool &b)
   26.89 +{	
   26.90 +	if (useOrientation!=b)
   26.91 +	{
   26.92 +		useOrientation=b;
   26.93 +		requestReposition();
   26.94 +	}	
   26.95 +}
   26.96 +
   26.97 +void FloatObj::setFloatExport(const bool& b)
   26.98 +{
   26.99 +	floatExport=b;
  26.100 +}
  26.101 +
  26.102 +bool FloatObj::getFloatExport()
  26.103 +{
  26.104 +	return floatExport;
  26.105 +}
  26.106 +
  26.107 +void FloatObj::move (double x, double y)
  26.108 +{
  26.109 +	MapObj::move(x,y);
  26.110 +	selbox->move(x,y);
  26.111 +}
  26.112 +
  26.113 +void FloatObj::move (QPoint p)
  26.114 +{
  26.115 +	move (p.x(), p.y());
  26.116 +}
  26.117 +
  26.118 +void FloatObj::reposition()
  26.119 +{
  26.120 +	if (useOrientation)
  26.121 +	{
  26.122 +		if (parObj->getOrientation()==OrientLeftOfCenter)
  26.123 +			move (parObj->x() - relPos.x() + parObj->width() - bbox.width(), parObj->y()+relPos.y());
  26.124 +		else	
  26.125 +			move (parObj->x()+relPos.x(), parObj->y()+relPos.y());
  26.126 +	}		
  26.127 +	else
  26.128 +		move (parObj->x()+relPos.x(), parObj->y()+relPos.y());
  26.129 +	updateLink();	
  26.130 +}
  26.131 +
  26.132 +QRect FloatObj::getTotalBBox()
  26.133 +{
  26.134 +	return bbox;
  26.135 +}
  26.136 +
  26.137 +QRect FloatObj::getBBoxSizeWithChilds()
  26.138 +{
  26.139 +	return bboxTotal;
  26.140 +}
  26.141 +
  26.142 +void FloatObj::select()
  26.143 +{
  26.144 +    LinkableMapObj::select();
  26.145 +	// Temporary draw the link while FO is selected
  26.146 +	if (style==StyleUndef) 
  26.147 +	{
  26.148 +		setLinkStyle(getDefLinkStyle());
  26.149 +		setLinkColor(parObj->getLinkColor());
  26.150 +	}	
  26.151 +
  26.152 +	// Update FloatExport switch in context menu
  26.153 +	if (floatExport)
  26.154 +		actionEditToggleFloatExport->setEnabled (true);
  26.155 +	else	
  26.156 +		actionEditToggleFloatExport->setEnabled (true);
  26.157 +
  26.158 +
  26.159 +}
  26.160 +
  26.161 +void FloatObj::unselect()
  26.162 +{
  26.163 +	LinkableMapObj::unselect();
  26.164 +	setLinkStyle (StyleUndef);
  26.165 +}
  26.166 +
    27.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    27.2 +++ b/floatobj.h	Sun Jan 30 12:59:10 2005 +0000
    27.3 @@ -0,0 +1,45 @@
    27.4 +#ifndef FLOATOBJ_H
    27.5 +#define FLOATOBJ_H
    27.6 +
    27.7 +#include "linkablemapobj.h"
    27.8 +
    27.9 +/////////////////////////////////////////////////////////////////////////////
   27.10 +class FloatObj:public LinkableMapObj {
   27.11 +public:
   27.12 +    FloatObj ();
   27.13 +    FloatObj (QCanvas*);
   27.14 +    FloatObj (QCanvas*, LinkableMapObj* parent);
   27.15 +    ~FloatObj ();
   27.16 +    virtual void init ();
   27.17 +    virtual void copy (FloatObj*);
   27.18 +	virtual bool load (const QString&)=0;
   27.19 +	virtual void setRelPos();				// set relPos to current parentPos
   27.20 +	virtual void setRelPos(const QPoint&);	
   27.21 +	virtual void setZ(const int&);		// set zPlane
   27.22 +	virtual int z();
   27.23 +	virtual void setUseOrientation (const bool &);
   27.24 +	virtual void setFloatExport (const bool &);
   27.25 +	virtual bool getFloatExport ();
   27.26 +
   27.27 +	virtual void move (double,double);
   27.28 +	virtual void move (QPoint);
   27.29 +
   27.30 +	virtual void reposition();
   27.31 +											
   27.32 +	virtual QRect getTotalBBox();			// return BBox including childs			
   27.33 +	virtual QRect getBBoxSizeWithChilds();	// return size of BBox including childs  
   27.34 +
   27.35 +	virtual QString saveToDir(const QString &,const QString&)=0;
   27.36 +	virtual void resetSaveCounter()=0;
   27.37 +
   27.38 +	virtual void select();
   27.39 +	virtual void unselect();
   27.40 +
   27.41 +protected:
   27.42 +	QPoint relPos;
   27.43 +	bool useOrientation;		
   27.44 +	bool floatExport;
   27.45 +	int zPlane;
   27.46 +};
   27.47 +
   27.48 +#endif
    28.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    28.2 +++ b/frameobj.cpp	Sun Jan 30 12:59:10 2005 +0000
    28.3 @@ -0,0 +1,146 @@
    28.4 +#include "frameobj.h"
    28.5 +
    28.6 +#include <qcolor.h>
    28.7 +
    28.8 +/////////////////////////////////////////////////////////////////
    28.9 +// FrameObj
   28.10 +/////////////////////////////////////////////////////////////////
   28.11 +FrameObj::FrameObj() : MapObj()
   28.12 +{
   28.13 +//    cout << "Const FrameObj ()\n";
   28.14 +    init ();
   28.15 +}
   28.16 +
   28.17 +FrameObj::FrameObj(QCanvas* c) :MapObj(c)
   28.18 +{
   28.19 +//    cout << "Const FrameObj\n";
   28.20 +    init ();
   28.21 +}
   28.22 +
   28.23 +FrameObj::~FrameObj()
   28.24 +{
   28.25 +	clear();
   28.26 +}
   28.27 +
   28.28 +void FrameObj::init()
   28.29 +{
   28.30 +    type=NoFrame;
   28.31 +    border=0;
   28.32 +}
   28.33 +
   28.34 +void FrameObj::clear()
   28.35 +{
   28.36 +    switch (type)
   28.37 +    {
   28.38 +		case NoFrame:
   28.39 +			break;
   28.40 +		case Rectangle:
   28.41 +			delete rectFrame;
   28.42 +			break;
   28.43 +    }
   28.44 +	type=NoFrame;
   28.45 +	border=0;
   28.46 +}
   28.47 +
   28.48 +void FrameObj::move(double x, double y)
   28.49 +{
   28.50 +    switch (type)
   28.51 +    {
   28.52 +		case NoFrame:
   28.53 +			break;
   28.54 +		case Rectangle:
   28.55 +			rectFrame->move (x,y);
   28.56 +			break;
   28.57 +    }
   28.58 +}
   28.59 +
   28.60 +void FrameObj::moveBy(double x, double y)
   28.61 +{
   28.62 +	MapObj::moveBy (x,y);
   28.63 +}
   28.64 +
   28.65 +void FrameObj::positionBBox()
   28.66 +{
   28.67 +}
   28.68 +
   28.69 +void FrameObj::calcBBoxSize()
   28.70 +{
   28.71 +}
   28.72 +
   28.73 +void FrameObj::setRect(const QRect &r)
   28.74 +{
   28.75 +	bbox=r;
   28.76 +    switch (type)
   28.77 +    {
   28.78 +		case NoFrame:
   28.79 +			break;
   28.80 +		case Rectangle:
   28.81 +			rectFrame->setX (bbox.x() );
   28.82 +			rectFrame->setY (bbox.y() );
   28.83 +			rectFrame->setSize (bbox.width(),bbox.height() );
   28.84 +			break;
   28.85 +    }
   28.86 +}
   28.87 +
   28.88 +int FrameObj::getBorder()
   28.89 +{
   28.90 +	return border;
   28.91 +}
   28.92 +
   28.93 +FrameType FrameObj::getFrameType()
   28.94 +{
   28.95 +	return type;
   28.96 +}
   28.97 +
   28.98 +QString FrameObj::getFrameTypeName()
   28.99 +{
  28.100 +    switch (type)
  28.101 +    {
  28.102 +		case Rectangle:
  28.103 +			return "Rectangle";
  28.104 +			break;
  28.105 +		default:
  28.106 +			return "NoFrame";
  28.107 +    }
  28.108 +}
  28.109 +
  28.110 +void FrameObj::setFrameType(const FrameType &t)
  28.111 +{
  28.112 +	if (t!=type)
  28.113 +	{
  28.114 +		clear();
  28.115 +		type=t;
  28.116 +		switch (type)
  28.117 +		{
  28.118 +			case NoFrame:
  28.119 +				border=0;
  28.120 +				break;
  28.121 +			case Rectangle:
  28.122 +				border=10;
  28.123 +				rectFrame = new QCanvasRectangle (canvas);
  28.124 +				rectFrame->setZ(Z_FRAME);
  28.125 +				rectFrame->setBrush( QColor("white") );
  28.126 +				rectFrame->setPen( QPen(QColor("black") ));
  28.127 +				if (visible)
  28.128 +					rectFrame->show();
  28.129 +				else    
  28.130 +					rectFrame->hide();
  28.131 +				break;
  28.132 +		}
  28.133 +	}
  28.134 +}
  28.135 +
  28.136 +void FrameObj::setFrameType(const QString &t)
  28.137 +{
  28.138 +	if (t=="Rectangle")
  28.139 +		FrameObj::setFrameType (Rectangle);
  28.140 +	else	
  28.141 +		FrameObj::setFrameType (NoFrame);
  28.142 +}
  28.143 +
  28.144 +void FrameObj::setVisibility (bool v)
  28.145 +{
  28.146 +    MapObj::setVisibility(v);
  28.147 +    setFrameType (type);    // changes on visibility depend on type...
  28.148 +}
  28.149 +
    29.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    29.2 +++ b/frameobj.h	Sun Jan 30 12:59:10 2005 +0000
    29.3 @@ -0,0 +1,33 @@
    29.4 +#ifndef FRAMEOBJ_H
    29.5 +#define FRAMEOBJ_H
    29.6 +
    29.7 +#include "mapobj.h"
    29.8 +
    29.9 +enum FrameType {NoFrame,Rectangle};
   29.10 +
   29.11 +class FrameObj:public MapObj {
   29.12 +public:
   29.13 +    FrameObj();
   29.14 +    FrameObj(QCanvas*);
   29.15 +    ~FrameObj();
   29.16 +    void init();
   29.17 +    void clear();
   29.18 +    void move (double x,double y);    // move to absolute Position
   29.19 +    void moveBy (double x,double y);  // move to relative Position
   29.20 +	void positionBBox();			 
   29.21 +	void calcBBoxSize();			
   29.22 +	void setRect (const QRect &);	  // set dimensions			
   29.23 +    int getBorder();
   29.24 +    FrameType getFrameType ();
   29.25 +    QString getFrameTypeName ();
   29.26 +    void setFrameType (const FrameType &);
   29.27 +    void setFrameType (const QString &);
   29.28 +    void setVisibility(bool);
   29.29 +
   29.30 +protected:
   29.31 +    FrameType type;
   29.32 +    QCanvasRectangle* rectFrame;
   29.33 +    int border;									// distance text - frame
   29.34 +};
   29.35 +#endif
   29.36 +
    30.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    30.2 +++ b/headingobj.cpp	Sun Jan 30 12:59:10 2005 +0000
    30.3 @@ -0,0 +1,246 @@
    30.4 +#include "headingobj.h"
    30.5 +
    30.6 +/////////////////////////////////////////////////////////////////
    30.7 +// HeadingObj
    30.8 +/////////////////////////////////////////////////////////////////
    30.9 +HeadingObj::HeadingObj() : MapObj()
   30.10 +{
   30.11 +//    cout << "Const HeadingObj ()\n";
   30.12 +    init ();
   30.13 +}
   30.14 +
   30.15 +HeadingObj::HeadingObj(QCanvas* c) :MapObj(c)
   30.16 +{
   30.17 +//    cout << "Const HeadingObj\n";
   30.18 +    init ();
   30.19 +}
   30.20 +
   30.21 +HeadingObj::~HeadingObj()
   30.22 +{
   30.23 +    textline.clear();
   30.24 +}
   30.25 +
   30.26 +void HeadingObj::init()
   30.27 +{
   30.28 +    textline.setAutoDelete (TRUE);
   30.29 +    textwidth=40;
   30.30 +    color=QColor ("black");
   30.31 +    font=QFont();
   30.32 +}
   30.33 +
   30.34 +void HeadingObj::copy(HeadingObj *other)
   30.35 +{
   30.36 +    MapObj::copy (other);
   30.37 +    textwidth=other->textwidth;
   30.38 +    color=other->color;
   30.39 +    font=other->font;
   30.40 +    setText (other->text() );
   30.41 +}
   30.42 +
   30.43 +void HeadingObj::move(double x, double y)
   30.44 +{
   30.45 +    MapObj::move(x,y);
   30.46 +    int h;	// height of a textline
   30.47 +    int ho;	// offset of height while drawing all lines
   30.48 +    if (textline.first() )
   30.49 +		h=textline.first()->boundingRect().height();
   30.50 +    else
   30.51 +		h=2;
   30.52 +    QCanvasText *t;
   30.53 +    ho=0;
   30.54 +    for (t=textline.first(); t; t=textline.next() )
   30.55 +    {
   30.56 +		t->move(x,y+ho);
   30.57 +		ho=ho+h;
   30.58 +    }	
   30.59 +}
   30.60 +
   30.61 +
   30.62 +void HeadingObj::moveBy(double x, double y)
   30.63 +{
   30.64 +    move (x+absPos.x(),y+absPos.y() );
   30.65 +}
   30.66 +
   30.67 +void HeadingObj::positionBBox()
   30.68 +{
   30.69 +    bbox.setX (absPos.x());
   30.70 +    bbox.setY (absPos.y());
   30.71 +}
   30.72 +
   30.73 +void HeadingObj::calcBBoxSize()
   30.74 +{	
   30.75 +	int w=0;
   30.76 +	int h=0;
   30.77 +	// Using Backspace an empty heading might easily be created, then there
   30.78 +	// would be textline.first()==NULL This can be worked around by the following, but
   30.79 +	// then no selection would be visible, thus we prevent it in ::setText()
   30.80 +	if (!textline.isEmpty() )
   30.81 +	{
   30.82 +		QCanvasText *t;
   30.83 +		for (t=textline.first(); t; t=textline.next() )
   30.84 +		{
   30.85 +			h+=t->boundingRect().height();
   30.86 +			if (w<t->boundingRect().width() )
   30.87 +				w=t->boundingRect().width();
   30.88 +		}	
   30.89 +	} 
   30.90 +    bbox.setSize (QSize(w,h));
   30.91 +}
   30.92 +
   30.93 +QCanvasText* HeadingObj::newLine(QString s)
   30.94 +{
   30.95 +    QCanvasText *t;
   30.96 +    t = new QCanvasText(canvas);
   30.97 +    t->setFont (font);
   30.98 +    t->setColor (color);
   30.99 +    t->setZ(Z_TEXT);
  30.100 +    t->setText(s);
  30.101 +    t->show();
  30.102 +    return t;
  30.103 +}
  30.104 +
  30.105 +void HeadingObj::setText (QString s)
  30.106 +{
  30.107 +    heading=s;
  30.108 +
  30.109 +    // remove old textlines and prepare generating new ones
  30.110 +    textline.clear();
  30.111 +
  30.112 +	// prevent empty textline, so at least a small selection stays
  30.113 +	// visible for this heading
  30.114 +	if (s.length()==0) s="  ";
  30.115 +
  30.116 +    int i=0;	// index for actual search for ws
  30.117 +    int j=0;	// index of last ws
  30.118 +	int k=0;	// index of "<br>" or similar linebreak
  30.119 +	int br=0;	// width of found break, e.g. for <br> it is 4
  30.120 +
  30.121 +    // set the text and wrap lines
  30.122 +    while (s.length()>0)
  30.123 +    {
  30.124 +		// ok, some people wanted manual linebreaks, here we go
  30.125 +		k=s.find ("<br>",i,false);
  30.126 +		if (k>=0)
  30.127 +		{
  30.128 +			br=4;
  30.129 +			i=k;
  30.130 +		} else
  30.131 +			i=s.find (" ",i,false);
  30.132 +		if (i<0 && j==0)
  30.133 +		{   // no ws found at all in s
  30.134 +			// append whole s
  30.135 +			textline.append (newLine(s));
  30.136 +			s="";
  30.137 +		} else
  30.138 +		{
  30.139 +			if (i<0 && j>0)
  30.140 +			{	// no ws found in actual search
  30.141 +				if (s.length()<=textwidth)
  30.142 +				{
  30.143 +					textline.append (newLine(s));
  30.144 +					s="";
  30.145 +				} else
  30.146 +				{
  30.147 +					textline.append (newLine(s.left(j)));
  30.148 +					s=s.mid(j+1,s.length());
  30.149 +					j=0;
  30.150 +				}		    
  30.151 +			} else
  30.152 +			{
  30.153 +				if (i>= 0 && i<=static_cast <int> (textwidth))
  30.154 +				{   // there is a ws in textwidth
  30.155 +					if (br>0)
  30.156 +					{
  30.157 +						// here is a linebreak
  30.158 +						textline.append (newLine(s.left(i)));
  30.159 +						s=s.mid(i+br,s.length());
  30.160 +						i=0;
  30.161 +						j=0;
  30.162 +						br=0;
  30.163 +					} else
  30.164 +					{
  30.165 +						j=i;
  30.166 +						i++;
  30.167 +					}
  30.168 +				} else
  30.169 +				{
  30.170 +					if (i>static_cast <int> (textwidth)  )
  30.171 +					{	
  30.172 +						if (j>0)
  30.173 +						{   // a ws out of textwidth, but we have also one in
  30.174 +							textline.append (newLine(s.left(j)));
  30.175 +							s=s.mid(j+1,s.length());
  30.176 +							i=0;
  30.177 +							j=0;
  30.178 +						} else
  30.179 +						{   // a ws out of text, but none in
  30.180 +							textline.append (newLine(s.left(i)));
  30.181 +							s=s.mid(i+1,s.length());
  30.182 +							i=0;
  30.183 +						}
  30.184 +					}
  30.185 +				} 
  30.186 +			}	  
  30.187 +		}		    
  30.188 +    }
  30.189 +	setVisibility (visible);
  30.190 +	calcBBoxSize();
  30.191 +}
  30.192 +
  30.193 +QString HeadingObj::text ()
  30.194 +{
  30.195 +    return heading;
  30.196 +}
  30.197 +
  30.198 +void HeadingObj::setFont (QFont f)
  30.199 +{
  30.200 +    if (font!=f) 
  30.201 +    {
  30.202 +		font=f;
  30.203 +		setText (text());
  30.204 +    }
  30.205 +}
  30.206 +
  30.207 +QFont HeadingObj::getFont()
  30.208 +{
  30.209 +    return font;
  30.210 +}    
  30.211 +	
  30.212 +	
  30.213 +void HeadingObj::setColor (QColor c)
  30.214 +{
  30.215 +    if (color!=c)
  30.216 +    {
  30.217 +		color=c;
  30.218 +		QCanvasText *t;
  30.219 +		for (t=textline.first(); t; t=textline.next() )
  30.220 +			t->setColor(c);
  30.221 +    }	    
  30.222 +}
  30.223 +
  30.224 +QColor HeadingObj::getColor()
  30.225 +{
  30.226 +    return color;
  30.227 +}    
  30.228 +
  30.229 +void HeadingObj::setVisibility (bool v)
  30.230 +{
  30.231 +    MapObj::setVisibility(v);
  30.232 +    QCanvasText *t;
  30.233 +    for (t=textline.first(); t; t=textline.next() )
  30.234 +		if (v)
  30.235 +			t->show();
  30.236 +		else
  30.237 +			t->hide();
  30.238 +}
  30.239 +
  30.240 +int HeadingObj::getHeight ()
  30.241 +{
  30.242 +	return bbox.height();
  30.243 +}
  30.244 +
  30.245 +int HeadingObj::getWidth()
  30.246 +{
  30.247 +	return bbox.width();
  30.248 +}
  30.249 +
    31.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    31.2 +++ b/headingobj.h	Sun Jan 30 12:59:10 2005 +0000
    31.3 @@ -0,0 +1,37 @@
    31.4 +#ifndef HEADINGOBJ_H
    31.5 +#define HEADINGOBJ_H
    31.6 +
    31.7 +#include "mapobj.h"
    31.8 +
    31.9 +class HeadingObj:public MapObj {
   31.10 +public:
   31.11 +    HeadingObj();
   31.12 +    HeadingObj(QCanvas*);
   31.13 +    virtual ~HeadingObj();
   31.14 +    virtual void init();
   31.15 +    virtual void copy(HeadingObj*);
   31.16 +    virtual void move (double x,double y);      // move to absolute Position
   31.17 +    virtual void moveBy (double x,double y);    // move to relative Position
   31.18 +    virtual void positionBBox();
   31.19 +	virtual void calcBBoxSize();
   31.20 +private:
   31.21 +    QCanvasText* newLine(QString);				// generate new textline
   31.22 +public:    
   31.23 +    virtual void setText(QString);
   31.24 +    virtual QString text();
   31.25 +    virtual void setFont(QFont);
   31.26 +    virtual QFont getFont();
   31.27 +    virtual void setColor(QColor);
   31.28 +    virtual QColor getColor();
   31.29 +    virtual void setVisibility(bool);
   31.30 +	virtual int getHeight();
   31.31 +	virtual int getWidth();
   31.32 +
   31.33 +protected:
   31.34 +    QString heading;
   31.35 +    uint textwidth;								// width for formatting text
   31.36 +    QPtrList <QCanvasText> textline;			// a part of e.g. the parabel
   31.37 +    QColor color;
   31.38 +    QFont font;
   31.39 +};
   31.40 +#endif
    32.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    32.2 +++ b/icons/cursorcolorpicker.xpm	Sun Jan 30 12:59:10 2005 +0000
    32.3 @@ -0,0 +1,38 @@
    32.4 +/* XPM */
    32.5 +static const char * cursorcolorpicker_xpm[] = {
    32.6 +"32 32 3 1",
    32.7 +" 	c None",
    32.8 +".	c #000000",
    32.9 +"+	c #FFFFFF",
   32.10 +"                                ",
   32.11 +"                                ",
   32.12 +"                                ",
   32.13 +"                                ",
   32.14 +"                                ",
   32.15 +"                                ",
   32.16 +"                                ",
   32.17 +"                                ",
   32.18 +"                                ",
   32.19 +"                                ",
   32.20 +"                                ",
   32.21 +"                  ...           ",
   32.22 +"                 .....          ",
   32.23 +"                 .....          ",
   32.24 +"             .........          ",
   32.25 +"              .......           ",
   32.26 +"             .  ...             ",
   32.27 +"            .    ..             ",
   32.28 +"           .    . .             ",
   32.29 +"          .    .                ",
   32.30 +"         .    .                 ",
   32.31 +"        .    .                  ",
   32.32 +"       .    .                   ",
   32.33 +"      .    .                    ",
   32.34 +"      .   .                     ",
   32.35 +"      . ..                      ",
   32.36 +"       .                        ",
   32.37 +"                                ",
   32.38 +"                                ",
   32.39 +"                                ",
   32.40 +"                                ",
   32.41 +"                                "};
    33.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    33.2 +++ b/icons/cursorcolorpicker16.xpm	Sun Jan 30 12:59:10 2005 +0000
    33.3 @@ -0,0 +1,22 @@
    33.4 +/* XPM */
    33.5 +static const char * cursorcolorpicker_xpm[] = {
    33.6 +"16 16 3 1",
    33.7 +" 	c None",
    33.8 +".	c #000000",
    33.9 +"+	c #FFFFFF",
   33.10 +"            ... ",
   33.11 +"           .....",
   33.12 +"           .....",
   33.13 +"       .........",
   33.14 +"        ....... ",
   33.15 +"       .  ...   ",
   33.16 +"      .    ..   ",
   33.17 +"     .    . .   ",
   33.18 +"    .    .      ",
   33.19 +"   .    .       ",
   33.20 +"  .    .        ",
   33.21 +" .    .         ",
   33.22 +".    .          ",
   33.23 +".   .           ",
   33.24 +". ..            ",
   33.25 +" .              "};
    34.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    34.2 +++ b/icons/cursorhandopen.xpm	Sun Jan 30 12:59:10 2005 +0000
    34.3 @@ -0,0 +1,24 @@
    34.4 +static unsigned char chandopen[] = {		// cursor bitmap
    34.5 +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    34.6 +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    34.7 +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x40,0x02,0x00,0x00,
    34.8 +    0x70,0x0e,0x00,0x00,0x48,0x12,0x00,0x00,0x48,0x12,0x00,0x00,0x48,0x32,0x00,
    34.9 +    0x00,0x48,0x52,0x00,0xc0,0x48,0x52,0x00,0x20,0x49,0x50,0x00,0x20,0x06,0x50,
   34.10 +    0x00,0x40,0x00,0x40,0x00,0x80,0x00,0x40,0x00,0x00,0x01,0x40,0x00,0x00,0x02,
   34.11 +    0x20,0x00,0x00,0x04,0x10,0x00,0x00,0x08,0x10,0x00,0x00,0x08,0x08,0x00,0x00,
   34.12 +    0x08,0x08,0x00,0x00,0x10,0x08,0x00,0x00,0x10,0x08,0x00,0x00,0x00,0x00,0x00,
   34.13 +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
   34.14 +
   34.15 +static unsigned char chandopenmask[] = {	// cursor bitmap mask
   34.16 +   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   34.17 +   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   34.18 +   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   34.19 +   0x00, 0x80, 0x01, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xf0, 0x0f, 0x00,
   34.20 +   0x00, 0xf8, 0x1f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0xf8, 0x3f, 0x00,
   34.21 +   0x00, 0xf8, 0x7f, 0x00, 0xc0, 0xf8, 0x7f, 0x00, 0xe0, 0xf9, 0x7f, 0x00,
   34.22 +   0xe0, 0xff, 0x7f, 0x00, 0xc0, 0xff, 0x7f, 0x00, 0x80, 0xff, 0x7f, 0x00,
   34.23 +   0x00, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0xfc, 0x1f, 0x00,
   34.24 +   0x00, 0xf8, 0x1f, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xf8, 0x0f, 0x00,
   34.25 +   0x00, 0xf0, 0x0f, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
   34.26 +   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
   34.27 +
    35.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    35.2 +++ b/icons/cursorhandopen16.xpm	Sun Jan 30 12:59:10 2005 +0000
    35.3 @@ -0,0 +1,10 @@
    35.4 +static unsigned char chandopen[] = {		// cursor bitmap
    35.5 + 0x00,0x06,0x00,0x09,0xc0,0x39,0x20,0x29,0x20,0x69,0x20,0xa9,0x20,0xa9,0x22,
    35.6 + 0xa9,0x25,0xa1,0x19,0xa0,0x01,0x80,0x02,0x80,0x04,0x80,0x08,0x80,0x10,0x40,
    35.7 + 0x20,0x40};
    35.8 +
    35.9 +static unsigned char chandopenmask[] = {	// cursor bitmap mask
   35.10 + 0x00,0x06,0x00,0x0f,0xc0,0x3f,0xe0,0x3f,0xe0,0x7f,0xe0,0xff,0xe0,0xff,0xe2,
   35.11 + 0xff,0xe7,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xfc,0xff,0xf8,0xff,0xf0,0x7f,
   35.12 + 0xe0,0x7f};
   35.13 +
    36.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    36.2 +++ b/icons/editcopy.xpm	Sun Jan 30 12:59:10 2005 +0000
    36.3 @@ -0,0 +1,36 @@
    36.4 +/* XPM */
    36.5 +static const char *editcopy_xpm[] = {
    36.6 +/* columns rows colors chars-per-pixel */
    36.7 +"22 22 8 1",
    36.8 +"  c Gray100",
    36.9 +". c #8b8bfd",
   36.10 +"X c #3c3cfd",
   36.11 +"o c #000082",
   36.12 +"O c Gray0",
   36.13 +"+ c None",
   36.14 +"@ c Gray0",
   36.15 +"# c Gray0",
   36.16 +/* pixels */
   36.17 +"++++++++++++++++++++++",
   36.18 +"++++++++++++++++++++++",
   36.19 +"OOOOOOOO++++++++++++++",
   36.20 +"O      OO+++++++++++++",
   36.21 +"O OOOO O O++++++++++++",
   36.22 +"O      O  O+++++++++++",
   36.23 +"O OOOO Ooooooooo++++++",
   36.24 +"O      Oo      oo+++++",
   36.25 +"O OOOOO o OOOO oXo++++",
   36.26 +"O       o      o.Xo+++",
   36.27 +"O OOOOO o OOOO o .Xo++",
   36.28 +"O       o      oooooo+",
   36.29 +"O OOOOO o OOOO      o+",
   36.30 +"O       o           o+",
   36.31 +"O OOOOO o OOOOOOOOO o+",
   36.32 +"O       o           o+",
   36.33 +"OOOOOOOOo OOOOOOOOO o+",
   36.34 +"++++++++o           o+",
   36.35 +"++++++++o OOOOOOOOO o+",
   36.36 +"++++++++o           o+",
   36.37 +"++++++++ooooooooooooo+",
   36.38 +"++++++++++++++++++++++"
   36.39 +};
    37.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    37.2 +++ b/icons/editcut.xpm	Sun Jan 30 12:59:10 2005 +0000
    37.3 @@ -0,0 +1,32 @@
    37.4 +/* XPM */
    37.5 +static const char *editcut_xpm[] = {
    37.6 +/* columns rows colors chars-per-pixel */
    37.7 +"22 22 4 1",
    37.8 +"  c Gray100",
    37.9 +". c #000082",
   37.10 +"X c Gray0",
   37.11 +"o c None",
   37.12 +/* pixels */
   37.13 +"oooooooooooooooooooooo",
   37.14 +"oooooooXoooooXoooooooo",
   37.15 +"oooooooXoooooXoooooooo",
   37.16 +"oooooooXoooooXoooooooo",
   37.17 +"oooooooXooooXXoooooooo",
   37.18 +"oooooooXXoooXooooooooo",
   37.19 +"ooooooooXoooXooooooooo",
   37.20 +"ooooooooXXoXXooooooooo",
   37.21 +"oooooooooXXXoooooooooo",
   37.22 +"oooooooooXXXoooooooooo",
   37.23 +"ooooooooooXooooooooooo",
   37.24 +"ooooooooo.X.oooooooooo",
   37.25 +"oooooooo..o...oooooooo",
   37.26 +"ooooooo.o.o.oo.ooooooo",
   37.27 +"oooooo.oo.o.ooo.oooooo",
   37.28 +"ooooo.ooo.o.oooo.ooooo",
   37.29 +"oooo.oooo.o.oooo.ooooo",
   37.30 +"oooo.oooo.oo.ooo.ooooo",
   37.31 +"oooo.oooo.oo.oo.oooooo",
   37.32 +"oooo.ooo.oooo..ooooooo",
   37.33 +"ooooo...oooooooooooooo",
   37.34 +"oooooooooooooooooooooo"
   37.35 +};
    38.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    38.2 +++ b/icons/editmovedown.xpm	Sun Jan 30 12:59:10 2005 +0000
    38.3 @@ -0,0 +1,27 @@
    38.4 +/* XPM */
    38.5 +static const  char * editmovedown_xpm[] = {
    38.6 +"22 22 2 1",
    38.7 +" 	c None",
    38.8 +".	c #000000",
    38.9 +"                      ",
   38.10 +"                      ",
   38.11 +"                      ",
   38.12 +"                      ",
   38.13 +"         ..           ",
   38.14 +"         ..           ",
   38.15 +"         ..           ",
   38.16 +"         ..           ",
   38.17 +"         ..           ",
   38.18 +"         ..           ",
   38.19 +"         ..           ",
   38.20 +"         ..           ",
   38.21 +"         ..           ",
   38.22 +"         ..           ",
   38.23 +"         ..           ",
   38.24 +"    ..   ..   ..      ",
   38.25 +"     ..  ..  ..       ",
   38.26 +"      .. .. ..        ",
   38.27 +"       ......         ",
   38.28 +"        ....          ",
   38.29 +"                      ",
   38.30 +"                      "};
    39.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    39.2 +++ b/icons/editmoveup.xpm	Sun Jan 30 12:59:10 2005 +0000
    39.3 @@ -0,0 +1,27 @@
    39.4 +/* XPM */
    39.5 +static const char * editmoveup_xpm[] = {
    39.6 +"22 22 2 1",
    39.7 +" 	c None",
    39.8 +".	c #000000",
    39.9 +"                      ",
   39.10 +"                      ",
   39.11 +"                      ",
   39.12 +"                      ",
   39.13 +"         ....         ",
   39.14 +"        ......        ",
   39.15 +"       .. .. ..       ",
   39.16 +"      ..  ..  ..      ",
   39.17 +"     ..   ..   ..     ",
   39.18 +"          ..          ",
   39.19 +"          ..          ",
   39.20 +"          ..          ",
   39.21 +"          ..          ",
   39.22 +"          ..          ",
   39.23 +"          ..          ",
   39.24 +"          ..          ",
   39.25 +"          ..          ",
   39.26 +"          ..          ",
   39.27 +"          ..          ",
   39.28 +"          ..          ",
   39.29 +"                      ",
   39.30 +"                      "};
    40.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    40.2 +++ b/icons/editpaste.xpm	Sun Jan 30 12:59:10 2005 +0000
    40.3 @@ -0,0 +1,36 @@
    40.4 +/* XPM */
    40.5 +static const char *editpaste_xpm[] = {
    40.6 +/* columns rows colors chars-per-pixel */
    40.7 +"22 22 8 1",
    40.8 +"  c Gray100",
    40.9 +". c Yellow",
   40.10 +"X c #c6c3c6",
   40.11 +"o c #848284",
   40.12 +"O c #848200",
   40.13 +"+ c #000084",
   40.14 +"@ c Gray0",
   40.15 +"# c None",
   40.16 +/* pixels */
   40.17 +"######################",
   40.18 +"#######@@@@@##########",
   40.19 +"##@@@@@@...@@@@@@#####",
   40.20 +"#@@@@@@.....@@@@@@####",
   40.21 +"@@oOo@@.@@@.@@oOo@@###",
   40.22 +"@oOo@XXXXXXXXX@oOo@###",
   40.23 +"@OoO@XXXXXXXXX@OoO@###",
   40.24 +"@oOo@@@@@@@@@@@oOo@###",
   40.25 +"@OoOoOoOoOoOoOoOoO@###",
   40.26 +"@oOoOoOoOoOoOoOoOo@###",
   40.27 +"@OoOoOoO++++++++++@###",
   40.28 +"@oOoOoOo+       + +###",
   40.29 +"@OoOoOoO+ +++++ +  +##",
   40.30 +"@oOoOoOo+       +   +#",
   40.31 +"@OoOoOoO+ +++++ +    +",
   40.32 +"@oOoOoOo+       ++++++",
   40.33 +"@OoOoOoO+ +++++      +",
   40.34 +"@oOoOoOo+            +",
   40.35 +"@OoOoOoO+ ++++++++++ +",
   40.36 +"#@@@@@@@+            +",
   40.37 +"########++++++++++++++",
   40.38 +"######################"
   40.39 +};
    41.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    41.2 +++ b/icons/editredo.xpm	Sun Jan 30 12:59:10 2005 +0000
    41.3 @@ -0,0 +1,36 @@
    41.4 +/* XPM */
    41.5 +static const char *editredo_xpm[] = {
    41.6 +/* columns rows colors chars-per-pixel */
    41.7 +"22 22 8 1",
    41.8 +"  c Gray100",
    41.9 +". c #848284",
   41.10 +"X c #000084",
   41.11 +"o c Gray0",
   41.12 +"O c None",
   41.13 +"+ c Gray0",
   41.14 +"@ c Gray0",
   41.15 +"# c Gray0",
   41.16 +/* pixels */
   41.17 +"OOOOOOOOOOOOOOOOOOOOOO",
   41.18 +"OOOOOOOOOOOOOOOOOOOOOO",
   41.19 +"OOOOOOOOOOOOOOOOOOOOOO",
   41.20 +"OOOOOOOOOOOOOOOOOOOOOO",
   41.21 +"OOOOOOOOOOOOOOOOOOOOOO",
   41.22 +"OOOO.XXXXXXOOOOOOOOOOO",
   41.23 +"OOOXXXXXXXXXXOOOOOOXOO",
   41.24 +"OO.XXOOOOOOXXXXOOOXXOO",
   41.25 +"OOXXOOOOOOOOOXXXOXXXOO",
   41.26 +"OOXXOOOOOOOOOOXXXXXXOO",
   41.27 +"OOXXOOOOOOOOOOOXXXXXOO",
   41.28 +"OOXXOOOOOOOOOOXXXXXXOO",
   41.29 +"OOXXOOOOOOOOOXXXXXXXOO",
   41.30 +"OO.XXOOOOOOOXXXXXXXXOO",
   41.31 +"OOOXXX.OOOOOOOOOOOOOOO",
   41.32 +"OOOOXXXOOOOOOOOOOOOOOO",
   41.33 +"OOOOOOOOOOOOOOOOOOOOOO",
   41.34 +"OOOOOOOOOOOOOOOOOOOOOO",
   41.35 +"OOOOOOOOOOOOOOOOOOOOOO",
   41.36 +"OOOOOOOOOOOOOOOOOOOOOO",
   41.37 +"OOOOOOOOOOOOOOOOOOOOOO",
   41.38 +"OOOOOOOOOOOOOOOOOOOOOO"
   41.39 +};
    42.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    42.2 +++ b/icons/edittrash.xpm	Sun Jan 30 12:59:10 2005 +0000
    42.3 @@ -0,0 +1,82 @@
    42.4 +/* XPM */
    42.5 +static const char * edittrash_xpm[] = {
    42.6 +"22 22 57 1",
    42.7 +" 	c None",
    42.8 +".	c #000000",
    42.9 +"+	c #505050",
   42.10 +"@	c #494949",
   42.11 +"#	c #373737",
   42.12 +"$	c #818181",
   42.13 +"%	c #101010",
   42.14 +"&	c #282828",
   42.15 +"*	c #2F2F2F",
   42.16 +"=	c #232323",
   42.17 +"-	c #1F1F1F",
   42.18 +";	c #DADADA",
   42.19 +">	c #FBFBFB",
   42.20 +",	c #DCDCDC",
   42.21 +"'	c #696969",
   42.22 +")	c #6C6C6C",
   42.23 +"!	c #747474",
   42.24 +"~	c #3C3C3C",
   42.25 +"{	c #989898",
   42.26 +"]	c #B2B2B2",
   42.27 +"^	c #949494",
   42.28 +"/	c #0F0F0F",
   42.29 +"(	c #919191",
   42.30 +"_	c #EBEBEB",
   42.31 +":	c #F7F7F7",
   42.32 +"<	c #B8B8B8",
   42.33 +"[	c #565656",
   42.34 +"}	c #151515",
   42.35 +"|	c #8B8B8B",
   42.36 +"1	c #C2C2C2",
   42.37 +"2	c #7E7E7E",
   42.38 +"3	c #B4B4B4",
   42.39 +"4	c #E4E4E4",
   42.40 +"5	c #E9E9E9",
   42.41 +"6	c #E0E0E0",
   42.42 +"7	c #7B7B7B",
   42.43 +"8	c #858585",
   42.44 +"9	c #777777",
   42.45 +"0	c #4F4F4F",
   42.46 +"a	c #D7D7D7",
   42.47 +"b	c #AFAFAF",
   42.48 +"c	c #A4A4A4",
   42.49 +"d	c #9F9F9F",
   42.50 +"e	c #444444",
   42.51 +"f	c #8A8A8A",
   42.52 +"g	c #CDCDCD",
   42.53 +"h	c #A0A0A0",
   42.54 +"i	c #616161",
   42.55 +"j	c #242424",
   42.56 +"k	c #080808",
   42.57 +"l	c #363636",
   42.58 +"m	c #BCBCBC",
   42.59 +"n	c #C6C6C6",
   42.60 +"o	c #5D5D5D",
   42.61 +"p	c #585858",
   42.62 +"q	c #1B1B1B",
   42.63 +"r	c #313131",
   42.64 +"                      ",
   42.65 +"       .....+...      ",
   42.66 +"    ....@+#$%&*=-     ",
   42.67 +"   ..;>,'#)!~{]^..    ",
   42.68 +"  /(_:>;<]<[}|1](2.   ",
   42.69 +"  =(3<;4:5678(|9[0..  ",
   42.70 +"  }9,abbcdd!9!7)0e.   ",
   42.71 +"  ..)f1g;hhhd^)ijk    ",
   42.72 +"   .d1))ff|))!90l}    ",
   42.73 +"   .f14g3<{|||)@*%    ",
   42.74 +"   .fm_{bnf|())0*%    ",
   42.75 +"   .|m_|hn7f|0)0*%    ",
   42.76 +"   .fm5(hn7f|0)0*%    ",
   42.77 +"   .f15|cn9f|0)@*%    ",
   42.78 +"   .fm5(cn9f|@)0*%    ",
   42.79 +"   .fm5|cn7f|0)0*%    ",
   42.80 +"   .f15|cn7f|0!@*%    ",
   42.81 +"   .|m5(cn9f|@)+l%    ",
   42.82 +"   .cg5|cn9f|0)o*/    ",
   42.83 +"   .m4>mmnfd|))p-.    ",
   42.84 +"   .q.cga3hh$[lr.     ",
   42.85 +"     ..l#rrrjq..      "};
    43.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    43.2 +++ b/icons/editundo.xpm	Sun Jan 30 12:59:10 2005 +0000
    43.3 @@ -0,0 +1,36 @@
    43.4 +/* XPM */
    43.5 +static const char *editundo_xpm[] = {
    43.6 +/* columns rows colors chars-per-pixel */
    43.7 +"22 22 8 1",
    43.8 +"  c Gray100",
    43.9 +". c #848284",
   43.10 +"X c #000084",
   43.11 +"o c Gray0",
   43.12 +"O c None",
   43.13 +"+ c Gray0",
   43.14 +"@ c Gray0",
   43.15 +"# c Gray0",
   43.16 +/* pixels */
   43.17 +"OOOOOOOOOOOOOOOOOOOOOO",
   43.18 +"OOOOOOOOOOOOOOOOOOOOOO",
   43.19 +"OOOOOOOOOOOOOOOOOOOOOO",
   43.20 +"OOOOOOOOOOOOOOOOOOOOOO",
   43.21 +"OOOOOOOOOOOOOOOOOOOOOO",
   43.22 +"OOOOOOOOOOOXXXXXX.OOOO",
   43.23 +"OOXOOOOOOXXXXXXXXXXOOO",
   43.24 +"OOXXOOOXXXXOOOOOOXX.OO",
   43.25 +"OOXXXOXXXOOOOOOOOOXXOO",
   43.26 +"OOXXXXXXOOOOOOOOOOXXOO",
   43.27 +"OOXXXXXOOOOOOOOOOOXXOO",
   43.28 +"OOXXXXXXOOOOOOOOOOXXOO",
   43.29 +"OOXXXXXXXOOOOOOOOOXXOO",
   43.30 +"OOXXXXXXXXOOOOOOOXX.OO",
   43.31 +"OOOOOOOOOOOOOOO.XXXOOO",
   43.32 +"OOOOOOOOOOOOOOOXXXOOOO",
   43.33 +"OOOOOOOOOOOOOOOOOOOOOO",
   43.34 +"OOOOOOOOOOOOOOOOOOOOOO",
   43.35 +"OOOOOOOOOOOOOOOOOOOOOO",
   43.36 +"OOOOOOOOOOOOOOOOOOOOOO",
   43.37 +"OOOOOOOOOOOOOOOOOOOOOO",
   43.38 +"OOOOOOOOOOOOOOOOOOOOOO"
   43.39 +};
    44.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    44.2 +++ b/icons/filenew.xpm	Sun Jan 30 12:59:10 2005 +0000
    44.3 @@ -0,0 +1,36 @@
    44.4 +/* XPM */
    44.5 +static const char *filenew_xpm[] = {
    44.6 +/* columns rows colors chars-per-pixel */
    44.7 +"22 22 8 1",
    44.8 +"  c Gray100",
    44.9 +". c Gray76",
   44.10 +"X c Gray53",
   44.11 +"o c Gray36",
   44.12 +"O c Gray18",
   44.13 +"+ c Gray0",
   44.14 +"@ c None",
   44.15 +"# c Gray0",
   44.16 +/* pixels */
   44.17 +"@@@@@@@@@@@@@@@@@@@@@@",
   44.18 +"@@@@++++++++++@@@@@@@@",
   44.19 +"@@@@+       +O+@@@@@@@",
   44.20 +"@@@@+       +oO+@@@@@@",
   44.21 +"@@@@+       +XoO+@@@@@",
   44.22 +"@@@@+       +.XoO+@@@@",
   44.23 +"@@@@+       + .XoO+@@@",
   44.24 +"@@@@+       +++++++@@@",
   44.25 +"@@@@+             +@@@",
   44.26 +"@@@@+             +@@@",
   44.27 +"@@@@+             +@@@",
   44.28 +"@@@@+             +@@@",
   44.29 +"@@@@+             +@@@",
   44.30 +"@@@@+             +@@@",
   44.31 +"@@@@+             +@@@",
   44.32 +"@@@@+             +@@@",
   44.33 +"@@@@+             +@@@",
   44.34 +"@@@@+             +@@@",
   44.35 +"@@@@+             +@@@",
   44.36 +"@@@@+++++++++++++++@@@",
   44.37 +"@@@@@@@@@@@@@@@@@@@@@@",
   44.38 +"@@@@@@@@@@@@@@@@@@@@@@"
   44.39 +};
    45.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    45.2 +++ b/icons/fileopen.xpm	Sun Jan 30 12:59:10 2005 +0000
    45.3 @@ -0,0 +1,36 @@
    45.4 +/* XPM */
    45.5 +static const char *fileopen_xpm[] = {
    45.6 +/* columns rows colors chars-per-pixel */
    45.7 +"22 22 8 1",
    45.8 +"  c Gray100",
    45.9 +". c Yellow",
   45.10 +"X c #848200",
   45.11 +"o c Gray0",
   45.12 +"O c None",
   45.13 +"+ c Gray0",
   45.14 +"@ c Gray0",
   45.15 +"# c Gray0",
   45.16 +/* pixels */
   45.17 +"OOOOOOOOOOOOOOOOOOOOOO",
   45.18 +"OOOOOOOOOOOOOOOOOOOOOO",
   45.19 +"OOOOOOOOOOOOOOOOOOOOOO",
   45.20 +"OOOOOOOOOOOOooooOOOOoO",
   45.21 +"OOOOOOOOOOOoOOOOooOooO",
   45.22 +"OOOOOOOOOOOOOOOOOOoooO",
   45.23 +"OOOOOOOOOOOOOOOOOooooO",
   45.24 +"OooooOOOOOOOOOOOoooooO",
   45.25 +"o. . ooooooooooOOOOOOO",
   45.26 +"o . . . . . . oOOOOOOO",
   45.27 +"o. . . . . . .oOOOOOOO",
   45.28 +"o . . . . . . oOOOOOOO",
   45.29 +"o. . . ooooooooooooooo",
   45.30 +"o . . ooXXXXXXXXXXXXoo",
   45.31 +"o. . ooXXXXXXXXXXXXooO",
   45.32 +"o . ooXXXXXXXXXXXXooOO",
   45.33 +"o. ooXXXXXXXXXXXXooOOO",
   45.34 +"o ooXXXXXXXXXXXXooOOOO",
   45.35 +"oooXXXXXXXXXXXXooOOOOO",
   45.36 +"ooXXXXXXXXXXXXooOOOOOO",
   45.37 +"oooooooooooooooOOOOOOO",
   45.38 +"OOOOOOOOOOOOOOOOOOOOOO"
   45.39 +};
    46.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    46.2 +++ b/icons/fileprint.xpm	Sun Jan 30 12:59:10 2005 +0000
    46.3 @@ -0,0 +1,117 @@
    46.4 +/* XPM */
    46.5 +static const char *fileprint_xpm[] = {
    46.6 +/* columns rows colors chars-per-pixel */
    46.7 +"22 22 89 1",
    46.8 +"  c Gray0",
    46.9 +". c #101008081010",
   46.10 +"X c #101010101010",
   46.11 +"o c #101010101818",
   46.12 +"O c #181810101818",
   46.13 +"+ c #181818181818",
   46.14 +"@ c #181818182121",
   46.15 +"# c #212118182121",
   46.16 +"$ c Gray13",
   46.17 +"% c #212121212929",
   46.18 +"& c #292921212929",
   46.19 +"* c Gray16",
   46.20 +"= c #292929293131",
   46.21 +"- c #313129293131",
   46.22 +"; c #313131313131",
   46.23 +": c #313131313939",
   46.24 +"> c #393931313939",
   46.25 +", c #393939393939",
   46.26 +"< c #393939394242",
   46.27 +"1 c #424239394242",
   46.28 +"2 c Gray26",
   46.29 +"3 c #4a4a4a4a5252",
   46.30 +"4 c #5a5a52525a5a",
   46.31 +"5 c #5a5a5a5a6363",
   46.32 +"6 c #6b6b63636b6b",
   46.33 +"7 c Gray42",
   46.34 +"8 c #6b6b6b6b7373",
   46.35 +"9 c #73736b6b7373",
   46.36 +"0 c #7b7b73737b7b",
   46.37 +"q c #7b7b73738484",
   46.38 +"w c #0808ffff0808",
   46.39 +"e c #2929ffff2929",
   46.40 +"r c #3131ffff3131",
   46.41 +"t c #5a5acece5a5a",
   46.42 +"y c #6b6bffff6363",
   46.43 +"u c #7b7bffff7b7b",
   46.44 +"i c #84847b7b8484",
   46.45 +"p c #84847b7b8c8c",
   46.46 +"a c #8c8c7b7b9494",
   46.47 +"s c #848484848c8c",
   46.48 +"d c #8c8c84848c8c",
   46.49 +"f c Gray55",
   46.50 +"g c #8c8c84849494",
   46.51 +"h c #8c8c8c8c9494",
   46.52 +"j c #94948c8c9494",
   46.53 +"k c #94948c8c9c9c",
   46.54 +"l c Gray58",
   46.55 +"z c #949494949c9c",
   46.56 +"x c #9c9c94949c9c",
   46.57 +"c c Gray61",
   46.58 +"v c #9c9c9494a5a5",
   46.59 +"b c #9c9c9c9ca5a5",
   46.60 +"n c #a5a59c9ca5a5",
   46.61 +"m c #a5a59c9cadad",
   46.62 +"M c #adad9c9cadad",
   46.63 +"N c #a5a5a5a5a5a5",
   46.64 +"B c #a5a5a5a5adad",
   46.65 +"V c #adada5a5adad",
   46.66 +"C c Gray68",
   46.67 +"Z c #adadadadb5b5",
   46.68 +"A c #b5b5adadb5b5",
   46.69 +"S c Gray71",
   46.70 +"D c Gray74",
   46.71 +"F c #9494c6c69494",
   46.72 +"G c #9c9ccecea5a5",
   46.73 +"H c #bdbdd6d6bdbd",
   46.74 +"J c #c0c0c0c0c0c0",
   46.75 +"K c #c6c6c6c6c6c6",
   46.76 +"L c #cecec6c6cece",
   46.77 +"P c #cececececece",
   46.78 +"I c #cecececed6d6",
   46.79 +"U c #d6d6ceced6d6",
   46.80 +"Y c #d6d6cecedede",
   46.81 +"T c Gray84",
   46.82 +"R c #d6d6d6d6dede",
   46.83 +"E c #deded6d6dede",
   46.84 +"W c Gray87",
   46.85 +"Q c #deded6d6e7e7",
   46.86 +"! c #dedededee7e7",
   46.87 +"~ c #d6d6ffffd6d6",
   46.88 +"^ c #e7e7dedee7e7",
   46.89 +"/ c #e7e7e7e7e7e7",
   46.90 +"( c #e7e7e7e7efef",
   46.91 +") c #efefe7e7efef",
   46.92 +"_ c #efefefefefef",
   46.93 +"` c #e7e7ffffe7e7",
   46.94 +"' c Gray97",
   46.95 +"] c Gray100",
   46.96 +"[ c None",
   46.97 +/* pixels */
   46.98 +"[[[[[[SDPPPPKKDDCD[[[[",
   46.99 +"[[[[[[D_/////___WD[[[[",
  46.100 +"[[[[[[DKKKPPKKKKDK[[[[",
  46.101 +"[[[[[[SDDDDSDDSSCD[[[[",
  46.102 +"[[[[[KCKDKKKDDDKS[[[[[",
  46.103 +"[[[[[DDSDDDDDDKKS[[[[[",
  46.104 +"[[[[[DSKDDDDDKDKC[[[[[",
  46.105 +"[[[[[KDDDDDDDDDDS[[[[[",
  46.106 +"[[[[[CP/WWWWWWTWNNZ[[[",
  46.107 +"[[[Dc9STPTPTPTWWj427S[",
  46.108 +"[[Dziq0000000pag8<%@2N",
  46.109 +"[DcE(!ERRRRUYGtFn2##O<",
  46.110 +"Db)]]]]]]]]]~ewePa;@X#",
  46.111 +"V']]]]]]]]]]`yru]Q0@ #",
  46.112 +"BRILITRRW^!E!RHUILhO @",
  46.113 +"jAZVBmBnmmNmnmMvzh6o #",
  46.114 +"jZZmBnnnbnbbbbvxxg6o +",
  46.115 +"lmmnbnbbbvcvxxxvjs6O 3",
  46.116 +"jBnnvcvxvcvxvxzjhd8o+C",
  46.117 +"lsdgfgdhgdhhjhjkhg6+l[",
  46.118 +"S9%@$%&&&=--::>>:-:l[[",
  46.119 +"[[C511,:;;;**%++.2c[[["
  46.120 +};
    47.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    47.2 +++ b/icons/filesave.xpm	Sun Jan 30 12:59:10 2005 +0000
    47.3 @@ -0,0 +1,36 @@
    47.4 +/* XPM */
    47.5 +static const char *filesave_xpm[] = {
    47.6 +/* columns rows colors chars-per-pixel */
    47.7 +"22 22 8 1",
    47.8 +"  c Gray100",
    47.9 +". c #cab5d1",
   47.10 +"X c #c1c1c1",
   47.11 +"o c #848200",
   47.12 +"O c Gray0",
   47.13 +"+ c None",
   47.14 +"@ c Gray0",
   47.15 +"# c Gray0",
   47.16 +/* pixels */
   47.17 +"++++++++++++++++++++++",
   47.18 +"+OOOOOOOOOOOOOOOOOOOO+",
   47.19 +"+OooOXXXXXXXXXXXXOXXO+",
   47.20 +"+OooOXXXXXXXXXXXXOXXO+",
   47.21 +"+OooOXXXXXXXXX.XXOOOO+",
   47.22 +"+OooOXXX..XXXXXXXOooO+",
   47.23 +"+OooOXXX..XXXXXXXOooO+",
   47.24 +"+OooOXXXXXXXXXXXXOooO+",
   47.25 +"+OooOXXXXXXXXXXXXOooO+",
   47.26 +"+OooOXXXXXXXXXXXXOooO+",
   47.27 +"+OooOXXXXXXXXXXXXOooO+",
   47.28 +"+OoooOOOOOOOOOOOOoooO+",
   47.29 +"+OooooooooooooooooooO+",
   47.30 +"+OooooooooooooooooooO+",
   47.31 +"+OoooOOOOOOOOOOOOOooO+",
   47.32 +"+OoooOOOOOOOOOXXXOooO+",
   47.33 +"+OoooOOOOOOOOOXXXOooO+",
   47.34 +"+OoooOOOOOOOOOXXXOooO+",
   47.35 +"+OoooOOOOOOOOOXXXOooO+",
   47.36 +"+OoooOOOOOOOOOXXXOooO+",
   47.37 +"++OOOOOOOOOOOOOOOOOO++",
   47.38 +"++++++++++++++++++++++"
   47.39 +};
    48.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    48.2 +++ b/icons/flag-arrow-down.xpm	Sun Jan 30 12:59:10 2005 +0000
    48.3 @@ -0,0 +1,28 @@
    48.4 +/* XPM */
    48.5 +static char * flag_arrow_down_xpm[] = {
    48.6 +"22 22 3 1",
    48.7 +" 	c None",
    48.8 +".	c #000000",
    48.9 +"+	c #4F54FF",
   48.10 +"                      ",
   48.11 +"                      ",
   48.12 +"                      ",
   48.13 +"                      ",
   48.14 +"         .+++.        ",
   48.15 +"         .+++.        ",
   48.16 +"         .+++.        ",
   48.17 +"         .+++.        ",
   48.18 +"         .+++.        ",
   48.19 +"         .+++.        ",
   48.20 +"         .+++.        ",
   48.21 +"         .+++.        ",
   48.22 +"         .+++.        ",
   48.23 +"         .+++.        ",
   48.24 +"     ... .+++. ...    ",
   48.25 +"       .........      ",
   48.26 +"        .......       ",
   48.27 +"         .....        ",
   48.28 +"          ...         ",
   48.29 +"                      ",
   48.30 +"                      ",
   48.31 +"                      "};
    49.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    49.2 +++ b/icons/flag-arrow-up.xpm	Sun Jan 30 12:59:10 2005 +0000
    49.3 @@ -0,0 +1,28 @@
    49.4 +/* XPM */
    49.5 +static char * flag_arrow_up_xpm[] = {
    49.6 +"22 22 3 1",
    49.7 +" 	c None",
    49.8 +".	c #000000",
    49.9 +"+	c #4F54FF",
   49.10 +"                      ",
   49.11 +"                      ",
   49.12 +"                      ",
   49.13 +"                      ",
   49.14 +"          ...         ",
   49.15 +"         .....        ",
   49.16 +"        .......       ",
   49.17 +"       .........      ",
   49.18 +"     ... .+++. ...    ",
   49.19 +"         .+++.        ",
   49.20 +"         .+++.        ",
   49.21 +"         .+++.        ",
   49.22 +"         .+++.        ",
   49.23 +"         .+++.        ",
   49.24 +"         .+++.        ",
   49.25 +"         .+++.        ",
   49.26 +"         .+++.        ",
   49.27 +"         .+++.        ",
   49.28 +"         .+++.        ",
   49.29 +"                      ",
   49.30 +"                      ",
   49.31 +"                      "};
    50.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    50.2 +++ b/icons/flag-clock.xpm	Sun Jan 30 12:59:10 2005 +0000
    50.3 @@ -0,0 +1,31 @@
    50.4 +/* XPM */
    50.5 +static const char * flag_clock_xpm[] = {
    50.6 +"22 22 6 1",
    50.7 +" 	c None",
    50.8 +".	c #000000",
    50.9 +"+	c #FFFFFF",
   50.10 +"@	c #FF0000",
   50.11 +"#	c #FCFCFC",
   50.12 +"$	c #FDFDFD",
   50.13 +"                      ",
   50.14 +"                      ",
   50.15 +"        ......        ",
   50.16 +"      ...+@++...      ",
   50.17 +"    ...+++@++++...    ",
   50.18 +"    .+.++#@+++.++.    ",
   50.19 +"   ..++.+$@++++++..   ",
   50.20 +"   ..++++$@++++++..   ",
   50.21 +"  ..+.+++$@+++++.+..  ",
   50.22 +"  .+++++++@++@@++++.  ",
   50.23 +"  .+++++++@@@@+++++.  ",
   50.24 +"  ....++++@@++++....  ",
   50.25 +"  .++++++++++++++++.  ",
   50.26 +"  ..++++++++++++++..  ",
   50.27 +"   .+.++++++++++.+.   ",
   50.28 +"   ..++++++++++++..   ",
   50.29 +"    .++.++.+++.++.    ",
   50.30 +"    ...+++.++++...    ",
   50.31 +"      ...+.++...      ",
   50.32 +"        ......        ",
   50.33 +"                      ",
   50.34 +"                      "};
    51.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    51.2 +++ b/icons/flag-cross-red.xpm	Sun Jan 30 12:59:10 2005 +0000
    51.3 @@ -0,0 +1,27 @@
    51.4 +/* XPM */
    51.5 +static const char * flag_cross_red_xpm[] = {
    51.6 +"22 22 2 1",
    51.7 +" 	c None",
    51.8 +".	c #FF0000",
    51.9 +"                      ",
   51.10 +"                      ",
   51.11 +"                      ",
   51.12 +"                      ",
   51.13 +"  .....        ...    ",
   51.14 +"    ....     .....    ",
   51.15 +"      ...   ...       ",
   51.16 +"       .......        ",
   51.17 +"         ....         ",
   51.18 +"         ....         ",
   51.19 +"        ......        ",
   51.20 +"        .. ...        ",
   51.21 +"       ..   ...       ",
   51.22 +"      ..     ..       ",
   51.23 +"     ...      ..      ",
   51.24 +"     ...      ...     ",
   51.25 +"    ...        ..     ",
   51.26 +"   ...          ..    ",
   51.27 +"   ..            .    ",
   51.28 +"   .             ..   ",
   51.29 +"                      ",
   51.30 +"                      "};
    52.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    52.2 +++ b/icons/flag-exclamationmark.xpm	Sun Jan 30 12:59:10 2005 +0000
    52.3 @@ -0,0 +1,22 @@
    52.4 +/* XPM */
    52.5 +static const char * flag_exclamationmark_xpm[] = {
    52.6 +"14 17 2 1",
    52.7 +" 	c None",
    52.8 +".	c #FF0000",
    52.9 +"       .      ",
   52.10 +"      ...     ",
   52.11 +"      ...     ",
   52.12 +"      ...     ",
   52.13 +"      ...     ",
   52.14 +"      ...     ",
   52.15 +"      ...     ",
   52.16 +"      ...     ",
   52.17 +"      ...     ",
   52.18 +"       .      ",
   52.19 +"       .      ",
   52.20 +"       .      ",
   52.21 +"       .      ",
   52.22 +"              ",
   52.23 +"       .      ",
   52.24 +"      ...     ",
   52.25 +"       .      "};
    53.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    53.2 +++ b/icons/flag-flash.xpm	Sun Jan 30 12:59:10 2005 +0000
    53.3 @@ -0,0 +1,93 @@
    53.4 +/* XPM */
    53.5 +static char * flag_flash_xpm[] = {
    53.6 +"22 22 68 1",
    53.7 +" 	c None",
    53.8 +".	c #FFAC00",
    53.9 +"+	c #FEB805",
   53.10 +"@	c #FAB605",
   53.11 +"#	c #F8B105",
   53.12 +"$	c #FEAC00",
   53.13 +"%	c #FEEE18",
   53.14 +"&	c #FEF51B",
   53.15 +"*	c #FDF01B",
   53.16 +"=	c #EFB70B",
   53.17 +"-	c #E17F01",
   53.18 +";	c #FFFF1E",
   53.19 +">	c #FFFE1E",
   53.20 +",	c #FCED1B",
   53.21 +"'	c #FFF91C",
   53.22 +")	c #FFFF1C",
   53.23 +"!	c #FFFF27",
   53.24 +"~	c #F1B80A",
   53.25 +"{	c #FBB408",
   53.26 +"]	c #FEFC1D",
   53.27 +"^	c #FFFF24",
   53.28 +"/	c #FBC60C",
   53.29 +"(	c #DD7A00",
   53.30 +"_	c #EFA210",
   53.31 +":	c #F6CF15",
   53.32 +"<	c #F8E51B",
   53.33 +"[	c #FCF01A",
   53.34 +"}	c #FBE217",
   53.35 +"|	c #F6D313",
   53.36 +"1	c #F1C410",
   53.37 +"2	c #E27E01",
   53.38 +"3	c #F1B209",
   53.39 +"4	c #FFF31B",
   53.40 +"5	c #FEF31B",
   53.41 +"6	c #F1C511",
   53.42 +"7	c #D88113",
   53.43 +"8	c #F5C40F",
   53.44 +"9	c #FFE619",
   53.45 +"0	c #FFF71B",
   53.46 +"a	c #E68500",
   53.47 +"b	c #FDD814",
   53.48 +"c	c #FFFC1B",
   53.49 +"d	c #F5BB0B",
   53.50 +"e	c #FFDD14",
   53.51 +"f	c #FFDC14",
   53.52 +"g	c #F7D213",
   53.53 +"h	c #FCD412",
   53.54 +"i	c #FFD412",
   53.55 +"j	c #FED311",
   53.56 +"k	c #F0B20C",
   53.57 +"l	c #CD6200",
   53.58 +"m	c #CB6B0B",
   53.59 +"n	c #F0A607",
   53.60 +"o	c #FFCF10",
   53.61 +"p	c #F9C00D",
   53.62 +"q	c #D78205",
   53.63 +"r	c #DA7100",
   53.64 +"s	c #F19E06",
   53.65 +"t	c #FFFF15",
   53.66 +"u	c #D86A00",
   53.67 +"v	c #D56A00",
   53.68 +"w	c #FFD30D",
   53.69 +"x	c #E28704",
   53.70 +"y	c #E88C04",
   53.71 +"z	c #F8AB06",
   53.72 +"A	c #DA6800",
   53.73 +"B	c #F49A03",
   53.74 +"C	c #D06100",
   53.75 +"         .+@#..       ",
   53.76 +"         $%&*=-       ",
   53.77 +"        ..;>,-        ",
   53.78 +"        .')!~.        ",
   53.79 +"        {;]^-         ",
   53.80 +"       ./;^---(       ",
   53.81 +"       _:<[}|12       ",
   53.82 +"       ...3456-       ",
   53.83 +"         7890-        ",
   53.84 +"         abc--        ",
   53.85 +"        .def---       ",
   53.86 +"        .ghijkl       ",
   53.87 +"        .mnopq        ",
   53.88 +"         rstul        ",
   53.89 +"         vwxl         ",
   53.90 +"         yzA          ",
   53.91 +"         B-l          ",
   53.92 +"        .-l           ",
   53.93 +"        -C            ",
   53.94 +"        l             ",
   53.95 +"        -             ",
   53.96 +"                      "};
    54.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    54.2 +++ b/icons/flag-heart.xpm	Sun Jan 30 12:59:10 2005 +0000
    54.3 @@ -0,0 +1,106 @@
    54.4 +/* XPM */
    54.5 +static const char * flag_heart_xpm[] = {
    54.6 +"22 22 81 1",
    54.7 +" 	c None",
    54.8 +".	c #020204",
    54.9 +"+	c #B63604",
   54.10 +"@	c #D23E04",
   54.11 +"#	c #C63A04",
   54.12 +"$	c #B62E04",
   54.13 +"%	c #760204",
   54.14 +"&	c #9D0204",
   54.15 +"*	c #AA0204",
   54.16 +"=	c #A23A04",
   54.17 +"-	c #D65604",
   54.18 +";	c #FE6A0C",
   54.19 +">	c #FE7A04",
   54.20 +",	c #FC6204",
   54.21 +"'	c #F25604",
   54.22 +")	c #EA2604",
   54.23 +"!	c #AA2204",
   54.24 +"~	c #820204",
   54.25 +"{	c #D50204",
   54.26 +"]	c #B80204",
   54.27 +"^	c #2A1604",
   54.28 +"/	c #FA8624",
   54.29 +"(	c #FE9A44",
   54.30 +"_	c #FE9E55",
   54.31 +":	c #FE7E0C",
   54.32 +"<	c #A22A04",
   54.33 +"[	c #EE0204",
   54.34 +"}	c #FE4A04",
   54.35 +"|	c #FE3A04",
   54.36 +"1	c #E20204",
   54.37 +"2	c #BE4204",
   54.38 +"3	c #F47E1C",
   54.39 +"4	c #FEAA76",
   54.40 +"5	c #FEB699",
   54.41 +"6	c #FEAE80",
   54.42 +"7	c #F05A04",
   54.43 +"8	c #BE3204",
   54.44 +"9	c #3E0204",
   54.45 +"0	c #FE4204",
   54.46 +"a	c #FE0204",
   54.47 +"b	c #D24604",
   54.48 +"c	c #FEB28F",
   54.49 +"d	c #FE8214",
   54.50 +"e	c #CE1A04",
   54.51 +"f	c #160204",
   54.52 +"g	c #D24A04",
   54.53 +"h	c #F6821C",
   54.54 +"i	c #FEA674",
   54.55 +"j	c #FEA664",
   54.56 +"k	c #FE8E1C",
   54.57 +"l	c #FA4E04",
   54.58 +"m	c #DE0E04",
   54.59 +"n	c #FE5A04",
   54.60 +"o	c #FE1A04",
   54.61 +"p	c #BA3A04",
   54.62 +"q	c #EA5A04",
   54.63 +"r	c #FE8624",
   54.64 +"s	c #FEA27C",
   54.65 +"t	c #FE8E2C",
   54.66 +"u	c #FE7608",
   54.67 +"v	c #FD5604",
   54.68 +"w	c #FE1204",
   54.69 +"x	c #F50204",
   54.70 +"y	c #C20204",
   54.71 +"z	c #C62A04",
   54.72 +"A	c #FA7614",
   54.73 +"B	c #FE0E04",
   54.74 +"C	c #A63204",
   54.75 +"D	c #EA5E04",
   54.76 +"E	c #222204",
   54.77 +"F	c #AE3E04",
   54.78 +"G	c #FE0A04",
   54.79 +"H	c #EA2A04",
   54.80 +"I	c #BE0204",
   54.81 +"J	c #AA2604",
   54.82 +"K	c #FE4604",
   54.83 +"L	c #860204",
   54.84 +"M	c #EC1E04",
   54.85 +"N	c #FE2E04",
   54.86 +"O	c #C22204",
   54.87 +"P	c #F60E04",
   54.88 +"                      ",
   54.89 +"    .....     .....   ",
   54.90 +"  ..+@@#$.   .%&*&%.  ",
   54.91 +" .=-;>,')!. .~{{{{]&. ",
   54.92 +" ^-/(__:')<.%{[}|[1]~.",
   54.93 +".23_456_:789*[}0a[[]~.",
   54.94 +".b345c4(d,ef{||aaa[]~.",
   54.95 +".ghi56jk>lm~[aaaaa[]~.",
   54.96 +".b3_c4(:no1*[aaaaa[]~.",
   54.97 +".pqrs4tuvwxyaaaaaa[]~.",
   54.98 +" .zA__t,lBaaaaaaa[]~. ",
   54.99 +" .CDdtk,noaaaaaaa[]~. ",
  54.100 +"  EFq;d;,|Gaaaaa[{]~. ",
  54.101 +"   .#Hlu,0Gaaaaa1I~.  ",
  54.102 +"    .J)K,}waaaa[{L.   ",
  54.103 +"     .#)0n|Gaax{~.    ",
  54.104 +"      .!M||Gax{&.     ",
  54.105 +"       .#MNGa1*.      ",
  54.106 +"       ..OPa1].       ",
  54.107 +"         .#a].        ",
  54.108 +"          .I.         ",
  54.109 +"           .          "};
    55.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    55.2 +++ b/icons/flag-hook-green.xpm	Sun Jan 30 12:59:10 2005 +0000
    55.3 @@ -0,0 +1,27 @@
    55.4 +/* XPM */
    55.5 +static char * flag_hook_green_xpm[] = {
    55.6 +"22 22 2 1",
    55.7 +" 	c None",
    55.8 +".	c #00B700",
    55.9 +"                      ",
   55.10 +"                      ",
   55.11 +"                      ",
   55.12 +"                      ",
   55.13 +"                  ..  ",
   55.14 +"                 ...  ",
   55.15 +"                ...   ",
   55.16 +"               ...    ",
   55.17 +"              ...     ",
   55.18 +"             ...      ",
   55.19 +"  ...        ...      ",
   55.20 +"   ...     ....       ",
   55.21 +"    ...    ..         ",
   55.22 +"    ...   ..          ",
   55.23 +"      ..  ..          ",
   55.24 +"      ... ..          ",
   55.25 +"       ....           ",
   55.26 +"       ....           ",
   55.27 +"        ...           ",
   55.28 +"        ...           ",
   55.29 +"                      ",
   55.30 +"                      "};
    56.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    56.2 +++ b/icons/flag-lamp.xpm	Sun Jan 30 12:59:10 2005 +0000
    56.3 @@ -0,0 +1,29 @@
    56.4 +/* XPM */
    56.5 +static const char * flag_lamp_xpm[] = {
    56.6 +"22 22 4 1",
    56.7 +" 	c None",
    56.8 +".	c #FFF200",
    56.9 +"+	c #000000",
   56.10 +"@	c #B56503",
   56.11 +"  .                 . ",
   56.12 +"  ...   ++++++    ..  ",
   56.13 +"    . +++....+++ ..   ",
   56.14 +"     ++........++     ",
   56.15 +"     +..........+     ",
   56.16 +"    ++..........++    ",
   56.17 +"    +............+    ",
   56.18 +"....+............+....",
   56.19 +"    +............+    ",
   56.20 +"    ++..........++    ",
   56.21 +"     +..........+     ",
   56.22 +"   ..++........++..   ",
   56.23 +"  ..  +++....+++  ..  ",
   56.24 +"..      ++++++     ...",
   56.25 +"        +@@@@+        ",
   56.26 +"        +@@@@+        ",
   56.27 +"         +@@+         ",
   56.28 +"         +@@+         ",
   56.29 +"        +@@@@+        ",
   56.30 +"         ++++         ",
   56.31 +"          ++          ",
   56.32 +"                      "};
    57.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    57.2 +++ b/icons/flag-lifebelt.xpm	Sun Jan 30 12:59:10 2005 +0000
    57.3 @@ -0,0 +1,209 @@
    57.4 +/* XPM */
    57.5 +static char * flag_lifebelt_xpm[] = {
    57.6 +"22 22 184 2",
    57.7 +"  	c None",
    57.8 +". 	c #EC0000",
    57.9 +"+ 	c #FF8B8B",
   57.10 +"@ 	c #FFFFFF",
   57.11 +"# 	c #DCB3B3",
   57.12 +"$ 	c #6F3737",
   57.13 +"% 	c #979090",
   57.14 +"& 	c #F24343",
   57.15 +"* 	c #FEDCDC",
   57.16 +"= 	c #F9DEDE",
   57.17 +"- 	c #F4C5C5",
   57.18 +"; 	c #F3C2C1",
   57.19 +"> 	c #F4CCCD",
   57.20 +", 	c #FEFEFE",
   57.21 +"' 	c #FDFCFC",
   57.22 +") 	c #FEFDFD",
   57.23 +"! 	c #EEE3E3",
   57.24 +"~ 	c #8E6C6C",
   57.25 +"{ 	c #A47F7F",
   57.26 +"] 	c #F3B8B8",
   57.27 +"^ 	c #F2AEB0",
   57.28 +"/ 	c #FEEADE",
   57.29 +"( 	c #F7DCF5",
   57.30 +"_ 	c #D51374",
   57.31 +": 	c #FF48A5",
   57.32 +"< 	c #F6F1F1",
   57.33 +"[ 	c #FCFFFF",
   57.34 +"} 	c #FF9898",
   57.35 +"| 	c #010000",
   57.36 +"1 	c #F9FBFB",
   57.37 +"2 	c #FAECEC",
   57.38 +"3 	c #E48C88",
   57.39 +"4 	c #D05970",
   57.40 +"5 	c #B41300",
   57.41 +"6 	c #F3F5F2",
   57.42 +"7 	c #FDFDF9",
   57.43 +"8 	c #F4D5D5",
   57.44 +"9 	c #F9A5A5",
   57.45 +"0 	c #FF2F2F",
   57.46 +"a 	c #AAA2A2",
   57.47 +"b 	c #FBFBFB",
   57.48 +"c 	c #FCFCFC",
   57.49 +"d 	c #FFFEFE",
   57.50 +"e 	c #FCE5F9",
   57.51 +"f 	c #816704",
   57.52 +"g 	c #5A7357",
   57.53 +"h 	c #E3788A",
   57.54 +"i 	c #E37F81",
   57.55 +"j 	c #EF8C8C",
   57.56 +"k 	c #FFA0A0",
   57.57 +"l 	c #C61E1E",
   57.58 +"m 	c #FEFFFF",
   57.59 +"n 	c #F9F9F9",
   57.60 +"o 	c #D00C33",
   57.61 +"p 	c #E88281",
   57.62 +"q 	c #F58181",
   57.63 +"r 	c #EB4343",
   57.64 +"s 	c #8DC5C5",
   57.65 +"t 	c #C9BFBF",
   57.66 +"u 	c #FCFCFB",
   57.67 +"v 	c #FFFEFF",
   57.68 +"w 	c #D4E39F",
   57.69 +"x 	c #8D4307",
   57.70 +"y 	c #DD4C59",
   57.71 +"z 	c #ED605F",
   57.72 +"A 	c #FA4C4C",
   57.73 +"B 	c #856565",
   57.74 +"C 	c #E6DFDF",
   57.75 +"D 	c #F7FDFD",
   57.76 +"E 	c #FDFFFF",
   57.77 +"F 	c #FEFFFA",
   57.78 +"G 	c #C92F30",
   57.79 +"H 	c #E6504F",
   57.80 +"I 	c #FB4444",
   57.81 +"J 	c #AD2828",
   57.82 +"K 	c #EABABA",
   57.83 +"L 	c #F6BFBF",
   57.84 +"M 	c #F2C6C4",
   57.85 +"N 	c #ECB8B9",
   57.86 +"O 	c #B64640",
   57.87 +"P 	c #E25C5B",
   57.88 +"Q 	c #F65454",
   57.89 +"R 	c #CC2929",
   57.90 +"S 	c #F00000",
   57.91 +"T 	c #F30303",
   57.92 +"U 	c #D30B13",
   57.93 +"V 	c #B70900",
   57.94 +"W 	c #C8D1C2",
   57.95 +"X 	c #F3FFFF",
   57.96 +"Y 	c #ECFFFF",
   57.97 +"Z 	c #D8BDBD",
   57.98 +"` 	c #EC2424",
   57.99 +" .	c #F40303",
  57.100 +"..	c #D5130E",
  57.101 +"+.	c #C10813",
  57.102 +"@.	c #CFCBCD",
  57.103 +"#.	c #EBEAEA",
  57.104 +"$.	c #E7EAEA",
  57.105 +"%.	c #BE8484",
  57.106 +"&.	c #F86D6D",
  57.107 +"*.	c #F30202",
  57.108 +"=.	c #E21613",
  57.109 +"-.	c #C30201",
  57.110 +";.	c #FFFDFF",
  57.111 +">.	c #EBEBEB",
  57.112 +",.	c #E3E3E3",
  57.113 +"'.	c #976464",
  57.114 +").	c #F80202",
  57.115 +"!.	c #EF1211",
  57.116 +"~.	c #CE0808",
  57.117 +"{.	c #AD531E",
  57.118 +"].	c #F4F4F4",
  57.119 +"^.	c #E8E6E6",
  57.120 +"/.	c #DDDCDC",
  57.121 +"(.	c #7E5959",
  57.122 +"_.	c #FF5F5F",
  57.123 +":.	c #FD0F0F",
  57.124 +"<.	c #E21A1A",
  57.125 +"[.	c #CB0000",
  57.126 +"}.	c #D3F8DE",
  57.127 +"|.	c #6B0000",
  57.128 +"1.	c #FA6D68",
  57.129 +"2.	c #EDFFFF",
  57.130 +"3.	c #DACECE",
  57.131 +"4.	c #C7BBBB",
  57.132 +"5.	c #895454",
  57.133 +"6.	c #EF0D0D",
  57.134 +"7.	c #F40101",
  57.135 +"8.	c #F08585",
  57.136 +"9.	c #A1B578",
  57.137 +"0.	c #2F242C",
  57.138 +"a.	c #F40902",
  57.139 +"b.	c #D70404",
  57.140 +"c.	c #E5A5A5",
  57.141 +"d.	c #E2F6F6",
  57.142 +"e.	c #D0B4B4",
  57.143 +"f.	c #FF0000",
  57.144 +"g.	c #E1CBCB",
  57.145 +"h.	c #EDFAFA",
  57.146 +"i.	c #F5F5F5",
  57.147 +"j.	c #FBFCFA",
  57.148 +"k.	c #D8AEF0",
  57.149 +"l.	c #B10002",
  57.150 +"m.	c #F80000",
  57.151 +"n.	c #D60A06",
  57.152 +"o.	c #F30B0B",
  57.153 +"p.	c #F51010",
  57.154 +"q.	c #F20000",
  57.155 +"r.	c #E77878",
  57.156 +"s.	c #DCE9E9",
  57.157 +"t.	c #E4E4E4",
  57.158 +"u.	c #ECECEC",
  57.159 +"v.	c #EFEFEE",
  57.160 +"w.	c #F1F2EF",
  57.161 +"x.	c #FDE6E8",
  57.162 +"y.	c #DE0202",
  57.163 +"z.	c #E10D0B",
  57.164 +"A.	c #F00E0E",
  57.165 +"B.	c #F20F0F",
  57.166 +"C.	c #EE0C0C",
  57.167 +"D.	c #FF2424",
  57.168 +"E.	c #DAD4D4",
  57.169 +"F.	c #E6E7E7",
  57.170 +"G.	c #E8E8E8",
  57.171 +"H.	c #E9EEEE",
  57.172 +"I.	c #E9D2D2",
  57.173 +"J.	c #F20303",
  57.174 +"K.	c #F20E0E",
  57.175 +"L.	c #F50A0A",
  57.176 +"M.	c #D91616",
  57.177 +"N.	c #BBA4A4",
  57.178 +"O.	c #E2D4D4",
  57.179 +"P.	c #E8EEEE",
  57.180 +"Q.	c #E5F5F5",
  57.181 +"R.	c #E7CECE",
  57.182 +"S.	c #E30000",
  57.183 +"T.	c #E3D5D5",
  57.184 +"U.	c #AEB1B1",
  57.185 +"V.	c #B8B1B1",
  57.186 +"W.	c #AF9E9E",
  57.187 +"X.	c #DBCACA",
  57.188 +"Y.	c #CFADAD",
  57.189 +"Z.	c #DE3B3B",
  57.190 +"`.	c #9E4E4E",
  57.191 +"                                            ",
  57.192 +"            . + @ @ @ @ @ @ # $             ",
  57.193 +"        % & * = - ; > , ' ) @ ! ~           ",
  57.194 +"      { @ ] ^ / ( _ : @ @ , < [ } |         ",
  57.195 +"      @ 1 2 3 4 5       6 7 @ 8 9 0         ",
  57.196 +"    a b c d e f         g   h i j k l       ",
  57.197 +"    m n @ @                   o p q r s     ",
  57.198 +"  t b u v w                   x y z A B     ",
  57.199 +"  C D E F                       G H I J     ",
  57.200 +"  K L M N                       O P Q R     ",
  57.201 +"  S T U V                       W X Y Z     ",
  57.202 +"  `  ...+.                      @.#.$.%.    ",
  57.203 +"  &.*.=.-.                      ;.>.,.'.    ",
  57.204 +"    ).!.~.{.                    ].^./.(.    ",
  57.205 +"    _.:.<.[.}.              |.1.2.3.4.      ",
  57.206 +"    5.6.7.8.@ 9.          0.a.b.c.d.e.      ",
  57.207 +"      f.g.h.i.j.@ @ k.l.m.n.o.p.q.r.        ",
  57.208 +"        s.t.u.v.w.n x.y.z.A.B.C.D.          ",
  57.209 +"          E.F.F.G.H.I.J.K.L.f.M.            ",
  57.210 +"            N.O.P.Q.R.f.f.S.T.              ",
  57.211 +"            U.V.W.X.Y.Z.`.                  ",
  57.212 +"                                            "};
    58.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    58.2 +++ b/icons/flag-note.xpm	Sun Jan 30 12:59:10 2005 +0000
    58.3 @@ -0,0 +1,31 @@
    58.4 +/* XPM */
    58.5 +static const char *flag_note_xpm[] = {
    58.6 +/* columns rows colors chars-per-pixel */
    58.7 +"14 17 8 1",
    58.8 +"  c Gray100",
    58.9 +". c #8b8bfd",
   58.10 +"X c #3c3cfd",
   58.11 +"o c #000082",
   58.12 +"O c Gray0",
   58.13 +"+ c None",
   58.14 +"@ c Gray0",
   58.15 +"# c Gray0",
   58.16 +/* pixels */
   58.17 +"++++++++++++++",
   58.18 +"oooooooo++++++",
   58.19 +"o      oo+++++",
   58.20 +"o OOOO oXo++++",
   58.21 +"o      o.Xo+++",
   58.22 +"o OOOO o .Xo++",
   58.23 +"o      oooooo+",
   58.24 +"o OOOO      o+",
   58.25 +"o           o+",
   58.26 +"o OOOOOOOOO o+",
   58.27 +"o           o+",
   58.28 +"o OOOOOOOOO o+",
   58.29 +"o           o+",
   58.30 +"o OOOOOOOOO o+",
   58.31 +"o           o+",
   58.32 +"ooooooooooooo+",
   58.33 +"++++++++++++++"
   58.34 +};
    59.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    59.2 +++ b/icons/flag-questionmark.xpm	Sun Jan 30 12:59:10 2005 +0000
    59.3 @@ -0,0 +1,22 @@
    59.4 +/* XPM */
    59.5 +static const char * flag_questionmark_xpm[] = {
    59.6 +"14 17 2 1",
    59.7 +" 	c None",
    59.8 +".	c #FF0000",
    59.9 +"   ......     ",
   59.10 +"  .........   ",
   59.11 +"   .........  ",
   59.12 +"         ...  ",
   59.13 +"         ...  ",
   59.14 +"        ....  ",
   59.15 +"      .....   ",
   59.16 +"     .....    ",
   59.17 +"     ....     ",
   59.18 +"      ..      ",
   59.19 +"      ..      ",
   59.20 +"      ..      ",
   59.21 +"      ..      ",
   59.22 +"              ",
   59.23 +"       .      ",
   59.24 +"      ...     ",
   59.25 +"       .      "};
    60.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    60.2 +++ b/icons/flag-scrolled-right.xpm	Sun Jan 30 12:59:10 2005 +0000
    60.3 @@ -0,0 +1,30 @@
    60.4 +/* XPM */
    60.5 +static char * flag_scrolled_right_xpm[] = {
    60.6 +"22 22 5 1",
    60.7 +" 	c None",
    60.8 +".	c #000000",
    60.9 +"+	c #FFFFFF",
   60.10 +"@	c #898989",
   60.11 +"#	c #0000FF",
   60.12 +"  ..................  ",
   60.13 +" .++++++++++++++.@@@. ",
   60.14 +".++++++++++++++.@@@@@.",
   60.15 +".++++++++++++++.@@@@@.",
   60.16 +".++++++++++++++.@@@@@.",
   60.17 +".##++++++++++++..@@@.@",
   60.18 +".++#+++++++++++.@...@@",
   60.19 +".++#+++++++++++.@@@@@ ",
   60.20 +".###+++++++++##.@@@@  ",
   60.21 +".++#++....++#++.@@    ",
   60.22 +".+++##.++.##+++.@@    ",
   60.23 +".++#++....++#++.@@    ",
   60.24 +".###+++++++++##.@@    ",
   60.25 +".++#+++++++++++.@@    ",
   60.26 +".++#+++++++++++.@@    ",
   60.27 +".##++++++++++++.@@    ",
   60.28 +".++++++++++++++.@@    ",
   60.29 +"................@@    ",
   60.30 +"  @@@@@@@@@@@@@@@@    ",
   60.31 +"  @@@@@@@@@@@@@@@@    ",
   60.32 +"                      ",
   60.33 +"                      "};
    61.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    61.2 +++ b/icons/flag-smiley-good.xpm	Sun Jan 30 12:59:10 2005 +0000
    61.3 @@ -0,0 +1,28 @@
    61.4 +/* XPM */
    61.5 +static char * flag_smiley_good_xpm[] = {
    61.6 +"22 22 3 1",
    61.7 +" 	c None",
    61.8 +".	c #000000",
    61.9 +"+	c #FFF200",
   61.10 +"                      ",
   61.11 +"                      ",
   61.12 +"        ......        ",
   61.13 +"      ...++++...      ",
   61.14 +"    ...++++++++...    ",
   61.15 +"    .++++++++++++.    ",
   61.16 +"   ..++++++++++++..   ",
   61.17 +"   .++++.++++.++++.   ",
   61.18 +"  ..++++.++++.++++..  ",
   61.19 +"  .+++++.++++.+++++.  ",
   61.20 +"  .+++++.++++.+++++.  ",
   61.21 +"  .++++++++++++++++.  ",
   61.22 +"  .++.++++++++++.++.  ",
   61.23 +"  ..++.++++++++.++..  ",
   61.24 +"   .+++.++++++.+++.   ",
   61.25 +"   ..+++......+++..   ",
   61.26 +"    .++++++++++++.    ",
   61.27 +"    ...++++++++...    ",
   61.28 +"      ...++++...      ",
   61.29 +"        ......        ",
   61.30 +"                      ",
   61.31 +"                      "};
    62.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    62.2 +++ b/icons/flag-smiley-sad.xpm	Sun Jan 30 12:59:10 2005 +0000
    62.3 @@ -0,0 +1,28 @@
    62.4 +/* XPM */
    62.5 +static char * flag_smiley_sad_xpm[] = {
    62.6 +"22 22 3 1",
    62.7 +" 	c None",
    62.8 +".	c #000000",
    62.9 +"+	c #FFF200",
   62.10 +"                      ",
   62.11 +"                      ",
   62.12 +"        ......        ",
   62.13 +"      ...++++...      ",
   62.14 +"    ...++++++++...    ",
   62.15 +"    .++++++++++++.    ",
   62.16 +"   ..++++++++++++..   ",
   62.17 +"   .++++.++++.++++.   ",
   62.18 +"  ..++++.++++.++++..  ",
   62.19 +"  .+++++.++++.+++++.  ",
   62.20 +"  .+++++.++++.+++++.  ",
   62.21 +"  .++++++++++++++++.  ",
   62.22 +"  .++++++++++++++++.  ",
   62.23 +"  ..++++......++++..  ",
   62.24 +"   .+++.++++++.+++.   ",
   62.25 +"   ..+.++++++++.+..   ",
   62.26 +"    .++++++++++++.    ",
   62.27 +"    ...++++++++...    ",
   62.28 +"      ...++++...      ",
   62.29 +"        ......        ",
   62.30 +"                      ",
   62.31 +"                      "};
    63.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    63.2 +++ b/icons/flag-stopsign.xpm	Sun Jan 30 12:59:10 2005 +0000
    63.3 @@ -0,0 +1,28 @@
    63.4 +/* XPM */
    63.5 +static const char * flag_stopsign_xpm[] = {
    63.6 +"22 22 3 1",
    63.7 +" 	c None",
    63.8 +".	c #FF0000",
    63.9 +"+	c #FFFFFF",
   63.10 +"                      ",
   63.11 +"       ..........     ",
   63.12 +"      ............    ",
   63.13 +"     ..............   ",
   63.14 +"    ................  ",
   63.15 +"   .................. ",
   63.16 +"   .................. ",
   63.17 +"   .................. ",
   63.18 +"   .+++.+++..++..+++. ",
   63.19 +"   .+....+..+..+.+.+. ",
   63.20 +"   .+++..+..+..+.+++. ",
   63.21 +"   ...+..+..+..+.+... ",
   63.22 +"   .+++..+...++..+... ",
   63.23 +"   .................. ",
   63.24 +"   .................. ",
   63.25 +"    ................  ",
   63.26 +"     ..............   ",
   63.27 +"      ............    ",
   63.28 +"       ..........     ",
   63.29 +"                      ",
   63.30 +"                      ",
   63.31 +"                      "};
    64.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    64.2 +++ b/icons/flag-thumb-down.xpm	Sun Jan 30 12:59:10 2005 +0000
    64.3 @@ -0,0 +1,28 @@
    64.4 +/* XPM */
    64.5 +static char * flag_thumb_down_xpm[] = {
    64.6 +"22 22 3 1",
    64.7 +" 	c None",
    64.8 +".	c #000000",
    64.9 +"+	c #FFCA4F",
   64.10 +"       .....++++++    ",
   64.11 +"       .++++.+++++    ",
   64.12 +"      ......++++++    ",
   64.13 +"     .+++++.++++++    ",
   64.14 +"     .++++..++++++    ",
   64.15 +"     .....++++++++    ",
   64.16 +"    .+++++.++++++.    ",
   64.17 +"    .+++++.++++++.    ",
   64.18 +"     .....+++++++.    ",
   64.19 +"    .+++++.++++++.    ",
   64.20 +"    .+++++.+++++.     ",
   64.21 +"     .....++++++.     ",
   64.22 +"      .+++.+++++.     ",
   64.23 +"       .....++++.     ",
   64.24 +"           .+++.      ",
   64.25 +"          .++++.      ",
   64.26 +"          .++++.      ",
   64.27 +"          .+++.       ",
   64.28 +"           .++.       ",
   64.29 +"           .++.       ",
   64.30 +"           .++.       ",
   64.31 +"            ...       "};
    65.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    65.2 +++ b/icons/flag-thumb-up.xpm	Sun Jan 30 12:59:10 2005 +0000
    65.3 @@ -0,0 +1,28 @@
    65.4 +/* XPM */
    65.5 +static char * flag_thumb_up_xpm[] = {
    65.6 +"22 22 3 1",
    65.7 +" 	c None",
    65.8 +".	c #000000",
    65.9 +"+	c #FFCA4F",
   65.10 +"            ...       ",
   65.11 +"           .++.       ",
   65.12 +"           .++.       ",
   65.13 +"           .++.       ",
   65.14 +"          .+++.       ",
   65.15 +"          .++++.      ",
   65.16 +"          .++++.      ",
   65.17 +"           .+++.      ",
   65.18 +"       .....++++.     ",
   65.19 +"      .+++.+++++.     ",
   65.20 +"     .....++++++.     ",
   65.21 +"    .+++++.+++++.     ",
   65.22 +"    .+++++.++++++.    ",
   65.23 +"     .....+++++++.    ",
   65.24 +"    .+++++.++++++.    ",
   65.25 +"    .+++++.++++++.    ",
   65.26 +"     .....++++++++    ",
   65.27 +"     .++++..++++++    ",
   65.28 +"     .+++++.++++++    ",
   65.29 +"      ......++++++    ",
   65.30 +"       .++++.+++++    ",
   65.31 +"       .....++++++    "};
    66.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    66.2 +++ b/icons/flag-tmpUnscrolled-right.xpm	Sun Jan 30 12:59:10 2005 +0000
    66.3 @@ -0,0 +1,31 @@
    66.4 +/* XPM */
    66.5 +static char * flag_tmpUnscrolled_right_xpm[] = {
    66.6 +"22 22 6 1",
    66.7 +" 	c None",
    66.8 +".	c #000000",
    66.9 +"+	c #FFFFFF",
   66.10 +"@	c #898989",
   66.11 +"#	c #0037FF",
   66.12 +"$	c #FFEE00",
   66.13 +"  ..................  ",
   66.14 +" .++++++++++++++.@@@. ",
   66.15 +".++++++++++++++.@@@@@.",
   66.16 +".++++++++++++++.@@@@@.",
   66.17 +".++++++++++++++.@@@@@.",
   66.18 +".++++++++++++++..@@@.@",
   66.19 +".++++++++++++++.@...@@",
   66.20 +".++..........++.@@@@@ ",
   66.21 +".++.########.@+.@@@@  ",
   66.22 +".++.########.@+.@@    ",
   66.23 +".++.$$$$$$$$.@+.@@    ",
   66.24 +".+++.$$$$$$.@@+.@@    ",
   66.25 +".+++..$$$$.@@++.@@    ",
   66.26 +".++++..$$.@@+++.@@    ",
   66.27 +".+++++.$$.@@+++.@@    ",
   66.28 +".++++.####.@@@+.@@    ",
   66.29 +".+++.##$$##.@@+.@@    ",
   66.30 +"....########.@..@@    ",
   66.31 +"  @.###$$###.@@@@@    ",
   66.32 +"  @.$$$$$$$$.@@@@@    ",
   66.33 +"   ..........@        ",
   66.34 +"    @@@@@@@@@@        "};
    67.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    67.2 +++ b/icons/flag-url.xpm	Sun Jan 30 12:59:10 2005 +0000
    67.3 @@ -0,0 +1,222 @@
    67.4 +/* XPM */
    67.5 +static char * flag_url_xpm[] = {
    67.6 +"22 22 197 2",
    67.7 +"  	c None",
    67.8 +". 	c #000000",
    67.9 +"+ 	c #29673B",
   67.10 +"@ 	c #21D167",
   67.11 +"# 	c #010105",
   67.12 +"$ 	c #2A30C6",
   67.13 +"% 	c #040515",
   67.14 +"& 	c #1B626A",
   67.15 +"* 	c #2CFF00",
   67.16 +"= 	c #202496",
   67.17 +"- 	c #211A9D",
   67.18 +"; 	c #1F447C",
   67.19 +"> 	c #273D8B",
   67.20 +", 	c #111E34",
   67.21 +"' 	c #06071E",
   67.22 +") 	c #1C208C",
   67.23 +"! 	c #6D785C",
   67.24 +"~ 	c #24F128",
   67.25 +"{ 	c #1A14A0",
   67.26 +"] 	c #2A3989",
   67.27 +"^ 	c #1800C0",
   67.28 +"/ 	c #20BF14",
   67.29 +"( 	c #2C5B3F",
   67.30 +"_ 	c #1D784E",
   67.31 +": 	c #262BB4",
   67.32 +"< 	c #1E2292",
   67.33 +"[ 	c #363AC6",
   67.34 +"} 	c #3B3FCF",
   67.35 +"| 	c #0C258B",
   67.36 +"1 	c #3CCC36",
   67.37 +"2 	c #48E527",
   67.38 +"3 	c #249058",
   67.39 +"4 	c #42DC30",
   67.40 +"5 	c #32934D",
   67.41 +"6 	c #25976A",
   67.42 +"7 	c #1A4245",
   67.43 +"8 	c #0D0F3D",
   67.44 +"9 	c #181B71",
   67.45 +"0 	c #5559FF",
   67.46 +"a 	c #5155FF",
   67.47 +"b 	c #6408FF",
   67.48 +"c 	c #28FF20",
   67.49 +"d 	c #19FF11",
   67.50 +"e 	c #51A249",
   67.51 +"f 	c #2AFF00",
   67.52 +"g 	c #2B5648",
   67.53 +"h 	c #060100",
   67.54 +"i 	c #111452",
   67.55 +"j 	c #13177A",
   67.56 +"k 	c #4549E6",
   67.57 +"l 	c #5B5FFF",
   67.58 +"m 	c #000086",
   67.59 +"n 	c #794771",
   67.60 +"o 	c #33E62B",
   67.61 +"p 	c #2EFF00",
   67.62 +"q 	c #20FF08",
   67.63 +"r 	c #28006A",
   67.64 +"s 	c #24BA53",
   67.65 +"t 	c #2428A0",
   67.66 +"u 	c #3539C2",
   67.67 +"v 	c #4C50F5",
   67.68 +"w 	c #3D41D4",
   67.69 +"x 	c #27FF1F",
   67.70 +"y 	c #2BF823",
   67.71 +"z 	c #1D2899",
   67.72 +"A 	c #368253",
   67.73 +"B 	c #27FF1D",
   67.74 +"C 	c #2A953E",
   67.75 +"D 	c #1D2188",
   67.76 +"E 	c #9795B7",
   67.77 +"F 	c #5D61FF",
   67.78 +"G 	c #262AA4",
   67.79 +"H 	c #7A00FF",
   67.80 +"I 	c #00FF05",
   67.81 +"J 	c #74526C",
   67.82 +"K 	c #25FF1D",
   67.83 +"L 	c #73546B",
   67.84 +"M 	c #1DFF15",
   67.85 +"N 	c #0E825D",
   67.86 +"O 	c #25AF4B",
   67.87 +"P 	c #3F47FF",
   67.88 +"Q 	c #040413",
   67.89 +"R 	c #242324",
   67.90 +"S 	c #8785A7",
   67.91 +"T 	c #5357FF",
   67.92 +"U 	c #4B4FF3",
   67.93 +"V 	c #2E31FF",
   67.94 +"W 	c #94AD7A",
   67.95 +"X 	c #32E82A",
   67.96 +"Y 	c #2EF126",
   67.97 +"Z 	c #46BB3E",
   67.98 +"` 	c #31564D",
   67.99 +" .	c #249659",
  67.100 +"..	c #1A1D7B",
  67.101 +"+.	c #080A28",
  67.102 +"@.	c #010102",
  67.103 +"#.	c #201F20",
  67.104 +"$.	c #4F53FA",
  67.105 +"%.	c #5A5EFF",
  67.106 +"&.	c #4D64EB",
  67.107 +"*.	c #40E335",
  67.108 +"=.	c #20FF00",
  67.109 +"-.	c #448F3A",
  67.110 +";.	c #1CFF00",
  67.111 +">.	c #1B1F8C",
  67.112 +",.	c #4144BC",
  67.113 +"'.	c #575BFF",
  67.114 +").	c #3A3ECE",
  67.115 +"!.	c #4E60F0",
  67.116 +"~.	c #37C073",
  67.117 +"{.	c #272BA6",
  67.118 +"].	c #3E42D5",
  67.119 +"^.	c #4A4EF0",
  67.120 +"/.	c #3236BC",
  67.121 +"(.	c #22269F",
  67.122 +"_.	c #02020A",
  67.123 +":.	c #908EC8",
  67.124 +"<.	c #171B83",
  67.125 +"[.	c #5458FF",
  67.126 +"}.	c #5256FF",
  67.127 +"|.	c #630CFF",
  67.128 +"1.	c #21FF00",
  67.129 +"2.	c #5A50FF",
  67.130 +"3.	c #476D67",
  67.131 +"4.	c #6339FF",
  67.132 +"5.	c #211C9C",
  67.133 +"6.	c #262BB1",
  67.134 +"7.	c #2227A1",
  67.135 +"8.	c #3F45FD",
  67.136 +"9.	c #060606",
  67.137 +"0.	c #464AE7",
  67.138 +"a.	c #4E52F9",
  67.139 +"b.	c #1A00A0",
  67.140 +"c.	c #39AC6E",
  67.141 +"d.	c #29FF0B",
  67.142 +"e.	c #26358C",
  67.143 +"f.	c #22367A",
  67.144 +"g.	c #236261",
  67.145 +"h.	c #112920",
  67.146 +"i.	c #0B0C32",
  67.147 +"j.	c #070B7E",
  67.148 +"k.	c #4044DB",
  67.149 +"l.	c #565AFF",
  67.150 +"m.	c #393DCB",
  67.151 +"n.	c #104858",
  67.152 +"o.	c #080C63",
  67.153 +"p.	c #474BEA",
  67.154 +"q.	c #5E62FF",
  67.155 +"r.	c #2D31B3",
  67.156 +"s.	c #237A6B",
  67.157 +"t.	c #004D21",
  67.158 +"u.	c #1F744D",
  67.159 +"v.	c #285D49",
  67.160 +"w.	c #3F9474",
  67.161 +"x.	c #3438C1",
  67.162 +"y.	c #474BE9",
  67.163 +"z.	c #3135BA",
  67.164 +"A.	c #4F53FB",
  67.165 +"B.	c #595DFF",
  67.166 +"C.	c #244B6E",
  67.167 +"D.	c #408649",
  67.168 +"E.	c #24674B",
  67.169 +"F.	c #16362B",
  67.170 +"G.	c #11261E",
  67.171 +"H.	c #0E1270",
  67.172 +"I.	c #131779",
  67.173 +"J.	c #4448E2",
  67.174 +"K.	c #23397A",
  67.175 +"L.	c #245749",
  67.176 +"M.	c #2C5C2B",
  67.177 +"N.	c #AAA59B",
  67.178 +"O.	c #2328DB",
  67.179 +"P.	c #0A0E66",
  67.180 +"Q.	c #676BFF",
  67.181 +"R.	c #2629A4",
  67.182 +"S.	c #00001D",
  67.183 +"T.	c #0D116C",
  67.184 +"U.	c #2429AD",
  67.185 +"V.	c #327259",
  67.186 +"W.	c #3A876A",
  67.187 +"X.	c #676998",
  67.188 +"Y.	c #4D51F5",
  67.189 +"Z.	c #5F63FF",
  67.190 +"`.	c #252B9F",
  67.191 +" +	c #212598",
  67.192 +".+	c #171862",
  67.193 +"++	c #2C654F",
  67.194 +"@+	c #112B23",
  67.195 +"#+	c #000085",
  67.196 +"$+	c #000095",
  67.197 +"%+	c #2227A4",
  67.198 +"&+	c #030000",
  67.199 +"*+	c #000047",
  67.200 +"=+	c #353996",
  67.201 +"-+	c #373A98",
  67.202 +";+	c #313277",
  67.203 +">+	c #222894",
  67.204 +"            . + @ # $ % . . .               ",
  67.205 +"          & * = = = - ; > , . '             ",
  67.206 +"        = ) ! ~ { ] ^ / ( _ : . .           ",
  67.207 +"      < [ } | 1 2 3 4 5 6 7 8 9 . .         ",
  67.208 +"    = 0 [ a b c d e f = g & h i = . .       ",
  67.209 +"  j k a l a m c n o p q r s = = . . .       ",
  67.210 +"  t u v w a b c x y z A B C = = D $ . .     ",
  67.211 +"E F G a a a H I J K L M N O = = = P Q . R   ",
  67.212 +"S T U a a a V W X Y M Z `  .= = ..+.@.. #.  ",
  67.213 +"S $.%.a a a a &.c *.=.-.;.>.= = = . . . ,.  ",
  67.214 +"S '.).a a a a !.~.c {.].^./.= = = (._.. #.  ",
  67.215 +":.<.[.a a a a }.|.1.2.3.4.= = 5.6.. 7.8.9.  ",
  67.216 +"  <.0.a a a a a.a a b.c.d.e.f.g.h.. i..     ",
  67.217 +"  j.k.l.m.a n.a o.p.q.r.= s.t.u.v.w.. .     ",
  67.218 +"    /.x.y.a z.A.B.} q.{.).C.D.E.F.. G.      ",
  67.219 +"      0 [ a a a H.a I.J.= K.L.M.c .         ",
  67.220 +"      N.O.P.Q.R.S.%.T.[.= U.. V.W.          ",
  67.221 +"        X.Y.Z.`.F  += = = .+++@+            ",
  67.222 +"            #+$+= = = %+&+*+.               ",