1.1 --- a/doxygen.config Wed Oct 29 17:42:34 2008 +0000
1.2 +++ b/doxygen.config Tue Nov 04 12:09:10 2008 +0000
1.3 @@ -1,4 +1,4 @@
1.4 -# Doxyfile 1.5.0
1.5 +# Doxyfile 1.5.5
1.6
1.7 # This file describes the settings to be used by the documentation system
1.8 # doxygen (www.doxygen.org) for a project
1.9 @@ -14,10 +14,18 @@
1.10 # Project related configuration options
1.11 #---------------------------------------------------------------------------
1.12
1.13 +# This tag specifies the encoding used for all characters in the config file
1.14 +# that follow. The default is UTF-8 which is also the encoding used for all
1.15 +# text before the first occurrence of this tag. Doxygen uses libiconv (or the
1.16 +# iconv built into libc) for the transcoding. See
1.17 +# http://www.gnu.org/software/libiconv for the list of possible encodings.
1.18 +
1.19 +DOXYFILE_ENCODING = UTF-8
1.20 +
1.21 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded
1.22 # by quotes) that should identify the project.
1.23
1.24 -PROJECT_NAME = "VYM - View Your Mind"
1.25 +PROJECT_NAME =
1.26
1.27 # The PROJECT_NUMBER tag can be used to enter a project or revision number.
1.28 # This could be handy for archiving the generated documentation or
1.29 @@ -30,7 +38,7 @@
1.30 # If a relative path is entered, it will be relative to the location
1.31 # where doxygen was started. If left blank the current directory will be used.
1.32
1.33 -OUTPUT_DIRECTORY = doc
1.34 +OUTPUT_DIRECTORY =
1.35
1.36 # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
1.37 # 4096 sub-directories (in 2 levels) under the output directory of each output
1.38 @@ -46,23 +54,14 @@
1.39 # information to generate all constant output in the proper language.
1.40 # The default language is English, other supported languages are:
1.41 # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
1.42 -# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian,
1.43 -# Italian, Japanese, Japanese-en (Japanese with English messages), Korean,
1.44 -# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian,
1.45 -# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
1.46 +# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek,
1.47 +# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages),
1.48 +# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish,
1.49 +# Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish,
1.50 +# and Ukrainian.
1.51
1.52 OUTPUT_LANGUAGE = English
1.53
1.54 -# This tag can be used to specify the encoding used in the generated output.
1.55 -# The encoding is not always determined by the language that is chosen,
1.56 -# but also whether or not the output is meant for Windows or non-Windows users.
1.57 -# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES
1.58 -# forces the Windows encoding (this is the default for the Windows binary),
1.59 -# whereas setting the tag to NO uses a Unix-style encoding (the default for
1.60 -# all platforms other than Windows).
1.61 -
1.62 -USE_WINDOWS_ENCODING = NO
1.63 -
1.64 # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
1.65 # include brief member descriptions after the members that are listed in
1.66 # the file and class documentation (similar to JavaDoc).
1.67 @@ -135,11 +134,19 @@
1.68 # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
1.69 # will interpret the first line (until the first dot) of a JavaDoc-style
1.70 # comment as the brief description. If set to NO, the JavaDoc
1.71 -# comments will behave just like the Qt-style comments (thus requiring an
1.72 -# explicit @brief command for a brief description.
1.73 +# comments will behave just like regular Qt-style comments
1.74 +# (thus requiring an explicit @brief command for a brief description.)
1.75
1.76 JAVADOC_AUTOBRIEF = NO
1.77
1.78 +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
1.79 +# interpret the first line (until the first dot) of a Qt-style
1.80 +# comment as the brief description. If set to NO, the comments
1.81 +# will behave just like regular Qt-style comments (thus requiring
1.82 +# an explicit \brief command for a brief description.)
1.83 +
1.84 +QT_AUTOBRIEF = NO
1.85 +
1.86 # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
1.87 # treat a multi-line C++ special comment block (i.e. a block of //! or ///
1.88 # comments) as a brief description. This used to be the default behaviour.
1.89 @@ -189,14 +196,26 @@
1.90 OPTIMIZE_OUTPUT_FOR_C = NO
1.91
1.92 # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
1.93 -# sources only. Doxygen will then generate output that is more tailored for Java.
1.94 -# For instance, namespaces will be presented as packages, qualified scopes
1.95 -# will look different, etc.
1.96 +# sources only. Doxygen will then generate output that is more tailored for
1.97 +# Java. For instance, namespaces will be presented as packages, qualified
1.98 +# scopes will look different, etc.
1.99
1.100 OPTIMIZE_OUTPUT_JAVA = NO
1.101
1.102 -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to
1.103 -# include (a tag file for) the STL sources as input, then you should
1.104 +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
1.105 +# sources only. Doxygen will then generate output that is more tailored for
1.106 +# Fortran.
1.107 +
1.108 +OPTIMIZE_FOR_FORTRAN = NO
1.109 +
1.110 +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
1.111 +# sources. Doxygen will then generate output that is tailored for
1.112 +# VHDL.
1.113 +
1.114 +OPTIMIZE_OUTPUT_VHDL = NO
1.115 +
1.116 +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
1.117 +# to include (a tag file for) the STL sources as input, then you should
1.118 # set this tag to YES in order to let doxygen match functions declarations and
1.119 # definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
1.120 # func(std::string) {}). This also make the inheritance and collaboration
1.121 @@ -204,6 +223,17 @@
1.122
1.123 BUILTIN_STL_SUPPORT = NO
1.124
1.125 +# If you use Microsoft's C++/CLI language, you should set this option to YES to
1.126 +# enable parsing support.
1.127 +
1.128 +CPP_CLI_SUPPORT = NO
1.129 +
1.130 +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
1.131 +# Doxygen will parse them like normal C++ but will assume all classes use public
1.132 +# instead of private inheritance when no explicit protection keyword is present.
1.133 +
1.134 +SIP_SUPPORT = NO
1.135 +
1.136 # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
1.137 # tag is set to YES, then doxygen will reuse the documentation of the first
1.138 # member in the group (if any) for the other members of the group. By default
1.139 @@ -219,6 +249,16 @@
1.140
1.141 SUBGROUPING = YES
1.142
1.143 +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
1.144 +# is documented as struct, union, or enum with the name of the typedef. So
1.145 +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
1.146 +# with name TypeT. When disabled the typedef will appear as a member of a file,
1.147 +# namespace, or class. And the struct will be named TypeS. This can typically
1.148 +# be useful for C code in case the coding convention dictates that all compound
1.149 +# types are typedef'ed and only the typedef is referenced, never the tag name.
1.150 +
1.151 +TYPEDEF_HIDES_STRUCT = NO
1.152 +
1.153 #---------------------------------------------------------------------------
1.154 # Build related configuration options
1.155 #---------------------------------------------------------------------------
1.156 @@ -253,6 +293,14 @@
1.157
1.158 EXTRACT_LOCAL_METHODS = NO
1.159
1.160 +# If this flag is set to YES, the members of anonymous namespaces will be
1.161 +# extracted and appear in the documentation as a namespace called
1.162 +# 'anonymous_namespace{file}', where file will be replaced with the base
1.163 +# name of the file that contains the anonymous namespace. By default
1.164 +# anonymous namespace are hidden.
1.165 +
1.166 +EXTRACT_ANON_NSPACES = NO
1.167 +
1.168 # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
1.169 # undocumented members of documented classes, files or namespaces.
1.170 # If set to NO (the default) these members will be included in the
1.171 @@ -328,6 +376,12 @@
1.172
1.173 SORT_BRIEF_DOCS = NO
1.174
1.175 +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
1.176 +# hierarchy of group names into alphabetical order. If set to NO (the default)
1.177 +# the group names will appear in their defined order.
1.178 +
1.179 +SORT_GROUP_NAMES = NO
1.180 +
1.181 # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
1.182 # sorted by fully-qualified names, including namespaces. If set to
1.183 # NO (the default), the class list will be sorted only by class name,
1.184 @@ -390,8 +444,8 @@
1.185 SHOW_DIRECTORIES = NO
1.186
1.187 # The FILE_VERSION_FILTER tag can be used to specify a program or script that
1.188 -# doxygen should invoke to get the current version for each file (typically from the
1.189 -# version control system). Doxygen will invoke the program by executing (via
1.190 +# doxygen should invoke to get the current version for each file (typically from
1.191 +# the version control system). Doxygen will invoke the program by executing (via
1.192 # popen()) the command <command> <input-file>, where <command> is the value of
1.193 # the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
1.194 # provided by doxygen. Whatever the program writes to standard output
1.195 @@ -461,12 +515,20 @@
1.196
1.197 INPUT =
1.198
1.199 +# This tag can be used to specify the character encoding of the source files
1.200 +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
1.201 +# also the default input encoding. Doxygen uses libiconv (or the iconv built
1.202 +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
1.203 +# the list of possible encodings.
1.204 +
1.205 +INPUT_ENCODING = UTF-8
1.206 +
1.207 # If the value of the INPUT tag contains directories, you can use the
1.208 # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
1.209 # and *.h) to filter out the source-files in the directories. If left
1.210 # blank the following patterns are tested:
1.211 # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
1.212 -# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
1.213 +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
1.214
1.215 FILE_PATTERNS =
1.216
1.217 @@ -494,7 +556,15 @@
1.218 # against the file with absolute path, so to exclude all test directories
1.219 # for example use the pattern */test/*
1.220
1.221 -EXCLUDE_PATTERNS = moc_*
1.222 +EXCLUDE_PATTERNS =
1.223 +
1.224 +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
1.225 +# (namespaces, classes, functions, etc.) that should be excluded from the
1.226 +# output. The symbol name can be a fully qualified name, a word, or if the
1.227 +# wildcard * is used, a substring. Examples: ANamespace, AClass,
1.228 +# AClass::ANamespace, ANamespace::*Test
1.229 +
1.230 +EXCLUDE_SYMBOLS =
1.231
1.232 # The EXAMPLE_PATH tag can be used to specify one or more files or
1.233 # directories that contain example code fragments that are included (see
1.234 @@ -573,13 +643,13 @@
1.235 # then for each documented function all documented
1.236 # functions referencing it will be listed.
1.237
1.238 -REFERENCED_BY_RELATION = YES
1.239 +REFERENCED_BY_RELATION = NO
1.240
1.241 # If the REFERENCES_RELATION tag is set to YES (the default)
1.242 # then for each documented function all documented entities
1.243 # called/used by that function will be listed.
1.244
1.245 -REFERENCES_RELATION = YES
1.246 +REFERENCES_RELATION = NO
1.247
1.248 # If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
1.249 # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
1.250 @@ -675,11 +745,44 @@
1.251
1.252 # If the GENERATE_HTMLHELP tag is set to YES, additional index files
1.253 # will be generated that can be used as input for tools like the
1.254 -# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
1.255 +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
1.256 # of the generated HTML documentation.
1.257
1.258 GENERATE_HTMLHELP = NO
1.259
1.260 +# If the GENERATE_DOCSET tag is set to YES, additional index files
1.261 +# will be generated that can be used as input for Apple's Xcode 3
1.262 +# integrated development environment, introduced with OSX 10.5 (Leopard).
1.263 +# To create a documentation set, doxygen will generate a Makefile in the
1.264 +# HTML output directory. Running make will produce the docset in that
1.265 +# directory and running "make install" will install the docset in
1.266 +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
1.267 +# it at startup.
1.268 +
1.269 +GENERATE_DOCSET = NO
1.270 +
1.271 +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
1.272 +# feed. A documentation feed provides an umbrella under which multiple
1.273 +# documentation sets from a single provider (such as a company or product suite)
1.274 +# can be grouped.
1.275 +
1.276 +DOCSET_FEEDNAME = "Doxygen generated docs"
1.277 +
1.278 +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
1.279 +# should uniquely identify the documentation set bundle. This should be a
1.280 +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
1.281 +# will append .docset to the name.
1.282 +
1.283 +DOCSET_BUNDLE_ID = org.doxygen.Project
1.284 +
1.285 +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
1.286 +# documentation will contain sections that can be hidden and shown after the
1.287 +# page has loaded. For this to work a browser that supports
1.288 +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
1.289 +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
1.290 +
1.291 +HTML_DYNAMIC_SECTIONS = NO
1.292 +
1.293 # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
1.294 # be used to specify the file name of the resulting .chm file. You
1.295 # can add a path in front of the file if the result should not be
1.296 @@ -744,7 +847,7 @@
1.297 # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
1.298 # generate Latex output.
1.299
1.300 -GENERATE_LATEX = NO
1.301 +GENERATE_LATEX = YES
1.302
1.303 # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
1.304 # If a relative path is entered the value of OUTPUT_DIRECTORY will be
1.305 @@ -792,13 +895,13 @@
1.306 # contain links (just like the HTML output) instead of page references
1.307 # This makes the output suitable for online browsing using a pdf viewer.
1.308
1.309 -PDF_HYPERLINKS = NO
1.310 +PDF_HYPERLINKS = YES
1.311
1.312 # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
1.313 # plain latex in the generated Makefile. Set this option to YES to get a
1.314 # higher quality PDF documentation.
1.315
1.316 -USE_PDFLATEX = NO
1.317 +USE_PDFLATEX = YES
1.318
1.319 # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
1.320 # command to the generated LaTeX files. This will instruct LaTeX to keep
1.321 @@ -1085,6 +1188,15 @@
1.322
1.323 CLASS_DIAGRAMS = YES
1.324
1.325 +# You can define message sequence charts within doxygen comments using the \msc
1.326 +# command. Doxygen will then run the mscgen tool (see
1.327 +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
1.328 +# documentation. The MSCGEN_PATH tag allows you to specify the directory where
1.329 +# the mscgen tool resides. If left empty the tool is assumed to be found in the
1.330 +# default search path.
1.331 +
1.332 +MSCGEN_PATH =
1.333 +
1.334 # If set to YES, the inheritance and collaboration graphs will hide
1.335 # inheritance and usage relations if the target is undocumented
1.336 # or is not a class.
1.337 @@ -1142,19 +1254,19 @@
1.338
1.339 INCLUDED_BY_GRAPH = YES
1.340
1.341 -# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
1.342 -# generate a call dependency graph for every global function or class method.
1.343 -# Note that enabling this option will significantly increase the time of a run.
1.344 -# So in most cases it will be better to enable call graphs for selected
1.345 -# functions only using the \callgraph command.
1.346 +# If the CALL_GRAPH and HAVE_DOT options are set to YES then
1.347 +# doxygen will generate a call dependency graph for every global function
1.348 +# or class method. Note that enabling this option will significantly increase
1.349 +# the time of a run. So in most cases it will be better to enable call graphs
1.350 +# for selected functions only using the \callgraph command.
1.351
1.352 CALL_GRAPH = NO
1.353
1.354 -# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will
1.355 -# generate a caller dependency graph for every global function or class method.
1.356 -# Note that enabling this option will significantly increase the time of a run.
1.357 -# So in most cases it will be better to enable caller graphs for selected
1.358 -# functions only using the \callergraph command.
1.359 +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
1.360 +# doxygen will generate a caller dependency graph for every global function
1.361 +# or class method. Note that enabling this option will significantly increase
1.362 +# the time of a run. So in most cases it will be better to enable caller
1.363 +# graphs for selected functions only using the \callergraph command.
1.364
1.365 CALLER_GRAPH = NO
1.366
1.367 @@ -1187,41 +1299,33 @@
1.368
1.369 DOTFILE_DIRS =
1.370
1.371 -# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
1.372 -# (in pixels) of the graphs generated by dot. If a graph becomes larger than
1.373 -# this value, doxygen will try to truncate the graph, so that it fits within
1.374 -# the specified constraint. Beware that most browsers cannot cope with very
1.375 -# large images.
1.376 +# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
1.377 +# nodes that will be shown in the graph. If the number of nodes in a graph
1.378 +# becomes larger than this value, doxygen will truncate the graph, which is
1.379 +# visualized by representing a node as a red box. Note that doxygen if the
1.380 +# number of direct children of the root node in a graph is already larger than
1.381 +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
1.382 +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
1.383
1.384 -MAX_DOT_GRAPH_WIDTH = 1024
1.385 -
1.386 -# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
1.387 -# (in pixels) of the graphs generated by dot. If a graph becomes larger than
1.388 -# this value, doxygen will try to truncate the graph, so that it fits within
1.389 -# the specified constraint. Beware that most browsers cannot cope with very
1.390 -# large images.
1.391 -
1.392 -MAX_DOT_GRAPH_HEIGHT = 1024
1.393 +DOT_GRAPH_MAX_NODES = 50
1.394
1.395 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
1.396 # graphs generated by dot. A depth value of 3 means that only nodes reachable
1.397 # from the root by following a path via at most 3 edges will be shown. Nodes
1.398 # that lay further from the root node will be omitted. Note that setting this
1.399 # option to 1 or 2 may greatly reduce the computation time needed for large
1.400 -# code bases. Also note that a graph may be further truncated if the graph's
1.401 -# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH
1.402 -# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default),
1.403 -# the graph is not depth-constrained.
1.404 +# code bases. Also note that the size of a graph can be further restricted by
1.405 +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
1.406
1.407 MAX_DOT_GRAPH_DEPTH = 0
1.408
1.409 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
1.410 -# background. This is disabled by default, which results in a white background.
1.411 -# Warning: Depending on the platform used, enabling this option may lead to
1.412 -# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
1.413 -# read).
1.414 +# background. This is enabled by default, which results in a transparent
1.415 +# background. Warning: Depending on the platform used, enabling this option
1.416 +# may lead to badly anti-aliased labels on the edges of a graph (i.e. they
1.417 +# become hard to read).
1.418
1.419 -DOT_TRANSPARENT = NO
1.420 +DOT_TRANSPARENT = YES
1.421
1.422 # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
1.423 # files in one run (i.e. multiple -o and -T options on the command line). This
2.1 --- a/mapeditor.cpp Wed Oct 29 17:42:34 2008 +0000
2.2 +++ b/mapeditor.cpp Tue Nov 04 12:09:10 2008 +0000
2.3 @@ -43,7 +43,7 @@
2.4 model=vm;
2.5 model->setScene (mapScene);
2.6 model->registerEditor(this);
2.7 - model->addMapCenter(); // FIXME create this in MapEditor until BO and MCO are independent of scene
2.8 +// model->addMapCenter(); // FIXME create this in MapEditor until BO and MCO are independent of scene
2.9 model->makeDefault(); // No changes in model so far
2.10
2.11 setScene (mapScene);
2.12 @@ -82,15 +82,18 @@
2.13
2.14 QAction *a = new QAction( tr( "Edit heading","MapEditor" ), this);
2.15 a->setShortcut ( Qt::Key_Return ); //Edit heading
2.16 - //a->setShortcutContext (Qt::WindowShortcut);
2.17 addAction (a);
2.18 connect( a, SIGNAL( triggered() ), this, SLOT( editHeading() ) );
2.19 a = new QAction( tr( "Edit heading","MapEditor" ), this);
2.20 a->setShortcut ( Qt::Key_Enter); //Edit heading
2.21 - //a->setShortcutContext (Qt::WindowShortcut);
2.22 addAction (a);
2.23 connect( a, SIGNAL( triggered() ), this, SLOT( editHeading() ) );
2.24
2.25 + // Selections
2.26 + selModel=vm->getSelectionModel();
2.27 + selectionColor =QColor (255,255,0);
2.28 +
2.29 +
2.30 // Attributes //FIXME testing only...
2.31 QString k;
2.32 AttributeDef *ad;
2.33 @@ -273,12 +276,6 @@
2.34 }
2.35 }
2.36
2.37 -void MapEditor::updateSelection()
2.38 -{
2.39 - // Tell selection to update geometries
2.40 - model->updateSelection();
2.41 -}
2.42 -
2.43 AttributeTable* MapEditor::attributeTable()
2.44 {
2.45 return attrTable;
2.46 @@ -1041,26 +1038,71 @@
2.47 event->acceptProposedAction();
2.48 }
2.49
2.50 +void MapEditor::updateSelection(const QItemSelection &newsel,const QItemSelection &)
2.51 +{
2.52 + cout << "ME::updateSelection\n";
2.53
2.54 + QGraphicsRectItem *sb;
2.55
2.56 -bool isUnicode16(const QByteArray &d)
2.57 -{
2.58 - // TODO: make more precise check for unicode 16.
2.59 - // Guess unicode16 if any of second bytes are zero
2.60 - unsigned int length = max(0,d.size()-2)/2;
2.61 - for (unsigned int i = 0; i<length ; i++)
2.62 - if (d.at(i*2+1)==0) return true;
2.63 - return false;
2.64 -}
2.65 -
2.66 + // Check if selection is empty
2.67 + if (newsel.indexes().isEmpty() )
2.68 + {
2.69 + if (!selboxList.isEmpty())
2.70 + while (!selboxList.isEmpty() )
2.71 + delete selboxList.takeFirst();
2.72 + return;
2.73 + }
2.74
2.75 -void MapEditor::setSelectionModel (QItemSelectionModel *sm)
2.76 -{
2.77 - selModel=sm;
2.78 + if (selboxList.isEmpty())
2.79 + {
2.80 + sb = mapScene->addRect(
2.81 + QRectF(0,0,0,0),
2.82 + QPen(selectionColor),
2.83 + selectionColor);
2.84 + sb->setZValue(Z_SELBOX);
2.85 + sb->show();
2.86 + selboxList.append (sb);
2.87 + } else
2.88 + sb=selboxList.first();
2.89 +
2.90 + QModelIndex index=newsel.indexes().first(); // TODO no multiselections yet
2.91 +
2.92 + TreeItem *item = static_cast<TreeItem*>(index.internalPointer());
2.93 + LinkableMapObj *lmo=item->getLMO();
2.94 +
2.95 + int w=0; // FIXME what for?
2.96 + if (lmo)
2.97 + {
2.98 + QRectF bbox=lmo->getBBox();
2.99 + selboxList.first()->setRect (
2.100 + bbox.x()-w,bbox.y()-w,
2.101 + bbox.width()+2*w, bbox.height()+2*w);
2.102 + selboxList.first()->setPen (selectionColor);
2.103 + selboxList.first()->setBrush (selectionColor);
2.104 + }
2.105 +
2.106 +
2.107 +
2.108 }
2.109
2.110 -QItemSelectionModel* MapEditor::selectionModel ()
2.111 +void MapEditor::updateSelectionGeometry() // FIXME VM only called from VM::animate...
2.112 {
2.113 - return selModel;
2.114 + cout << "ME::updateSelectionGeometry\n";
2.115 +
2.116 + // Tell selection to update geometries
2.117 + model->updateSelection();
2.118 }
2.119
2.120 +
2.121 +void MapEditor::setSelectionColor (QColor col)
2.122 +{
2.123 + selectionColor=col;
2.124 + updateSelectionGeometry();
2.125 +}
2.126 +
2.127 +QColor MapEditor::getSelectionColor ()
2.128 +{
2.129 + return selectionColor;
2.130 +}
2.131 +
2.132 +
3.1 --- a/mapeditor.h Wed Oct 29 17:42:34 2008 +0000
3.2 +++ b/mapeditor.h Tue Nov 04 12:09:10 2008 +0000
3.3 @@ -28,7 +28,6 @@
3.4 public:
3.5 void toggleStandardFlag(QString);
3.6
3.7 - void updateSelection(); // update geometry of selection
3.8
3.9 AttributeTable* attributeTable();
3.10 void testFunction1(); // just testing new stuff
3.11 @@ -92,11 +91,21 @@
3.12
3.13 QPoint exportOffset; // set before export, used in save
3.14
3.15 -public:
3.16 - void setSelectionModel (QItemSelectionModel*);
3.17 - QItemSelectionModel* selectionModel();
3.18 +//////////// Selection related
3.19 +signals:
3.20 + void selectionChanged(); // Emitted when selection or its represantion changes
3.21 +
3.22 private:
3.23 QItemSelectionModel* selModel; // we treat MapEditor as View here...
3.24 + QList <QGraphicsRectItem*> selboxList;
3.25 + QColor selectionColor;
3.26 +
3.27 +public slots:
3.28 + void updateSelection(const QItemSelection &,const QItemSelection &); // update selection
3.29 +public:
3.30 + void updateSelectionGeometry(); // update geometry of selection
3.31 + void setSelectionColor (QColor c);
3.32 + QColor getSelectionColor ();
3.33
3.34 };
3.35 #endif
4.1 --- a/selection.cpp Wed Oct 29 17:42:34 2008 +0000
4.2 +++ b/selection.cpp Tue Nov 04 12:09:10 2008 +0000
4.3 @@ -11,7 +11,6 @@
4.4
4.5 Selection::Selection()
4.6 {
4.7 - color= QColor(255,255,0);
4.8 blocked=false;
4.9 }
4.10
4.11 @@ -22,7 +21,7 @@
4.12 void Selection::setModel (VymModel *m)
4.13 {
4.14 model=m;
4.15 - scene=model->getScene();
4.16 + selModel=model->getSelectionModel();
4.17 }
4.18
4.19 void Selection::copy(const Selection &other)
4.20 @@ -37,36 +36,28 @@
4.21 lastSelectList.clear();
4.22 }
4.23
4.24 -void Selection::update() // FIXME this needs to be adapted to several views
4.25 +void Selection::update() // TODO this needs to be adapted to several views
4.26 {
4.27 QRectF bbox;
4.28 - int w=0;
4.29 + //int w=0;
4.30 for (int i=0; i< selectList.count(); ++i)
4.31 {
4.32 bbox=selectList.at(i)->getBBox();
4.33 + /* FIXME VM move to MapEditor
4.34 selboxList.at(i)->setRect (
4.35 bbox.x()-w,bbox.y()-w,
4.36 bbox.width()+2*w, bbox.height()+2*w);
4.37 selboxList.at(i)->setPen (color);
4.38 selboxList.at(i)->setBrush (color);
4.39 + */
4.40 }
4.41 }
4.42
4.43 -void Selection::setColor (QColor col)
4.44 -{
4.45 - color=col;
4.46 - update();
4.47 -}
4.48 -
4.49 -QColor Selection::getColor ()
4.50 -{
4.51 - return color;
4.52 -}
4.53 -
4.54 bool Selection::select(LinkableMapObj *lmo) // TODO no multiselections yet
4.55 {
4.56 if (!selectList.isEmpty()) unselect();
4.57 selectList.append (lmo);
4.58 + /* FIXME VM move to ME
4.59 QGraphicsRectItem *sb = scene->addRect(
4.60 QRectF(0,0,0,0),
4.61 QPen(color),
4.62 @@ -74,6 +65,7 @@
4.63 sb->setZValue(Z_SELBOX);
4.64 sb->show();
4.65 selboxList.append (sb);
4.66 + */
4.67 lmo->select();
4.68 update();
4.69 mainWindow->updateSatellites (model);
4.70 @@ -114,8 +106,10 @@
4.71 selectList.at(i)->unselect();
4.72 lastSelectList=selectList;
4.73 selectList.clear();
4.74 - while (!selboxList.isEmpty() )
4.75 + /* FIXME VM move to ME
4.76 + while (!selboxList.isEmpty() )
4.77 delete selboxList.takeFirst();
4.78 + */
4.79
4.80 }
4.81 }
4.82 @@ -188,10 +182,16 @@
4.83 TreeItem* Selection::getBranchItem()
4.84 {
4.85 BranchObj* bo=getBranch();
4.86 - if (bo) return bo->getTreeItem();
4.87 + if (bo) return bo->getTreeItem(); // FIXME VM get directly from treemodl
4.88 return NULL;
4.89 }
4.90
4.91 +QModelIndex Selection::getBranchIndex()
4.92 +{
4.93 + return selModel->selectedIndexes().first(); // TODO no multiselections yet
4.94 +
4.95 +}
4.96 +
4.97 FloatImageObj* Selection::getFloatImage()
4.98 {
4.99 if (!selectList.isEmpty())
5.1 --- a/selection.h Wed Oct 29 17:42:34 2008 +0000
5.2 +++ b/selection.h Tue Nov 04 12:09:10 2008 +0000
5.3 @@ -4,6 +4,7 @@
5.4 #include <QString>
5.5 #include <QList>
5.6 #include <QGraphicsScene>
5.7 +#include <QItemSelectionModel>
5.8
5.9 #include "treeitem.h"
5.10
5.11 @@ -24,8 +25,6 @@
5.12 void clear();
5.13 void setModel (VymModel *);
5.14 void update();
5.15 - void setColor (QColor c);
5.16 - QColor getColor ();
5.17 bool select (LinkableMapObj*);
5.18 bool select (const QString &);
5.19 bool reselect ();
5.20 @@ -40,17 +39,18 @@
5.21 LinkableMapObj * single(); // NULL, if multiple selected
5.22 BranchObj* getBranch();
5.23 TreeItem* getBranchItem();
5.24 + QModelIndex getBranchIndex(); //!< Returns index of first selected branch or mapcenter
5.25 FloatImageObj* getFloatImage();
5.26
5.27 QString getSelectString();
5.28
5.29 private:
5.30 - void init();
5.31 QList <LinkableMapObj*> selectList;
5.32 QList <LinkableMapObj*> lastSelectList;
5.33 - QList <QGraphicsRectItem*> selboxList;
5.34 +
5.35 VymModel *model;
5.36 - QGraphicsScene *scene;
5.37 +
5.38 + QItemSelectionModel *selModel; //!< QSelectionModel is shared across views and initialized in setModel
5.39
5.40 QColor color;
5.41 bool blocked; //!< if true, no new selection possible
6.1 --- a/version.h Wed Oct 29 17:42:34 2008 +0000
6.2 +++ b/version.h Tue Nov 04 12:09:10 2008 +0000
6.3 @@ -7,7 +7,7 @@
6.4 #define __VYM_VERSION "1.13.0"
6.5 //#define __VYM_CODENAME "Codename: RC-1"
6.6 #define __VYM_CODENAME "Codename: development version"
6.7 -#define __VYM_BUILD_DATE "2008-10-29"
6.8 +#define __VYM_BUILD_DATE "2008-11-04"
6.9
6.10
6.11 bool checkVersion(const QString &);
7.1 --- a/vymmodel.cpp Wed Oct 29 17:42:34 2008 +0000
7.2 +++ b/vymmodel.cpp Tue Nov 04 12:09:10 2008 +0000
7.3 @@ -86,6 +86,9 @@
7.4 // No MapEditor yet
7.5 mapEditor=NULL;
7.6
7.7 + // Also no scene yet (should not be needed anyway) FIXME VM
7.8 + mapScene=NULL;
7.9 +
7.10 // History
7.11 mapNum++;
7.12 mapChanged=false;
7.13 @@ -120,6 +123,7 @@
7.14
7.15
7.16 // selections
7.17 + selModel=NULL;
7.18 selection.setModel (this);
7.19 selection.unselect();
7.20
7.21 @@ -223,7 +227,7 @@
7.22 xml.attribut("comment",comment) +
7.23 xml.attribut("date",getDate()) +
7.24 xml.attribut("backgroundColor", mapScene->backgroundBrush().color().name() ) +
7.25 - xml.attribut("selectionColor", selection.getColor().name() ) +
7.26 + xml.attribut("selectionColor", mapEditor->getSelectionColor().name() ) +
7.27 xml.attribut("linkStyle", ls ) +
7.28 xml.attribut("linkColor", defLinkColor.name() ) +
7.29 xml.attribut("defXLinkColor", defXLinkColor.name() ) +
7.30 @@ -1589,8 +1593,9 @@
7.31
7.32 void VymModel::setScene (QGraphicsScene *s)
7.33 {
7.34 - mapScene=s;
7.35 - init(); // Here we have a mapScene set,
7.36 + cout << "VM::setscene scene="<<s<<endl;
7.37 + mapScene=s; // FIXME VM should not be necessary anymore, move all occurences to MapEditor
7.38 + //init(); // Here we have a mapScene set,
7.39 // which is (still) needed to create MapCenters
7.40 }
7.41
7.42 @@ -2000,6 +2005,7 @@
7.43 MapCenterObj* VymModel::addMapCenter ()
7.44 {
7.45 MapCenterObj *mco=addMapCenter (contextPos);
7.46 + cout <<"VM::addMCO () mapScene="<<mapScene<<endl;
7.47 selection.select (mco);
7.48 updateActions();
7.49 ensureSelectionVisible();
7.50 @@ -2164,6 +2170,7 @@
7.51 void VymModel::deleteSelection()
7.52 {
7.53 BranchObj *bo = selection.getBranch();
7.54 +
7.55 if (bo && selection.type()==Selection::MapCenter)
7.56 {
7.57 // BranchObj* par=(BranchObj*)(bo->getParObj());
7.58 @@ -2183,10 +2190,11 @@
7.59 }
7.60 if (bo && selection.type()==Selection::Branch)
7.61 {
7.62 - //FIXME need to check if any animObj is part of Branch, remove from animated obj list then
7.63 -
7.64 - // missing!!!!
7.65 -
7.66 + QModelIndex ix=selection.getBranchIndex();
7.67 + if (ix.isValid())
7.68 + {
7.69 + cout << "VM::deleteSelection\n";
7.70 + }
7.71
7.72 BranchObj* par=(BranchObj*)bo->getParObj();
7.73 selection.unselect();
7.74 @@ -4131,7 +4139,7 @@
7.75 bo->reposition();
7.76 i++;
7.77 }
7.78 - mapEditor->updateSelection();
7.79 + emit (selectionChanged(selModel->selection(), selModel->selection()) );
7.80 mapScene->update();
7.81 if (!animObjList.isEmpty()) animationTimer->start();
7.82 }
7.83 @@ -4305,12 +4313,12 @@
7.84 {
7.85 if ( !col.isValid() ) return;
7.86 saveState (
7.87 - QString("setSelectionColor (%1)").arg(selection.getColor().name()),
7.88 + QString("setSelectionColor (%1)").arg(mapEditor->getSelectionColor().name()),
7.89 QString("setSelectionColor (%1)").arg(col.name()),
7.90 QString("Set color of selection box to %1").arg(col.name())
7.91 );
7.92
7.93 - selection.setColor (col);
7.94 + mapEditor->setSelectionColor (col);
7.95 }
7.96
7.97 void VymModel::updateSelection()
7.98 @@ -4322,7 +4330,7 @@
7.99 {
7.100 if ( !col.isValid() ) return;
7.101 saveState (
7.102 - QString("setSelectionColor (%1)").arg(selection.getColor().name()),
7.103 + QString("setSelectionColor (%1)").arg(mapEditor->getSelectionColor().name()),
7.104 QString("setSelectionColor (%1)").arg(col.name()),
7.105 QString("Set color of selection box to %1").arg(col.name())
7.106 );
7.107 @@ -4331,7 +4339,7 @@
7.108
7.109 QColor VymModel::getSelectionColor()
7.110 {
7.111 - return selection.getColor();
7.112 + return mapEditor->getSelectionColor();
7.113 }
7.114
7.115 void VymModel::setHideTmpMode (HideTmpMode mode)
7.116 @@ -4359,6 +4367,12 @@
7.117 void VymModel::setSelectionModel (QItemSelectionModel *sm)
7.118 {
7.119 selModel=sm;
7.120 + cout << "VM::setSelModel selModel="<<selModel<<endl;
7.121 +}
7.122 +
7.123 +QItemSelectionModel* VymModel::getSelectionModel()
7.124 +{
7.125 + return selModel;
7.126 }
7.127
7.128 void VymModel::setSelectionBlocked (bool b)
8.1 --- a/vymmodel.h Wed Oct 29 17:42:34 2008 +0000
8.2 +++ b/vymmodel.h Tue Nov 04 12:09:10 2008 +0000
8.3 @@ -524,8 +524,12 @@
8.4 Selection selection;
8.5 QString latestSelectionString; // select string of latest added object
8.6
8.7 +signals:
8.8 + void selectionChanged(const QItemSelection &, const QItemSelection &);
8.9 +
8.10 public:
8.11 void setSelectionModel(QItemSelectionModel *); // Set common selectionModel
8.12 + QItemSelectionModel* getSelectionModel();
8.13
8.14 void setSelectionBlocked(bool);
8.15 bool isSelectionBlocked();
9.1 --- a/vymview.cpp Wed Oct 29 17:42:34 2008 +0000
9.2 +++ b/vymview.cpp Tue Nov 04 12:09:10 2008 +0000
9.3 @@ -12,18 +12,24 @@
9.4 treeview->setMinimumWidth (350);
9.5 treeview->setColumnWidth (0,350);
9.6
9.7 - // ItemSelectionModel
9.8 selModel=treeview->selectionModel();
9.9 + model->setSelectionModel (selModel);
9.10 connect (
9.11 selModel, SIGNAL (selectionChanged(const QItemSelection &, const QItemSelection &)),
9.12 this,SLOT (changeSelection(const QItemSelection &,const QItemSelection &)));
9.13 - model->setSelectionModel (selModel);
9.14
9.15 // Create good old MapEditor
9.16 MapEditor* me=model->getMapEditor();
9.17 if (!me) me=new MapEditor (model);
9.18 + connect (
9.19 + selModel, SIGNAL (selectionChanged(const QItemSelection &, const QItemSelection &)),
9.20 + me,SLOT (updateSelection(const QItemSelection &,const QItemSelection &)));
9.21
9.22 - me->setSelectionModel (selModel);
9.23 + // VymModel may want to update selection, e.g. during animation
9.24 + connect (
9.25 + model, SIGNAL (selectionChanged(const QItemSelection &, const QItemSelection &)),
9.26 + me,SLOT (updateSelection(const QItemSelection &,const QItemSelection &)));
9.27 +
9.28
9.29 //me->viewport()->setFocus();
9.30 //FIXME me->setAntiAlias (actionViewToggleAntiAlias->isOn());
9.31 @@ -41,8 +47,10 @@
9.32
9.33 QItemSelectionModel* VymView::selectionModel()
9.34 {
9.35 - if (treeview) return selModel;
9.36 - else std::cout <<"hey, no treeview so far???\n";
9.37 + if (treeview)
9.38 + return selModel;
9.39 + else
9.40 + std::cout <<"VymView::selectionModel: hey, no treeview so far???\n";
9.41 return NULL;
9.42 }
9.43