diff options
| -rw-r--r-- | muse/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | muse/ChangeLog | 3 | ||||
| -rw-r--r-- | muse/Doxyfile | 150 | ||||
| -rw-r--r-- | muse/Doxyfile.in | 1261 | ||||
| -rw-r--r-- | muse/cmake/TargetDoc.cmake | 125 | ||||
| -rw-r--r-- | muse/muse/event.h | 39 | ||||
| -rw-r--r-- | muse/muse/eventlist.cpp | 14 | ||||
| -rw-r--r-- | muse/muse/midiedit/drumedit.cpp | 104 | ||||
| -rw-r--r-- | muse/muse/midiedit/drumedit.h | 3 | ||||
| -rw-r--r-- | muse/muse/midiedit/pianoroll.cpp | 112 | ||||
| -rw-r--r-- | muse/muse/midiedit/pianoroll.h | 5 | ||||
| -rw-r--r-- | muse/muse/part.cpp | 41 | ||||
| -rw-r--r-- | muse/muse/shortcuts.cpp | 11 | ||||
| -rw-r--r-- | muse/muse/widgets/shortcutconfig.cpp | 21 | ||||
| -rw-r--r-- | muse/muse/widgets/shortcutconfig.ui | 194 | 
15 files changed, 1572 insertions, 512 deletions
diff --git a/muse/CMakeLists.txt b/muse/CMakeLists.txt index e921104b..e414d48b 100644 --- a/muse/CMakeLists.txt +++ b/muse/CMakeLists.txt @@ -49,6 +49,7 @@ SET(MusE_VERSION_FULL  "1.0pre1")  SET(MusE_INSTALL_NAME  "muse-1.0pre1")  include ( ${PROJECT_SOURCE_DIR}/cmake/UsePkgConfig1.cmake ) +include ( ${PROJECT_SOURCE_DIR}/cmake/TargetDoc.cmake)  option ( ENABLE_DSSI   "enable Disposable Soft Synth Interface"  ON)  option ( ENABLE_VST    "enable VST/win support"                 OFF) diff --git a/muse/ChangeLog b/muse/ChangeLog index 35dc3741..08f9772c 100644 --- a/muse/ChangeLog +++ b/muse/ChangeLog @@ -1,3 +1,6 @@ +24.11 (ws) +      - added new make target: "doxy" to generate doxygen source  +        documentation  21.11 (ws)        - fixed DSSI support  21.11 (ng) diff --git a/muse/Doxyfile b/muse/Doxyfile deleted file mode 100644 index 38e2dff4..00000000 --- a/muse/Doxyfile +++ /dev/null @@ -1,150 +0,0 @@ -# Doxygen configuration generated by Doxywizard version 0.1 -#--------------------------------------------------------------------------- -# General configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME           = MusE -PROJECT_NUMBER         = 1.0pre1 -OUTPUT_DIRECTORY       = doc -OUTPUT_LANGUAGE        = English -EXTRACT_ALL            = YES -EXTRACT_PRIVATE        = YES -EXTRACT_STATIC         = YES -HIDE_UNDOC_MEMBERS     = NO -HIDE_UNDOC_CLASSES     = NO -BRIEF_MEMBER_DESC      = YES -REPEAT_BRIEF           = YES -ALWAYS_DETAILED_SEC    = NO -FULL_PATH_NAMES        = NO -STRIP_FROM_PATH        = -INTERNAL_DOCS          = YES -CLASS_DIAGRAMS         = YES -SOURCE_BROWSER         = YES -INLINE_SOURCES         = YES -STRIP_CODE_COMMENTS    = YES -CASE_SENSE_NAMES       = YES -HIDE_SCOPE_NAMES       = NO -VERBATIM_HEADERS       = YES -SHOW_INCLUDE_FILES     = YES -JAVADOC_AUTOBRIEF      = NO -INHERIT_DOCS           = YES -INLINE_INFO            = YES -SORT_MEMBER_DOCS       = YES -DISTRIBUTE_GROUP_DOC   = NO -TAB_SIZE               = 8 -ENABLED_SECTIONS       = -GENERATE_TODOLIST      = YES -GENERATE_TESTLIST      = YES -ALIASES                = -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET                  = NO -WARNINGS               = YES -WARN_IF_UNDOCUMENTED   = YES -WARN_FORMAT            = "$file:$line: $text" -WARN_LOGFILE           = -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT                  = . -FILE_PATTERNS          = *.cpp \ -                         *.h -RECURSIVE              = YES -EXCLUDE                = -EXCLUDE_PATTERNS       = -EXAMPLE_PATH           = -EXAMPLE_PATTERNS       = -IMAGE_PATH             = -INPUT_FILTER           = -FILTER_SOURCE_FILES    = YES -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX     = YES -COLS_IN_ALPHA_INDEX    = 5 -IGNORE_PREFIX          = -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML          = YES -HTML_OUTPUT            = doxygen -HTML_HEADER            = -HTML_FOOTER            = -HTML_STYLESHEET        = -HTML_ALIGN_MEMBERS     = YES -GENERATE_HTMLHELP      = YES -DISABLE_INDEX          = NO -ENUM_VALUES_PER_LINE   = 4 -GENERATE_TREEVIEW      = YES -TREEVIEW_WIDTH         = 250 -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX         = NO -LATEX_OUTPUT           = latex -COMPACT_LATEX          = NO -PAPER_TYPE             = a4wide -EXTRA_PACKAGES         = -LATEX_HEADER           = -PDF_HYPERLINKS         = NO -USE_PDFLATEX           = NO -LATEX_BATCHMODE        = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF           = NO -RTF_OUTPUT             = rtf -COMPACT_RTF            = NO -RTF_HYPERLINKS         = NO -RTF_STYLESHEET_FILE    = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN           = NO -MAN_OUTPUT             = man -MAN_EXTENSION          = .3 -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML           = NO -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING   = YES -MACRO_EXPANSION        = NO -EXPAND_ONLY_PREDEF     = YES -SEARCH_INCLUDES        = YES -INCLUDE_PATH           = -INCLUDE_FILE_PATTERNS  = -PREDEFINED             = -EXPAND_AS_DEFINED      = -#--------------------------------------------------------------------------- -# Configuration::addtions related to external references -#--------------------------------------------------------------------------- -TAGFILES               = -GENERATE_TAGFILE       = -ALLEXTERNALS           = YES -PERL_PATH              = /bin/perl -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -HAVE_DOT               = YES -CLASS_GRAPH            = YES -COLLABORATION_GRAPH    = NO -INCLUDE_GRAPH          = YES -INCLUDED_BY_GRAPH      = YES -GRAPHICAL_HIERARCHY    = YES -DOT_PATH               = /usr/bin -MAX_DOT_GRAPH_WIDTH    = 1024 -MAX_DOT_GRAPH_HEIGHT   = 1024 -GENERATE_LEGEND        = YES -#--------------------------------------------------------------------------- -# Configuration::addtions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE           = NO -CGI_NAME               = search.cgi -CGI_URL                = -DOC_URL                = -DOC_ABSPATH            = -BIN_ABSPATH            = /usr/bin/ -EXT_DOC_PATHS          = diff --git a/muse/Doxyfile.in b/muse/Doxyfile.in index 576874e1..1f97c847 100644 --- a/muse/Doxyfile.in +++ b/muse/Doxyfile.in @@ -1,150 +1,1271 @@ -# Doxygen configuration generated by Doxywizard version 0.1 +# Doxyfile 1.4.5 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +#       TAG = value [value, ...] +# For lists items can also be appended using: +#       TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") +  #--------------------------------------------------------------------------- -# General configuration options +# Project related configuration options  #--------------------------------------------------------------------------- -PROJECT_NAME           = MusE -PROJECT_NUMBER         = @VERSION@ -OUTPUT_DIRECTORY       = doc + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded  +# by quotes) that should identify the project. + +PROJECT_NAME           = "@PROJECT_NAME@" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number.  +# This could be handy for archiving the generated documentation or  +# if some version control system is used. + +PROJECT_NUMBER         = @PROJECT_VERSION@ + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)  +# base path where the generated documentation will be put.  +# If a relative path is entered, it will be relative to the location  +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY       = Doc + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create  +# 4096 sub-directories (in 2 levels) under the output directory of each output  +# format and will distribute the generated files over these directories.  +# Enabling this option can be useful when feeding doxygen a huge amount of  +# source files, where putting all generated files in the same directory would  +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS         = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all  +# documentation generated by doxygen is written. Doxygen will use this  +# information to generate all constant output in the proper language.  +# The default language is English, other supported languages are:  +# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish,  +# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese,  +# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian,  +# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish,  +# Swedish, and Ukrainian. +  OUTPUT_LANGUAGE        = English + +# This tag can be used to specify the encoding used in the generated output.  +# The encoding is not always determined by the language that is chosen,  +# but also whether or not the output is meant for Windows or non-Windows users.  +# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES  +# forces the Windows encoding (this is the default for the Windows binary),  +# whereas setting the tag to NO uses a Unix-style encoding (the default for  +# all platforms other than Windows). + +USE_WINDOWS_ENCODING   = YES + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will  +# include brief member descriptions after the members that are listed in  +# the file and class documentation (similar to JavaDoc).  +# Set to NO to disable this. + +BRIEF_MEMBER_DESC      = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend  +# the brief description of a member or function before the detailed description.  +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the  +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF           = YES + +# This tag implements a quasi-intelligent brief description abbreviator  +# that is used to form the text in various listings. Each string  +# in this list, if found as the leading text of the brief description, will be  +# stripped from the text and the result after processing the whole list, is  +# used as the annotated text. Otherwise, the brief description is used as-is.  +# If left blank, the following values are used ("$name" is automatically  +# replaced with the name of the entity): "The $name class" "The $name widget"  +# "The $name file" "is" "provides" "specifies" "contains"  +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF       =  + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then  +# Doxygen will generate a detailed section even if there is only a brief  +# description. + +ALWAYS_DETAILED_SEC    = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all  +# inherited members of a class in the documentation of that class as if those  +# members were ordinary class members. Constructors, destructors and assignment  +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB  = YES + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full  +# path before files name in the file list and in the header files. If set  +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES        = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag  +# can be used to strip a user-defined part of the path. Stripping is  +# only done if one of the specified strings matches the left-hand part of  +# the path. The tag can be used to show relative paths in the file list.  +# If left blank the directory from which doxygen is run is used as the  +# path to strip. + +STRIP_FROM_PATH        = @CMAKE_CURRENT_SOURCE_DIR@ + + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of  +# the path mentioned in the documentation of a class, which tells  +# the reader which header file to include in order to use a class.  +# If left blank only the name of the header file containing the class  +# definition is used. Otherwise one should specify the include paths that  +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH    = @CMAKE_CURRENT_SOURCE_DIR@/ + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter  +# (but less readable) file names. This can be useful is your file systems  +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES            = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen  +# will interpret the first line (until the first dot) of a JavaDoc-style  +# comment as the brief description. If set to NO, the JavaDoc  +# comments will behave just like the Qt-style comments (thus requiring an  +# explicit @brief command for a brief description. + +JAVADOC_AUTOBRIEF      = YES + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen  +# treat a multi-line C++ special comment block (i.e. a block of //! or ///  +# comments) as a brief description. This used to be the default behaviour.  +# The new default is to treat a multi-line C++ comment block as a detailed  +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen  +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member  +# documentation. + +DETAILS_AT_TOP         = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented  +# member inherits the documentation from any documented member that it  +# re-implements. + +INHERIT_DOCS           = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce  +# a new page for each member. If set to NO, the documentation of a member will  +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES  = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab.  +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE               = 2 + +# This tag can be used to specify a number of aliases that acts  +# as commands in the documentation. An alias has the form "name=value".  +# For example adding "sideeffect=\par Side Effects:\n" will allow you to  +# put the command \sideeffect (or @sideeffect) in the documentation, which  +# will result in a user-defined paragraph with heading "Side Effects:".  +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES                =  + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C  +# sources only. Doxygen will then generate output that is more tailored for C.  +# For instance, some of the names that are used will be different. The list  +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C  = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java  +# sources only. Doxygen will then generate output that is more tailored for Java.  +# For instance, namespaces will be presented as packages, qualified scopes  +# will look different, etc. + +OPTIMIZE_OUTPUT_JAVA   = NO + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to  +# include (a tag file for) the STL sources as input, then you should  +# set this tag to YES in order to let doxygen match functions declarations and  +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.  +# func(std::string) {}). This also make the inheritance and collaboration  +# diagrams that involve STL classes more complete and accurate. + +# BUILTIN_STL_SUPPORT    = NO + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC  +# tag is set to YES, then doxygen will reuse the documentation of the first  +# member in the group (if any) for the other members of the group. By default  +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC   = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of  +# the same type (for instance a group of public functions) to be put as a  +# subgroup of that type (e.g. under the Public Functions section). Set it to  +# NO to prevent subgrouping. Alternatively, this can be done per class using  +# the \nosubgrouping command. + +SUBGROUPING            = YES + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in  +# documentation are documented, even if no documentation was available.  +# Private class members and static file members will be hidden unless  +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES +  EXTRACT_ALL            = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class  +# will be included in the documentation. +  EXTRACT_PRIVATE        = YES + +# If the EXTRACT_STATIC tag is set to YES all static members of a file  +# will be included in the documentation. +  EXTRACT_STATIC         = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)  +# defined locally in source files will be included in the documentation.  +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES  = YES + +# This flag is only useful for Objective-C code. When set to YES local  +# methods, which are defined in the implementation section but not in  +# the interface are included in the documentation.  +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS  = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all  +# undocumented members of documented classes, files or namespaces.  +# If set to NO (the default) these members will be included in the  +# various overviews, but no documentation section is generated.  +# This option has no effect if EXTRACT_ALL is enabled. +  HIDE_UNDOC_MEMBERS     = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all  +# undocumented classes that are normally visible in the class hierarchy.  +# If set to NO (the default) these classes will be included in the various  +# overviews. This option has no effect if EXTRACT_ALL is enabled. +  HIDE_UNDOC_CLASSES     = NO -BRIEF_MEMBER_DESC      = YES -REPEAT_BRIEF           = YES -ALWAYS_DETAILED_SEC    = NO -FULL_PATH_NAMES        = NO -STRIP_FROM_PATH        = -INTERNAL_DOCS          = YES -CLASS_DIAGRAMS         = YES -SOURCE_BROWSER         = YES -INLINE_SOURCES         = YES -STRIP_CODE_COMMENTS    = YES + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all  +# friend (class|struct|union) declarations.  +# If set to NO (the default) these declarations will be included in the  +# documentation. + +HIDE_FRIEND_COMPOUNDS  = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any  +# documentation blocks found inside the body of a function.  +# If set to NO (the default) these blocks will be appended to the  +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS      = NO + +# The INTERNAL_DOCS tag determines if documentation  +# that is typed after a \internal command is included. If the tag is set  +# to NO (the default) then the documentation will be excluded.  +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS          = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate  +# file names in lower-case letters. If set to YES upper-case letters are also  +# allowed. This is useful if you have classes or files whose names only differ  +# in case and if your file system supports case sensitive file names. Windows  +# and Mac users are advised to set this option to NO. +  CASE_SENSE_NAMES       = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen  +# will show members with their full class and namespace scopes in the  +# documentation. If set to YES the scope will be hidden. +  HIDE_SCOPE_NAMES       = NO -VERBATIM_HEADERS       = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen  +# will put a list of the files that are included by a file in the documentation  +# of that file. +  SHOW_INCLUDE_FILES     = YES -JAVADOC_AUTOBRIEF      = NO -INHERIT_DOCS           = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]  +# is inserted in the documentation for inline members. +  INLINE_INFO            = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen  +# will sort the (detailed) documentation of file and class members  +# alphabetically by member name. If set to NO the members will appear in  +# declaration order. +  SORT_MEMBER_DOCS       = YES -DISTRIBUTE_GROUP_DOC   = NO -TAB_SIZE               = 8 -ENABLED_SECTIONS       = + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the  +# brief documentation of file, namespace and class members alphabetically  +# by member name. If set to NO (the default) the members will appear in  +# declaration order. + +SORT_BRIEF_DOCS        = YES + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be  +# sorted by fully-qualified names, including namespaces. If set to  +# NO (the default), the class list will be sorted only by class name,  +# not including the namespace part.  +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the  +# alphabetical list. + +SORT_BY_SCOPE_NAME     = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or  +# disable (NO) the todo list. This list is created by putting \todo  +# commands in the documentation. +  GENERATE_TODOLIST      = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or  +# disable (NO) the test list. This list is created by putting \test  +# commands in the documentation. +  GENERATE_TESTLIST      = YES -ALIASES                = + +# The GENERATE_BUGLIST tag can be used to enable (YES) or  +# disable (NO) the bug list. This list is created by putting \bug  +# commands in the documentation. + +GENERATE_BUGLIST       = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or  +# disable (NO) the deprecated list. This list is created by putting  +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional  +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS       =  + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines  +# the initial value of a variable or define consists of for it to appear in  +# the documentation. If the initializer consists of more lines than specified  +# here it will be hidden. Use a value of 0 to hide initializers completely.  +# The appearance of the initializer of individual variables and defines in the  +# documentation can be controlled using \showinitializer or \hideinitializer  +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES  = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated  +# at the bottom of the documentation of classes and structs. If set to YES the  +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES        = YES + +# If the sources in your project are distributed over multiple directories  +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy  +# in the documentation. The default is YES. + +SHOW_DIRECTORIES       = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that  +# doxygen should invoke to get the current version for each file (typically from the  +# version control system). Doxygen will invoke the program by executing (via  +# popen()) the command <command> <input-file>, where <command> is the value of  +# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file  +# provided by doxygen. Whatever the program writes to standard output  +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER    =  +  #---------------------------------------------------------------------------  # configuration options related to warning and progress messages  #--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated  +# by doxygen. Possible values are YES and NO. If left blank NO is used. +  QUIET                  = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are  +# generated by doxygen. Possible values are YES and NO. If left blank  +# NO is used. +  WARNINGS               = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings  +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will  +# automatically be disabled. +  WARN_IF_UNDOCUMENTED   = YES -WARN_FORMAT            = "$file:$line: $text" -WARN_LOGFILE           = + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for  +# potential errors in the documentation, such as not documenting some  +# parameters in a documented function, or documenting parameters that  +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR      = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for  +# functions that are documented, but have no documentation for their parameters  +# or return value. If set to NO (the default) doxygen will only warn about  +# wrong or incomplete parameter documentation, but not about the absence of  +# documentation. + +WARN_NO_PARAMDOC       = NO + +# The WARN_FORMAT tag determines the format of the warning messages that  +# doxygen can produce. The string should contain the $file, $line, and $text  +# tags, which will be replaced by the file and line number from which the  +# warning originated and the warning text. Optionally the format may contain  +# $version, which will be replaced by the version of the file (if it could  +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT            = @DOXY_WARN_FORMAT@ + +# The WARN_LOGFILE tag can be used to specify a file to which warning  +# and error messages should be written. If left blank the output is written  +# to stderr. + +WARN_LOGFILE           = Doc/doxy.log +  #---------------------------------------------------------------------------  # configuration options related to the input files  #--------------------------------------------------------------------------- -INPUT                  = . + +# The INPUT tag can be used to specify the files and/or directories that contain  +# documented source files. You may enter file names like "myfile.cpp" or  +# directories like "/usr/src/myproject". Separate the files or directories  +# with spaces. + +INPUT                  = @CMAKE_CURRENT_SOURCE_DIR@ \ +						 @CMAKE_CURRENT_BINARY_DIR@ + +# If the value of the INPUT tag contains directories, you can use the  +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp  +# and *.h) to filter out the source-files in the directories. If left  +# blank the following patterns are tested:  +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx  +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py +  FILE_PATTERNS          = *.cpp \ -                         *.h +                         *.cc \ +                         *.h \ +                         *.hh \ +                         *.hpp \ +                         *.dox + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories  +# should be searched for input files as well. Possible values are YES and NO.  +# If left blank NO is used. +  RECURSIVE              = YES -EXCLUDE                = -EXCLUDE_PATTERNS       = -EXAMPLE_PATH           = -EXAMPLE_PATTERNS       = -IMAGE_PATH             = -INPUT_FILTER           = -FILTER_SOURCE_FILES    = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should  +# excluded from the INPUT source files. This way you can easily exclude a  +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE                =  + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or  +# directories that are symbolic links (a Unix filesystem feature) are excluded  +# from the input. + +EXCLUDE_SYMLINKS       = NO + +# If the value of the INPUT tag contains directories, you can use the  +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude  +# certain files from those directories. Note that the wildcards are matched  +# against the file with absolute path, so to exclude all test directories  +# for example use the pattern */test/* + +EXCLUDE_PATTERNS       =  + +# The EXAMPLE_PATH tag can be used to specify one or more files or  +# directories that contain example code fragments that are included (see  +# the \include command). + +EXAMPLE_PATH           = @CMAKE_CURRENT_SOURCE_DIR@/Base/Common/Examples \ +                         @CMAKE_CURRENT_SOURCE_DIR@/Base/Debug/Examples \ +                         @CMAKE_CURRENT_SOURCE_DIR@/Base/Math/Examples \ +                         @CMAKE_CURRENT_SOURCE_DIR@/Base/Image/Examples \ +                         @CMAKE_CURRENT_SOURCE_DIR@/Base/Geometry/Examples \ +                         @CMAKE_CURRENT_SOURCE_DIR@/MathAlgo/Examples \ +                         @CMAKE_CURRENT_SOURCE_DIR@/Geometry/Examples \ +                         @CMAKE_CURRENT_SOURCE_DIR@/CornerDetector/Examples \ +                         @CMAKE_CURRENT_SOURCE_DIR@/Image/Examples \ +                         @CMAKE_CURRENT_SOURCE_DIR@/StateEstimator/Examples \ +                         @CMAKE_CURRENT_SOURCE_DIR@/Matcher2D/Examples \ +                         @CMAKE_CURRENT_SOURCE_DIR@/Utils/Examples \ +                         @CMAKE_CURRENT_SOURCE_DIR@/Gui/Examples \ +                         @CMAKE_CURRENT_SOURCE_DIR@/FeatureDetector/Examples \ +                         @CMAKE_CURRENT_SOURCE_DIR@/Doc \ +                         @CMAKE_CURRENT_SOURCE_DIR@  + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the  +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp  +# and *.h) to filter out the source-files in the directories. If left  +# blank all files are included. + +EXAMPLE_PATTERNS       = *.cpp \ +                         *.cc \ +                         *.h \ +                         *.hh \ +                         INSTALL DEPENDENCIES CHANGELOG LICENSE LGPL + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be  +# searched for input files to be used with the \include or \dontinclude  +# commands irrespective of the value of the RECURSIVE tag.  +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE      = YES + +# The IMAGE_PATH tag can be used to specify one or more files or  +# directories that contain image that are included in the documentation (see  +# the \image command). + +IMAGE_PATH             = @CMAKE_CURRENT_SOURCE_DIR@/Doc \ +						 @CMAKE_CURRENT_SOURCE_DIR@/Tests/data \ +						 @CMAKE_CURRENT_SOURCE_DIR@  + + +# The INPUT_FILTER tag can be used to specify a program that doxygen should  +# invoke to filter for each input file. Doxygen will invoke the filter program  +# by executing (via popen()) the command <filter> <input-file>, where <filter>  +# is the value of the INPUT_FILTER tag, and <input-file> is the name of an  +# input file. Doxygen will then use the output that the filter program writes  +# to standard output.  If FILTER_PATTERNS is specified, this tag will be  +# ignored. + +INPUT_FILTER           =  + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern  +# basis.  Doxygen will compare the file name with each pattern and apply the  +# filter if there is a match.  The filters are a list of the form:  +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further  +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER  +# is applied to all files. + +FILTER_PATTERNS        =  + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using  +# INPUT_FILTER) will be used to filter the input files when producing source  +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES    = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will  +# be generated. Documented entities will be cross-referenced with these sources.  +# Note: To get rid of all source code in the generated output, make sure also  +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER         = YES + +# Setting the INLINE_SOURCES tag to YES will include the body  +# of functions and classes directly in the documentation. + +INLINE_SOURCES         = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct  +# doxygen to hide any special comment blocks from generated source code  +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS    = NO + +# If the REFERENCED_BY_RELATION tag is set to YES (the default)  +# then for each documented function all documented  +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES (the default)  +# then for each documented function all documented entities  +# called/used by that function will be listed. + +REFERENCES_RELATION    = YES + +# If the USE_HTAGS tag is set to YES then the references to source code  +# will point to the HTML generated by the htags(1) tool instead of doxygen  +# built-in source browser. The htags tool is part of GNU's global source  +# tagging system (see http://www.gnu.org/software/global/global.html). You  +# will need version 4.8.6 or higher. + +USE_HTAGS              = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen  +# will generate a verbatim copy of the header file for each class for  +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS       = YES +  #---------------------------------------------------------------------------  # configuration options related to the alphabetical class index  #--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index  +# of all compounds will be generated. Enable this if the project  +# contains a lot of classes, structs, unions or interfaces. +  ALPHABETICAL_INDEX     = YES -COLS_IN_ALPHA_INDEX    = 5 -IGNORE_PREFIX          = + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then  +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns  +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX    = 2 + +# In case all classes in a project start with a common prefix, all  +# classes will be put under the same header in the alphabetical index.  +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that  +# should be ignored while generating the index headers. + +IGNORE_PREFIX          =  +  #---------------------------------------------------------------------------  # configuration options related to the HTML output  #--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will  +# generate HTML output. +  GENERATE_HTML          = YES -HTML_OUTPUT            = doxygen -HTML_HEADER            = -HTML_FOOTER            = -HTML_STYLESHEET        = + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.  +# If a relative path is entered the value of OUTPUT_DIRECTORY will be  +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT            = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for  +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank  +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION    = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for  +# each generated HTML page. If it is left blank doxygen will generate a  +# standard header. +HTML_HEADER            =  + + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for  +# each generated HTML page. If it is left blank doxygen will generate a  +# standard footer. + +HTML_FOOTER            =  + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading  +# style sheet that is used by each HTML page. It can be used to  +# fine-tune the look of the HTML output. If the tag is left blank doxygen  +# will generate a default style sheet. Note that doxygen will try to copy  +# the style sheet file to the HTML output directory, so don't put your own  +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET        =  + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,  +# files or namespaces will be aligned in HTML using tables. If set to  +# NO a bullet list will be used. +  HTML_ALIGN_MEMBERS     = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files  +# will be generated that can be used as input for tools like the  +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)  +# of the generated HTML documentation. +  GENERATE_HTMLHELP      = YES + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can  +# be used to specify the file name of the resulting .chm file. You  +# can add a path in front of the file if the result should not be  +# written to the html output directory. + +CHM_FILE               =  + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can  +# be used to specify the location (absolute path including file name) of  +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run  +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION           =  + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag  +# controls if a separate .chi index file is generated (YES) or that  +# it should be included in the master .chm file (NO). + +GENERATE_CHI           = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag  +# controls whether a binary table of contents is generated (YES) or a  +# normal table of contents (NO) in the .chm file. + +BINARY_TOC             = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members  +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND             = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at  +# top of each HTML page. The value NO (the default) enables the index and  +# the value YES disables it. +  DISABLE_INDEX          = NO + +# This tag can be used to set the number of enum values (range [1..20])  +# that doxygen will group on one line in the generated HTML documentation. +  ENUM_VALUES_PER_LINE   = 4 -GENERATE_TREEVIEW      = @DOXYGEN_TREEVIEW@ + +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be +# generated containing a tree-like index structure (just like the one that  +# is generated for HTML Help). For this to work a browser that supports  +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,  +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are  +# probably better off using the HTML help feature. + +GENERATE_TREEVIEW      = YES + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be  +# used to set the initial width (in pixels) of the frame in which the tree  +# is shown. +  TREEVIEW_WIDTH         = 250 +  #---------------------------------------------------------------------------  # configuration options related to the LaTeX output  #--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will  +# generate Latex output. +  GENERATE_LATEX         = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.  +# If a relative path is entered the value of OUTPUT_DIRECTORY will be  +# put in front of it. If left blank `latex' will be used as the default path. +  LATEX_OUTPUT           = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be  +# invoked. If left blank `latex' will be used as the default command name. + +#LATEX_CMD_NAME         = latex +LATEX_CMD_NAME          = @LATEX_COMPILER@ + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to  +# generate index for LaTeX. If left blank `makeindex' will be used as the  +# default command name. + +#MAKEINDEX_CMD_NAME     = makeindex +MAKEINDEX_CMD_NAME     = @MAKEINDEX_COMPILER@ + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact  +# LaTeX documents. This may be useful for small projects and may help to  +# save some trees in general. +  COMPACT_LATEX          = NO -PAPER_TYPE             = a4wide -EXTRA_PACKAGES         = -LATEX_HEADER           = -PDF_HYPERLINKS         = NO -USE_PDFLATEX           = NO -LATEX_BATCHMODE        = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used  +# by the printer. Possible values are: a4, a4wide, letter, legal and  +# executive. If left blank a4wide will be used. + +PAPER_TYPE             = a4 + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX  +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES         =  + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for  +# the generated latex document. The header should contain everything until  +# the first chapter. If it is left blank doxygen will generate a  +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER           =  + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated  +# is prepared for conversion to pdf (using ps2pdf). The pdf file will  +# contain links (just like the HTML output) instead of page references  +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS         = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of  +# plain latex in the generated Makefile. Set this option to YES to get a  +# higher quality PDF documentation. + +USE_PDFLATEX           = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.  +# command to the generated LaTeX files. This will instruct LaTeX to keep  +# running if errors occur, instead of asking the user for help.  +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE        = YES + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not  +# include the index chapters (such as File Index, Compound Index, etc.)  +# in the output. + +LATEX_HIDE_INDICES     = NO +  #---------------------------------------------------------------------------  # configuration options related to the RTF output  #--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output  +# The RTF output is optimized for Word 97 and may not look very pretty with  +# other RTF readers or editors. +  GENERATE_RTF           = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.  +# If a relative path is entered the value of OUTPUT_DIRECTORY will be  +# put in front of it. If left blank `rtf' will be used as the default path. +  RTF_OUTPUT             = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact  +# RTF documents. This may be useful for small projects and may help to  +# save some trees in general. +  COMPACT_RTF            = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated  +# will contain hyperlink fields. The RTF file will  +# contain links (just like the HTML output) instead of page references.  +# This makes the output suitable for online browsing using WORD or other  +# programs which support those fields.  +# Note: wordpad (write) and others do not support links. +  RTF_HYPERLINKS         = NO -RTF_STYLESHEET_FILE    = + +# Load stylesheet definitions from file. Syntax is similar to doxygen's  +# config file, i.e. a series of assignments. You only have to provide  +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE    =  + +# Set optional variables used in the generation of an rtf document.  +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE    =  +  #---------------------------------------------------------------------------  # configuration options related to the man page output  #--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will  +# generate man pages +  GENERATE_MAN           = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put.  +# If a relative path is entered the value of OUTPUT_DIRECTORY will be  +# put in front of it. If left blank `man' will be used as the default path. +  MAN_OUTPUT             = man + +# The MAN_EXTENSION tag determines the extension that is added to  +# the generated man pages (default is the subroutine's section .3) +  MAN_EXTENSION          = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output,  +# then it will generate one additional man file for each entity  +# documented in the real man page(s). These additional files  +# only source the real man page, but without them the man command  +# would be unable to find the correct page. The default is NO. + +MAN_LINKS              = NO +  #---------------------------------------------------------------------------  # configuration options related to the XML output  #--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will  +# generate an XML file that captures the structure of  +# the code including all documentation. +  GENERATE_XML           = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put.  +# If a relative path is entered the value of OUTPUT_DIRECTORY will be  +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT             = xml + +# The XML_SCHEMA tag can be used to specify an XML schema,  +# which can be used by a validating XML parser to check the  +# syntax of the XML files. + +XML_SCHEMA             =  + +# The XML_DTD tag can be used to specify an XML DTD,  +# which can be used by a validating XML parser to check the  +# syntax of the XML files. + +XML_DTD                =  + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will  +# dump the program listings (including syntax highlighting  +# and cross-referencing information) to the XML output. Note that  +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING     = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will  +# generate an AutoGen Definitions (see autogen.sf.net) file  +# that captures the structure of the code including all  +# documentation. Note that this feature is still experimental  +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF   = NO +  #--------------------------------------------------------------------------- -# Configuration options related to the preprocessor +# configuration options related to the Perl module output  #--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will  +# generate a Perl module file that captures the structure of  +# the code including all documentation. Note that this  +# feature is still experimental and incomplete at the  +# moment. + +GENERATE_PERLMOD       = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate  +# the necessary Makefile rules, Perl scripts and LaTeX code to be able  +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX          = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be  +# nicely formatted so it can be parsed by a human reader.  This is useful  +# if you want to understand what is going on.  On the other hand, if this  +# tag is set to NO the size of the Perl module output will be much smaller  +# and Perl will parse it just the same. + +PERLMOD_PRETTY         = YES + +# The names of the make variables in the generated doxyrules.make file  +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.  +# This is useful so different doxyrules.make files included by the same  +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX =  + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor    +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will  +# evaluate all C-preprocessor directives found in the sources and include  +# files. +  ENABLE_PREPROCESSING   = YES -MACRO_EXPANSION        = NO + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro  +# names in the source code. If set to NO (the default) only conditional  +# compilation will be performed. Macro expansion can be done in a controlled  +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION        = YES + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES  +# then the macro expansion is limited to the macros specified with the  +# PREDEFINED and EXPAND_AS_DEFINED tags. +  EXPAND_ONLY_PREDEF     = YES + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files  +# in the INCLUDE_PATH (see below) will be search if a #include is found. +  SEARCH_INCLUDES        = YES -INCLUDE_PATH           = -INCLUDE_FILE_PATTERNS  = -PREDEFINED             = -EXPAND_AS_DEFINED      = + +# The INCLUDE_PATH tag can be used to specify one or more directories that  +# contain include files that are not input files but should be processed by  +# the preprocessor. + +INCLUDE_PATH           =  + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard  +# patterns (like *.h and *.hpp) to filter out the header-files in the  +# directories. If left blank, the patterns specified with FILE_PATTERNS will  +# be used. + +INCLUDE_FILE_PATTERNS  =  + +# The PREDEFINED tag can be used to specify one or more macro names that  +# are defined before the preprocessor is started (similar to the -D option of  +# gcc). The argument of the tag is a list of macros of the form: name  +# or name=definition (no spaces). If the definition and the = are  +# omitted =1 is assumed. To prevent a macro definition from being  +# undefined via #undef or recursively expanded use the := operator  +# instead of the = operator. + +PREDEFINED             =  + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then  +# this tag can be used to specify a list of macro names that should be expanded.  +# The macro definition that is found in the sources will be used.  +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED      =  + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then  +# doxygen's preprocessor will remove all function-like macros that are alone  +# on a line, have an all uppercase name, and do not end with a semicolon. Such  +# function macros are typically used for boiler-plate code, and will confuse  +# the parser if not removed. + +SKIP_FUNCTION_MACROS   = YES +  #--------------------------------------------------------------------------- -# Configuration::addtions related to external references +# Configuration::additions related to external references     #--------------------------------------------------------------------------- -TAGFILES               = -GENERATE_TAGFILE       = + +# The TAGFILES option can be used to specify one or more tagfiles.  +# Optionally an initial location of the external documentation  +# can be added for each tagfile. The format of a tag file without  +# this location is as follows:  +#   TAGFILES = file1 file2 ...  +# Adding location for the tag files is done as follows:  +#   TAGFILES = file1=loc1 "file2 = loc2" ...  +# where "loc1" and "loc2" can be relative or absolute paths or  +# URLs. If a location is present for each tag, the installdox tool  +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen  +# is run, you must also specify the path to the tagfile here. + +TAGFILES               =  + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create  +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE       = Doc/html/@PROJECT_NAME@.TAGFILE + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed  +# in the class index. If set to NO only the inherited external classes  +# will be listed. +  ALLEXTERNALS           = YES -PERL_PATH              = @PERL@ + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed  +# in the modules index. If set to NO, only the current project's groups will  +# be listed. + +EXTERNAL_GROUPS        = YES + +# The PERL_PATH should be the absolute path and name of the perl script  +# interpreter (i.e. the result of `which perl'). + +PERL_PATH              = /usr/bin/perl +  #--------------------------------------------------------------------------- -# Configuration options related to the dot tool +# Configuration options related to the dot tool     #--------------------------------------------------------------------------- -HAVE_DOT               = @HAVEDOT@ + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will  +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base  +# or super classes. Setting the tag to NO turns the diagrams off. Note that  +# this option is superseded by the HAVE_DOT option below. This is only a  +# fallback. It is recommended to install and use dot, since it yields more  +# powerful graphs. + +CLASS_DIAGRAMS         = YES + +# If set to YES, the inheritance and collaboration graphs will hide  +# inheritance and usage relations if the target is undocumented  +# or is not a class. + +HIDE_UNDOC_RELATIONS   = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is  +# available from the path. This tool is part of Graphviz, a graph visualization  +# toolkit from AT&T and Lucent Bell Labs. The other options in this section  +# have no effect if this option is set to NO (the default) + +HAVE_DOT               = @DOXYGEN_DOT_FOUND@ + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen  +# will generate a graph for each documented class showing the direct and  +# indirect inheritance relations. Setting this tag to YES will force the  +# the CLASS_DIAGRAMS tag to NO. +  CLASS_GRAPH            = YES -COLLABORATION_GRAPH    = NO + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen  +# will generate a graph for each documented class showing the direct and  +# indirect implementation dependencies (inheritance, containment, and  +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH    = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen  +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS           = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and  +# collaboration diagrams in a style similar to the OMG's Unified Modeling  +# Language. + +UML_LOOK               = NO +# UML_LOOK               = YES + +# If set to YES, the inheritance and collaboration graphs will show the  +# relations between templates and their instances. + +TEMPLATE_RELATIONS     = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT  +# tags are set to YES then doxygen will generate a graph for each documented  +# file showing the direct and indirect include dependencies of the file with  +# other documented files. +  INCLUDE_GRAPH          = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and  +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each  +# documented header file showing the documented files that directly or  +# indirectly include this file. +  INCLUDED_BY_GRAPH      = YES + +# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will  +# generate a call dependency graph for every global function or class method.  +# Note that enabling this option will significantly increase the time of a run.  +# So in most cases it will be better to enable call graphs for selected  +# functions only using the \callgraph command. + +CALL_GRAPH             = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen  +# will graphical hierarchy of all classes instead of a textual one. +  GRAPHICAL_HIERARCHY    = YES -DOT_PATH               = @DOTPATH@ -MAX_DOT_GRAPH_WIDTH    = 1024 + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES  +# then doxygen will show the dependencies a directory has on other directories  +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH        = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images  +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT       = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be  +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH               = @DOXYGEN_DOT_EXECUTABLE_PATH@ + +# The DOTFILE_DIRS tag can be used to specify one or more directories that  +# contain dot files that are included in the documentation (see the  +# \dotfile command). + +DOTFILE_DIRS           =  + +# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width  +# (in pixels) of the graphs generated by dot. If a graph becomes larger than  +# this value, doxygen will try to truncate the graph, so that it fits within  +# the specified constraint. Beware that most browsers cannot cope with very  +# large images. + +MAX_DOT_GRAPH_WIDTH    = 1280 + +# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height  +# (in pixels) of the graphs generated by dot. If a graph becomes larger than  +# this value, doxygen will try to truncate the graph, so that it fits within  +# the specified constraint. Beware that most browsers cannot cope with very  +# large images. +  MAX_DOT_GRAPH_HEIGHT   = 1024 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the  +# graphs generated by dot. A depth value of 3 means that only nodes reachable  +# from the root by following a path via at most 3 edges will be shown. Nodes  +# that lay further from the root node will be omitted. Note that setting this  +# option to 1 or 2 may greatly reduce the computation time needed for large  +# code bases. Also note that a graph may be further truncated if the graph's  +# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH  +# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default),  +# the graph is not depth-constrained. + +MAX_DOT_GRAPH_DEPTH    = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent  +# background. This is disabled by default, which results in a white background.  +# Warning: Depending on the platform used, enabling this option may lead to  +# badly anti-aliased labels on the edges of a graph (i.e. they become hard to  +# read). + +DOT_TRANSPARENT        = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output  +# files in one run (i.e. multiple -o and -T options on the command line). This  +# makes dot run faster, but since only newer versions of dot (>1.8.10)  +# support this, this feature is disabled by default. +# JW +# DOT_MULTI_TARGETS      = NO +DOT_MULTI_TARGETS      = YES + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will  +# generate a legend page explaining the meaning of the various boxes and  +# arrows in the dot generated graphs. +  GENERATE_LEGEND        = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will  +# remove the intermediate dot files that are used to generate  +# the various graphs. + +DOT_CLEANUP            = YES +  #--------------------------------------------------------------------------- -# Configuration::addtions related to the search engine +# Configuration::additions related to the search engine     #--------------------------------------------------------------------------- -SEARCHENGINE           = NO -CGI_NAME               = search.cgi -CGI_URL                = -DOC_URL                = -DOC_ABSPATH            = -BIN_ABSPATH            = /usr/bin/ -EXT_DOC_PATHS          = + +# The SEARCHENGINE tag specifies whether or not a search engine should be  +# used. If set to NO the values of all tags below this one will be ignored. + +# JW SEARCHENGINE           = NO +SEARCHENGINE           = YES
\ No newline at end of file diff --git a/muse/cmake/TargetDoc.cmake b/muse/cmake/TargetDoc.cmake new file mode 100644 index 00000000..e6afb583 --- /dev/null +++ b/muse/cmake/TargetDoc.cmake @@ -0,0 +1,125 @@ +# -helper macro to add a "doxy" target with CMake build system.  +# and configure Doxyfile.in to Doxyfile +# +# target "doxy" allows building the documentation with doxygen/dot on WIN32 and Linux +# Creates .chm windows help file if MS HTML help workshop  +# (available from http://msdn.microsoft.com/workshop/author/htmlhelp) +# is installed with its DLLs in PATH. +# +# +# Please note, that the tools, e.g.: +# doxygen, dot, latex, dvips, makeindex, gswin32, etc. +# must be in path. +# +# Note about Visual Studio Projects:  +# MSVS hast its own path environment which may differ from the shell. +# See "Menu Tools/Options/Projects/VC++ Directories" in VS 7.1 +# +# author Jan Woetzel 2004-2006 +# www.mip.informatik.uni-kiel.de/~jw + +FIND_PACKAGE(Doxygen) + +IF (DOXYGEN) + +   MESSAGE("found Doxygen") + +  # click+jump in Emacs and Visual Studio (for Doxyfile) (jw) +  IF    (CMAKE_BUILD_TOOL MATCHES "(msdev|devenv)") +    SET(DOXY_WARN_FORMAT "\"$file($line) : $text \"") +  ELSE  (CMAKE_BUILD_TOOL MATCHES "(msdev|devenv)") +    SET(DOXY_WARN_FORMAT "\"$file:$line: $text \"") +  ENDIF (CMAKE_BUILD_TOOL MATCHES "(msdev|devenv)") +   +  # we need latex for doxygen because of the formulas +  FIND_PACKAGE(LATEX) +  IF    (NOT LATEX_COMPILER) +    MESSAGE(STATUS "latex command LATEX_COMPILER not found but usually required. You will probably get warnings and user inetraction on doxy run.") +  ENDIF (NOT LATEX_COMPILER) +  IF    (NOT MAKEINDEX_COMPILER) +    MESSAGE(STATUS "makeindex command MAKEINDEX_COMPILER not found but usually required.") +  ENDIF (NOT MAKEINDEX_COMPILER) +  IF    (NOT DVIPS_CONVERTER) +    MESSAGE(STATUS "dvips command DVIPS_CONVERTER not found but usually required.") +  ENDIF (NOT DVIPS_CONVERTER) +   +  IF   (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in") +    MESSAGE(STATUS "configured ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in --> ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile") +    CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in  +      ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile +      @ONLY ) +    # use (configured) Doxyfile from (out of place) BUILD tree: +    SET(DOXY_CONFIG "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile") +  ELSE (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in") +    # use static hand-edited Doxyfile from SOURCE tree: +    SET(DOXY_CONFIG "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile") +    IF   (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile") +      MESSAGE(STATUS "WARNING: using existing ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile instead of configuring from Doxyfile.in file.") +    ELSE (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile") +      IF   (EXISTS "${CMAKE_MODULE_PATH}/Doxyfile.in") +        # using template Doxyfile.in +        MESSAGE(STATUS "configured ${CMAKE_CMAKE_MODULE_PATH}/Doxyfile.in --> ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile") +        CONFIGURE_FILE(${CMAKE_MODULE_PATH}/Doxyfile.in  +          ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile +          @ONLY ) +        SET(DOXY_CONFIG "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile") +      ELSE (EXISTS "${CMAKE_MODULE_PATH}/Doxyfile.in") +        # failed completely... +        MESSAGE(SEND_ERROR "Please create ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in (or Doxyfile as fallback)") +      ENDIF(EXISTS "${CMAKE_MODULE_PATH}/Doxyfile.in") + +    ENDIF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile") +  ENDIF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in") +   +  ADD_CUSTOM_TARGET(doxy ${DOXYGEN} ${DOXY_CONFIG}) +   +  # create a windows help .chm file using hhc.exe +  # HTMLHelp DLL must be in path! +  # fallback: use hhw.exe interactively +  IF    (WIN32) +    FIND_PACKAGE(HTMLHelp) +    IF   (HTML_HELP_COMPILER)       +      SET (TMP "${CMAKE_CURRENT_BINARY_DIR}\\Doc\\html\\index.hhp") +      STRING(REGEX REPLACE "[/]" "\\\\" HHP_FILE ${TMP} ) +      # MESSAGE(SEND_ERROR "DBG  HHP_FILE=${HHP_FILE}") +      ADD_CUSTOM_TARGET(winhelp ${HTML_HELP_COMPILER} ${HHP_FILE}) +      ADD_DEPENDENCIES (winhelp doxy) +      +      IF (NOT TARGET_DOC_SKIP_INSTALL) +      # install windows help? +      # determine useful name for output file  +      # should be project and version unique to allow installing  +      # multiple projects into one global directory       +      IF   (EXISTS "${PROJECT_BINARY_DIR}/Doc/html/index.chm") +        IF   (PROJECT_NAME) +          SET(OUT "${PROJECT_NAME}") +        ELSE (PROJECT_NAME) +          SET(OUT "Documentation") # default +        ENDIF(PROJECT_NAME) +        IF   (${PROJECT_NAME}_VERSION_MAJOR) +          SET(OUT "${OUT}-${${PROJECT_NAME}_VERSION_MAJOR}") +          IF   (${PROJECT_NAME}_VERSION_MINOR) +            SET(OUT  "${OUT}.${${PROJECT_NAME}_VERSION_MINOR}") +            IF   (${PROJECT_NAME}_VERSION_PATCH) +              SET(OUT "${OUT}.${${PROJECT_NAME}_VERSION_PATCH}")       +            ENDIF(${PROJECT_NAME}_VERSION_PATCH) +          ENDIF(${PROJECT_NAME}_VERSION_MINOR) +        ENDIF(${PROJECT_NAME}_VERSION_MAJOR) +        # keep suffix +        SET(OUT  "${OUT}.chm") +         +        #MESSAGE("DBG ${PROJECT_BINARY_DIR}/Doc/html/index.chm \n${OUT}") +        # create target used by install and package commands  +        INSTALL(FILES "${PROJECT_BINARY_DIR}/Doc/html/index.chm" +          DESTINATION "doxy" +          RENAME "${OUT}" +        ) +      ENDIF(EXISTS "${PROJECT_BINARY_DIR}/Doc/html/index.chm") +      ENDIF(NOT TARGET_DOC_SKIP_INSTALL) + +    ENDIF(HTML_HELP_COMPILER) +    # MESSAGE(SEND_ERROR "HTML_HELP_COMPILER=${HTML_HELP_COMPILER}") +  ENDIF (WIN32)  +ELSE(DOXYGEN) +  MESSAGE("Doxygen not found") +ENDIF(DOXYGEN) diff --git a/muse/muse/event.h b/muse/muse/event.h index 9352eb38..c44ca622 100644 --- a/muse/muse/event.h +++ b/muse/muse/event.h @@ -120,20 +120,16 @@ typedef std::pair <iEvent, iEvent> EventRange;  //    tick sorted list of events  //--------------------------------------------------------- -class EventList : public EL { -      int ref;          // number of references to this EventList +class EventListData : public EL, public QSharedData {        int aref;         // number of active references (exclude undo list)        void deselect();     public: -      EventList()           { ref = 0; aref = 0;  } -      ~EventList()          {} +      EventListData()           { aref = 0;  } +      ~EventListData()          {} -      void incRef(int n)    { ref += n;    } -      int refCount() const  { return ref;  }        void incARef(int n)   { aref += n;   }        int arefCount() const { return aref; } -        iEvent find(const Event&);        iEvent add(Event& event);        iEvent add(Event& event, unsigned tick); @@ -142,5 +138,34 @@ class EventList : public EL {        void read(QDomNode, bool midi);        }; +class EventList { +      QSharedDataPointer<EventListData> d; + +   public: +      EventList()                             { d = new EventListData(); } +      void incARef(int n)                     { d->incARef(n);           } +      int arefCount() const                   { return d->arefCount();   } +      iEvent find(const Event& event)         { return d->find(event);   } +      iEvent add(Event& event)                { return d->add(event);    } +      iEvent add(Event& event, unsigned tick) { return d->add(event, tick); } +      void move(Event& event, unsigned tick)  { d->move(event, tick);    } +      void dump() const                       { d->dump();               } +      void read(QDomNode n, bool midi)        { d->read(n, midi);        } +      iEvent begin()                          { return d->begin(); } +      iEvent end()                            { return d->end(); } +      ciEvent begin() const                   { return d->begin(); } +      ciEvent end() const                     { return d->end(); } +      iEvent lower_bound(unsigned n)          { return d->lower_bound(n); } +      ciEvent lower_bound(unsigned n) const   { return d->lower_bound(n); } +      iEvent upper_bound(unsigned n)          { return d->upper_bound(n); } +      ciEvent upper_bound(unsigned n) const   { return d->upper_bound(n); } +      EventRange equal_range(unsigned n)      { return d->equal_range(n); } +      void clear()                            { d->clear(); } +      bool empty() const                      { return d->empty(); } +      void erase(iEvent i)                    { d->erase(i); } +      void erase(iEvent i, iEvent k)          { d->erase(i, k); } +      unsigned size() const                   { return d->size(); } +      }; +  #endif diff --git a/muse/muse/eventlist.cpp b/muse/muse/eventlist.cpp index 0ba0ee57..9ce2930a 100644 --- a/muse/muse/eventlist.cpp +++ b/muse/muse/eventlist.cpp @@ -25,7 +25,7 @@  //   readEventList  //--------------------------------------------------------- -void EventList::read(QDomNode node, bool midi) +void EventListData::read(QDomNode node, bool midi)        {        for (; !node.isNull(); node = node.nextSibling()) {              QDomElement e = node.toElement(); @@ -38,7 +38,7 @@ void EventList::read(QDomNode node, bool midi)                    add(e);                    }              else -                  printf("EventList:read(): unknown tag %s\n", tag.toAscii().data()); +                  printf("EventListData:read(): unknown tag %s\n", tag.toAscii().data());              }        } @@ -46,12 +46,12 @@ void EventList::read(QDomNode node, bool midi)  //   add  //--------------------------------------------------------- -iEvent EventList::add(Event& event, unsigned tick) +iEvent EventListData::add(Event& event, unsigned tick)        {        return std::multimap<unsigned, Event, std::less<unsigned> >::insert(std::pair<const unsigned, Event> (tick, event));        } -iEvent EventList::add(Event& event) +iEvent EventListData::add(Event& event)        {        return add(event, event.tick());        } @@ -60,7 +60,7 @@ iEvent EventList::add(Event& event)  //   move  //--------------------------------------------------------- -void EventList::move(Event& event, unsigned tick) +void EventListData::move(Event& event, unsigned tick)        {        iEvent i = find(event);        erase(i); @@ -71,7 +71,7 @@ void EventList::move(Event& event, unsigned tick)  //   find  //--------------------------------------------------------- -iEvent EventList::find(const Event& event) +iEvent EventListData::find(const Event& event)        {        EventRange range = equal_range(event.tick());        for (iEvent i = range.first; i != range.second; ++i) { @@ -85,7 +85,7 @@ iEvent EventList::find(const Event& event)  //   dump  //--------------------------------------------------------- -void EventList::dump() const +void EventListData::dump() const        {        for (ciEvent i = begin(); i != end(); ++i)              i->second.dump(); diff --git a/muse/muse/midiedit/drumedit.cpp b/muse/muse/midiedit/drumedit.cpp index f4370e36..04a5766a 100644 --- a/muse/muse/midiedit/drumedit.cpp +++ b/muse/muse/midiedit/drumedit.cpp @@ -51,17 +51,10 @@ DrumEdit::DrumEdit(PartList* pl, bool init)        deltaMode   = false;        drumMap    = &noDrumMap; -#if 0 //TODOB -      cutAction->setShortcut(shortcuts[SHRT_CUT].key); -      copyAction->setShortcut(shortcuts[SHRT_COPY].key); -      pasteAction->setShortcut(shortcuts[SHRT_PASTE].key); -#endif -        //---------Pulldown Menu----------------------------        QMenuBar* mb = menuBar();        menuEdit->addSeparator(); -        menuEdit->addAction(getAction("delete", this));        // Functions @@ -109,7 +102,6 @@ DrumEdit::DrumEdit(PartList* pl, bool init)        QToolBar* transport = addToolBar(tr("Transport"));        muse->setupTransportToolbar(transport); -      // dontīch value in toolbar        addToolBarBreak();        toolbar = new Toolbar1(initRaster, initQuant, false);        addToolBar(toolbar); @@ -160,6 +152,23 @@ DrumEdit::DrumEdit(PartList* pl, bool init)        sc->setContext(Qt::WindowShortcut);        connect(sc, SIGNAL(activated()), SLOT(close())); +      QSignalMapper* cmdMap = new QSignalMapper(this); +      static const char* actions[] = {  +            "curpos_increase", "curpos_decrease", +            "pointer", "pencil", "eraser", +            "midi_quant_1", "midi_quant_2", "midi_quant_3", "midi_quant_4", +            "midi_quant_5", "midi_quant_6", "midi_quant_7",  +            "midi_quant_triol", "midi_quant_punct", "midi_quant_punct2" +            }; +      for (unsigned i = 0; i < sizeof(actions)/sizeof(*actions); ++i) { +            QAction* a = getAction(actions[i], this); +            addAction(a); +            cmdMap->setMapping(a, a); +            connect(a, SIGNAL(triggered()), cmdMap, SLOT(map())); +            } +      connect(cmdMap, SIGNAL(mapped(QObject*)), SLOT(drumCmd(QObject*))); + +        connect(song, SIGNAL(songChanged(int)), canvas(), SLOT(songChanged(int)));        connect(followSongAction, SIGNAL(toggled(bool)), canvas(), SLOT(setFollow(bool)));        canvas()->selectFirst(); @@ -318,32 +327,21 @@ void DrumEdit::cmd(QAction* a)        }  //--------------------------------------------------------- -//   configChanged +//   keyPressEvent  //--------------------------------------------------------- -void DrumEdit::configChanged() +void DrumEdit::drumCmd(QObject* object)        { -      } +      QAction* a = (QAction*)object; +      QString cmd(a->data().toString()); -#if 0 -static int rasterTable[] = { -      //-9----8-  7    6     5     4    3(1/4)     2   1 -      4,  8, 16, 32,  64, 128, 256,  512, 1024,  // triple -      6, 12, 24, 48,  96, 192, 384,  768, 1536, -      9, 18, 36, 72, 144, 288, 576, 1152, 2304   // dot -      }; -#endif +      static const int rasterTable[] = { +            //-9----8-  7    6     5     4    3(1/4)     2   1 +            4,  8, 16, 32,  64, 128, 256,  512, 1024,  // triple +            6, 12, 24, 48,  96, 192, 384,  768, 1536, +            9, 18, 36, 72, 144, 288, 576, 1152, 2304   // dot +            }; -//--------------------------------------------------------- -//   keyPressEvent -//--------------------------------------------------------- - -void DrumEdit::keyPressEvent(QKeyEvent* event) -      { -      event->ignore(); -      return; -#if 0 -//TODOB        DrumCanvas* dc = canvas();        int index = 0;        int n = sizeof(rasterTable); @@ -353,56 +351,47 @@ void DrumEdit::keyPressEvent(QKeyEvent* event)        int off = (index / 9) * 9;        index   = index % 9;        int val; -      int key = event->key(); -      if (event->modifiers() & Qt::ShiftModifier) -            key += Qt::SHIFT; -      if (event->modifiers() & Qt::AltModifier) -            key += Qt::ALT; -      if (event->modifiers() & Qt::ControlModifier) -            key+= Qt::CTRL; - -      if (key == shortcuts[SHRT_POS_INC].key) { -            dc->cmd(DrumCanvas::CMD_RIGHT); +      if (cmd == "curpos_increase") { +            dc->cmd(a);              return;              } -      else if (key == shortcuts[SHRT_POS_DEC].key) { -            dc->cmd(DrumCanvas::CMD_LEFT); +      else if (cmd == "curpos_decrease") { +            dc->cmd(a);              return;              } - -      else if (key == shortcuts[SHRT_TOOL_POINTER].key) { +      else if (cmd == "pointer") {              tools2->set(PointerTool);              return;              } -      else if (key == shortcuts[SHRT_TOOL_PENCIL].key) { +      else if (cmd == "pencil") {              tools2->set(PencilTool);              return;              } -      else if (key == shortcuts[SHRT_TOOL_RUBBER].key) { +      else if (cmd == "eraser") {              tools2->set(RubberTool);              return;              } -      else if (key == shortcuts[SHRT_SET_QUANT_1].key) +      else if (cmd == "midi_quant_1")              val = rasterTable[8 + off]; -      else if (key == shortcuts[SHRT_SET_QUANT_2].key) +      else if (cmd == "midi_quant_2")              val = rasterTable[7 + off]; -      else if (key == shortcuts[SHRT_SET_QUANT_3].key) +      else if (cmd == "midi_quant_3")              val = rasterTable[6 + off]; -      else if (key == shortcuts[SHRT_SET_QUANT_4].key) +      else if (cmd == "midi_quant_4")              val = rasterTable[5 + off]; -      else if (key == shortcuts[SHRT_SET_QUANT_5].key) +      else if (cmd == "midi_quant_5")              val = rasterTable[4 + off]; -      else if (key == shortcuts[SHRT_SET_QUANT_6].key) +      else if (cmd == "midi_quant_6")              val = rasterTable[3 + off]; -      else if (key == shortcuts[SHRT_SET_QUANT_7].key) +      else if (cmd == "midi_quant_7")              val = rasterTable[2 + off]; -      else if (key == shortcuts[SHRT_TOGGLE_TRIOL].key) +      else if (cmd == "midi_quant_triol")              val = rasterTable[index + ((off == 0) ? 9 : 0)]; -      else if (key == shortcuts[SHRT_TOGGLE_PUNCT].key) +      else if (cmd == "midi_quant_punct")              val = rasterTable[index + ((off == 18) ? 9 : 18)]; -      else if (key == shortcuts[SHRT_TOGGLE_PUNCT2].key) {//CDW +      else if (cmd == "midi_quant_punct2") {              if ((off == 18) && (index > 2)) {                    val = rasterTable[index + 9 - 1];                    } @@ -412,15 +401,14 @@ void DrumEdit::keyPressEvent(QKeyEvent* event)              else                    return;              } -      else { //Default: -            event->ignore(); +      else { +            printf("DrumEdit::drumCmd: unknown cmd <%s>\n", cmd.toLatin1().data());              return;              }        setQuant(val);        setRaster(val);        toolbar->setQuant(quant());        toolbar->setRaster(raster()); -#endif        }  //--------------------------------------------------------- diff --git a/muse/muse/midiedit/drumedit.h b/muse/muse/midiedit/drumedit.h index 0283f508..20cf99f6 100644 --- a/muse/muse/midiedit/drumedit.h +++ b/muse/muse/midiedit/drumedit.h @@ -55,13 +55,12 @@ class DrumEdit : public MidiEditor {        virtual void closeEvent(QCloseEvent*);        QWidget* genToolbar(QWidget* parent); -      virtual void keyPressEvent(QKeyEvent*);        DrumCanvas* canvas() { return (DrumCanvas*)tcanvas; }     private slots:        void noteinfoChanged(NoteInfo::ValType type, int val);        virtual void cmd(QAction*); -      void configChanged(); +      void drumCmd(QObject* object);     public slots:        void setSelection(int, Event&, Part*); diff --git a/muse/muse/midiedit/pianoroll.cpp b/muse/muse/midiedit/pianoroll.cpp index 649c4955..e709bf45 100644 --- a/muse/muse/midiedit/pianoroll.cpp +++ b/muse/muse/midiedit/pianoroll.cpp @@ -72,7 +72,6 @@ PianoRoll::PianoRoll(PartList* pl, bool init)        QAction* a = getAction("delete", this);        menuEdit->addAction(a); -//TD?      a->setData(PianoCanvas::CMD_DEL);        menuEdit->addSeparator(); @@ -210,22 +209,26 @@ PianoRoll::PianoRoll(PartList* pl, bool init)        //        // install misc shortcuts        // -       -      a = getAction("curpos_increase", this); -      a->setShortcutContext(Qt::WindowShortcut); -      addAction(a); -      connect(a, SIGNAL(triggered()), SLOT(cmdRight())); - -      a = getAction("curpos_decrease", this); -      a->setShortcutContext(Qt::WindowShortcut); -      addAction(a); -      connect(a, SIGNAL(triggered()), SLOT(cmdLeft())); -        QShortcut* sc = new QShortcut(Qt::Key_Escape, this);        sc->setContext(Qt::WindowShortcut); -        connect(sc, SIGNAL(activated()), SLOT(close())); +      QSignalMapper* cmdMap = new QSignalMapper(this); +      static const char* actions[] = {  +            "curpos_increase", "curpos_decrease", +            "midi_insert_at_loc",  +            "midi_quant_1", "midi_quant_2", "midi_quant_3", "midi_quant_4", +            "midi_quant_5", "midi_quant_6", "midi_quant_7", +            "midi_quant_punct", "midi_quant_punct2", "midi_quant_triol", +            }; +      for (unsigned i = 0; i < sizeof(actions)/sizeof(*actions); ++i) { +            a = getAction(actions[i], this); +            addAction(a); +            cmdMap->setMapping(a, a); +            connect(a, SIGNAL(triggered()), cmdMap, SLOT(map())); +            } +      connect(cmdMap, SIGNAL(mapped(QObject*)), SLOT(pianoCmd(QObject*))); +        connect(song, SIGNAL(songChanged(int)), canvas(), SLOT(songChanged(int)));        connect(followSongAction, SIGNAL(toggled(bool)), canvas(), SLOT(setFollow(bool)));        canvas()->selectFirst(); @@ -243,32 +246,6 @@ PianoRoll::PianoRoll(PartList* pl, bool init)        }  //--------------------------------------------------------- -//   cmdLeft -//--------------------------------------------------------- - -void PianoRoll::cmdLeft() -      { -      canvas()->pianoCmd(MCMD_LEFT); -      } - -//--------------------------------------------------------- -//   cmdRight -//--------------------------------------------------------- - -void PianoRoll::cmdRight() -      { -      canvas()->pianoCmd(MCMD_RIGHT); -      } - -//--------------------------------------------------------- -//   configChanged -//--------------------------------------------------------- - -void PianoRoll::configChanged() -      { -      } - -//---------------------------------------------------------  //   cmd  //    pulldown menu commands  //--------------------------------------------------------- @@ -395,12 +372,14 @@ void PianoRoll::soloChanged(bool flag)        }  //--------------------------------------------------------- -//   viewKeyPressEvent +//   pianoCmd  //--------------------------------------------------------- -void PianoRoll::keyPressEvent(QKeyEvent* event) +void PianoRoll::pianoCmd(QObject* object)        { -#if 0 //TODOB +      QAction* a = (QAction*)object; +      QString cmd(a->data().toString()); +        static int rasterTable[] = {              //-9----8-  7    6     5     4    3(1/4)     2   1              4,  8, 16, 32,  64, 128, 256,  512, 1024,  // triple @@ -408,11 +387,6 @@ void PianoRoll::keyPressEvent(QKeyEvent* event)              9, 18, 36, 72, 144, 288, 576, 1152, 2304   // dot              }; -      if (info->hasFocus()) { -            event->ignore(); -            return; -            } -        int index;        int n = sizeof(rasterTable)/sizeof(*rasterTable);        for (index = 0; index < n; ++index) @@ -428,42 +402,39 @@ void PianoRoll::keyPressEvent(QKeyEvent* event)        int val = 0;        PianoCanvas* pc = canvas(); -      int key = event->key(); -      if (key == shortcuts[SHRT_INSERT_AT_LOCATION].key) { +      if (cmd == "curpos_increase") +            canvas()->pianoCmd(MCMD_LEFT); +      else if (cmd == "curpos_decrease") +            canvas()->pianoCmd(MCMD_RIGHT); +      else if (cmd == "midi_insert_at_loc") {              pc->pianoCmd(MCMD_INSERT);              return;              } -      else if (key == Qt::Key_Delete) { -            pc->pianoCmd(MCMD_DELETE); -            return; -            } -      else if (key == shortcuts[SHRT_SET_QUANT_1].key) +      else if (cmd == "midi_quant_1")              val = rasterTable[8 + off]; -      else if (key == shortcuts[SHRT_SET_QUANT_2].key) +      else if (cmd == "midi_quant_2")              val = rasterTable[7 + off]; -      else if (key == shortcuts[SHRT_SET_QUANT_3].key) +      else if (cmd == "midi_quant_3")              val = rasterTable[6 + off]; -      else if (key == shortcuts[SHRT_SET_QUANT_4].key) +      else if (cmd == "midi_quant_4")              val = rasterTable[5 + off]; -      else if (key == shortcuts[SHRT_SET_QUANT_5].key) +      else if (cmd == "midi_quant_5")              val = rasterTable[4 + off]; -      else if (key == shortcuts[SHRT_SET_QUANT_6].key) +      else if (cmd == "midi_quant_6")              val = rasterTable[3 + off]; -      else if (key == shortcuts[SHRT_SET_QUANT_7].key) +      else if (cmd == "midi_quant_7")              val = rasterTable[2 + off]; -      else if (key == shortcuts[SHRT_TOGGLE_TRIOL].key) +      else if (cmd == "midi_quant_triol")              val = rasterTable[index + ((off == 0) ? 9 : 0)]; - -      else if (key == shortcuts[SHRT_EVENT_COLOR].key) { +      else if (cmd == "change_event_color") {              _colorMode = (_colorMode + 1) % 3;              setEventColorMode(_colorMode);              return;              } -      else if (key == shortcuts[SHRT_TOGGLE_PUNCT].key) +      else if (cmd == "midi_quant_punct")              val = rasterTable[index + ((off == 18) ? 9 : 18)]; - -      else if (key == shortcuts[SHRT_TOGGLE_PUNCT2].key) { +      else if (cmd == "midi_quant_punct2") {              if ((off == 18) && (index > 2)) {                    val = rasterTable[index + 9 - 1];                    } @@ -473,17 +444,12 @@ void PianoRoll::keyPressEvent(QKeyEvent* event)              else                    return;              } -      else { //Default: -            event->ignore(); -            return; -            } - +      else +            printf("unknown cmd <%s>\n", cmd.toLatin1().data());        setQuant(val);        setRaster(val);        toolbar->setQuant(quant());        toolbar->setRaster(raster()); -#endif -      event->ignore();        }  //--------------------------------------------------------- diff --git a/muse/muse/midiedit/pianoroll.h b/muse/muse/midiedit/pianoroll.h index 3d9a9ae1..e510408c 100644 --- a/muse/muse/midiedit/pianoroll.h +++ b/muse/muse/midiedit/pianoroll.h @@ -70,7 +70,6 @@ class PianoRoll : public MidiEditor {        QuantConfig* quantConfig;        QWidget* genToolbar(QWidget* parent); -      virtual void keyPressEvent(QKeyEvent*);        void setEventColorMode(int);        PianoCanvas* canvas() { return (PianoCanvas*)tcanvas; }        const PianoCanvas* canvas() const { return (PianoCanvas*)tcanvas; } @@ -83,9 +82,7 @@ class PianoRoll : public MidiEditor {        virtual void cmd(QAction*);        void setEventColorMode(QAction*); -      void configChanged(); -      void cmdLeft(); -      void cmdRight(); +      void pianoCmd(QObject*);     public:        PianoRoll(PartList*, bool); diff --git a/muse/muse/part.cpp b/muse/muse/part.cpp index ea8ca457..fa199036 100644 --- a/muse/muse/part.cpp +++ b/muse/muse/part.cpp @@ -27,23 +27,23 @@  #include "al/tempo.h"  const char* partColorNames[] = { -      "Default", -      "Refrain", -      "Bridge", -      "Intro", -      "Coda", -      "Chorus", -      "Solo", -      "Brass", -      "Percussion", -      "Drums", -      "Guitar", -      "Bass", -      "Flute", -      "Strings", -      "Keyboard", -      "Piano", -      "Saxophon", +      QT_TR_NOOP("Default"), +      QT_TR_NOOP("Refrain"), +      QT_TR_NOOP("Bridge"), +      QT_TR_NOOP("Intro"), +      QT_TR_NOOP("Coda"), +      QT_TR_NOOP("Chorus"), +      QT_TR_NOOP("Solo"), +      QT_TR_NOOP("Brass"), +      QT_TR_NOOP("Percussion"), +      QT_TR_NOOP("Drums"), +      QT_TR_NOOP("Guitar"), +      QT_TR_NOOP("Bass"), +      QT_TR_NOOP("Flute"), +      QT_TR_NOOP("Strings"), +      QT_TR_NOOP("Keyboard"), +      QT_TR_NOOP("Piano"), +      QT_TR_NOOP("Saxophon"),        };  CloneList cloneList; @@ -62,7 +62,6 @@ void Part::init()        _mute       = false;        _colorIndex = 0;        _fillLen    = 0; -      _events->incRef(1);        _events->incARef(1);        if (_track->type() == Track::WAVE)              setType(AL::FRAMES); @@ -92,7 +91,6 @@ Part::Part(const Part& p)        _raster     = p._raster;        _xmag       = p._xmag;        _fillLen    = p._fillLen; -      _events->incRef(1);        }  Part::Part(const Part& p, EventList* el) @@ -108,7 +106,6 @@ Part::Part(const Part& p, EventList* el)        _xmag       = p._xmag;        _fillLen    = p._fillLen;        _events     = el; -      _events->incRef(1);        _events->incARef(1);        } @@ -129,9 +126,6 @@ Part::Part(Track* t, EventList* el)  Part::~Part()        { -      _events->incRef(-1); -      if (_events->refCount() <= 0) -            delete _events;        }  //--------------------------------------------------------- @@ -386,7 +380,6 @@ void Part::read(QDomNode node)                          if (i->id == id) {                                delete _events;                                _events = (EventList*)(i->el); -                              _events->incRef(1);                                _events->incARef(1);                                break;                                } diff --git a/muse/muse/shortcuts.cpp b/muse/muse/shortcuts.cpp index 4381baa7..0df5f43e 100644 --- a/muse/muse/shortcuts.cpp +++ b/muse/muse/shortcuts.cpp @@ -117,7 +117,6 @@ Shortcut MuseApplication::sc[] = {              ":/xpm/recordOn.svg",              ":/xpm/recordOff.svg"              ), -//------        Shortcut(              "punchin",              QT_TR_NOOP("Transport: Punch In"), @@ -163,8 +162,6 @@ Shortcut MuseApplication::sc[] = {              QT_TR_NOOP("send note off to all midi channels"),              ":/xpm/panic.xpm"              ), - -        Shortcut(              "copy",              QT_TR_NOOP("Edit: Copy"), @@ -942,6 +939,12 @@ Shortcut MuseApplication::sc[] = {              Qt::Key_Comma              ),        Shortcut( +            "midi_insert_at_loc", +            QT_TR_NOOP("Insert"), +            PROLL_SHRT,   +            Qt::SHIFT + Qt::Key_Right +            ), +      Shortcut(              "lm_ins_tempo",              QT_TR_NOOP("Insert Tempo"),              LMEDIT_SHRT,   @@ -1011,7 +1014,7 @@ QAction* getAction(const char* id, QObject* parent)              printf("interanl error: shortcut <%s> not found\n", id);              return 0;              } -      if (s->action == 0 || s->action->parent() != parent) { +      if (s->action == 0 || (s->action->parent() != parent)) {              s->action = new QAction(s->xml, parent);              s->action->setData(s->xml);              s->action->setShortcut(s->key); diff --git a/muse/muse/widgets/shortcutconfig.cpp b/muse/muse/widgets/shortcutconfig.cpp index da8390b4..025f1494 100644 --- a/muse/muse/widgets/shortcutconfig.cpp +++ b/muse/muse/widgets/shortcutconfig.cpp @@ -37,6 +37,7 @@ ShortcutConfig::ShortcutConfig(QWidget* parent)        connect(defineButton, SIGNAL(pressed()), this, SLOT(assignShortcut()));        connect(clearButton,  SIGNAL(pressed()), this, SLOT(clearShortcut()));        connect(applyButton,  SIGNAL(pressed()), this, SLOT(assignAll())); +      connect(scListView, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), this, SLOT(assignShortcut()));        current_category = ALL_SHRT;  //TD   cgListView->setSorting(SHRT_CATEGORY_COL, -1); @@ -84,8 +85,6 @@ void ShortcutConfig::assignShortcut()        if (sc.exec()) {              s->key = sc.getKey();              active->setText(SHRT_SHRTCUT_COL, s->key.toString(QKeySequence::NativeText)); -            if (s->action) -                  s->action->setShortcut(s->key);              _config_changed = true;              }        clearButton->setEnabled(true); @@ -146,5 +145,23 @@ void ShortcutConfig::closeEvent(QCloseEvent*)  void ShortcutConfig::assignAll()        { +      foreach(QWidget* w, QApplication::allWidgets()) { +            foreach(QAction* a, w->actions()) { +                  QVariant v(a->data()); +                  if (v.type() == QVariant::String) { +                        QString name = v.toString(); +                        foreach (Shortcut* s, shortcuts) { +                              if (s->xml == name) { +                                    if (a->shortcut() != s->key) { +                                          printf("shortcut <%s> changed\n", s->xml); +                                          a->setShortcuts(QList<QKeySequence>()); +                                          a->setShortcut(s->key); +                                          } +                                    } +                              } +                        } +                  } +            }        done(_config_changed);        } + diff --git a/muse/muse/widgets/shortcutconfig.ui b/muse/muse/widgets/shortcutconfig.ui index 92b82dd7..901e2cac 100644 --- a/muse/muse/widgets/shortcutconfig.ui +++ b/muse/muse/widgets/shortcutconfig.ui @@ -5,7 +5,7 @@     <rect>      <x>0</x>      <y>0</y> -    <width>537</width> +    <width>661</width>      <height>403</height>     </rect>    </property> @@ -17,108 +17,96 @@    </property>    <layout class="QVBoxLayout" >     <property name="margin" > -    <number>11</number> +    <number>9</number>     </property>     <property name="spacing" >      <number>6</number>     </property>     <item> -    <widget class="QGroupBox" name="groupBox3" > -     <property name="title" > -      <string/> +    <widget class="QSplitter" name="splitter" > +     <property name="orientation" > +      <enum>Qt::Horizontal</enum>       </property> -     <layout class="QHBoxLayout" > -      <property name="margin" > +     <widget class="QTreeWidget" name="cgListView" > +      <property name="sizePolicy" > +       <sizepolicy> +        <hsizetype>5</hsizetype> +        <vsizetype>7</vsizetype> +        <horstretch>1</horstretch> +        <verstretch>0</verstretch> +       </sizepolicy> +      </property> +      <property name="minimumSize" > +       <size> +        <width>105</width> +        <height>200</height> +       </size> +      </property> +      <property name="indentation" > +       <number>0</number> +      </property> +      <property name="rootIsDecorated" > +       <bool>false</bool> +      </property> +      <property name="sortingEnabled" > +       <bool>true</bool> +      </property> +      <property name="columnCount" > +       <number>1</number> +      </property> +      <column> +       <property name="text" > +        <string>Category</string> +       </property> +      </column> +     </widget> +     <widget class="QTreeWidget" name="scListView" > +      <property name="sizePolicy" > +       <sizepolicy> +        <hsizetype>7</hsizetype> +        <vsizetype>7</vsizetype> +        <horstretch>2</horstretch> +        <verstretch>0</verstretch> +       </sizepolicy> +      </property> +      <property name="minimumSize" > +       <size> +        <width>170</width> +        <height>230</height> +       </size> +      </property> +      <property name="alternatingRowColors" > +       <bool>true</bool> +      </property> +      <property name="indentation" >         <number>0</number>        </property> -      <property name="spacing" > -       <number>3</number> +      <property name="rootIsDecorated" > +       <bool>false</bool> +      </property> +      <property name="uniformRowHeights" > +       <bool>true</bool> +      </property> +      <property name="sortingEnabled" > +       <bool>true</bool>        </property> -      <item> -       <widget class="QTreeWidget" name="cgListView" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>5</hsizetype> -          <vsizetype>7</vsizetype> -          <horstretch>1</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -        <property name="minimumSize" > -         <size> -          <width>105</width> -          <height>200</height> -         </size> -        </property> -        <property name="indentation" > -         <number>0</number> -        </property> -        <property name="rootIsDecorated" > -         <bool>false</bool> -        </property> -        <property name="sortingEnabled" > -         <bool>true</bool> -        </property> -        <property name="columnCount" > -         <number>1</number> -        </property> -        <column> -         <property name="text" > -          <string>Category</string> -         </property> -        </column> -       </widget> -      </item> -      <item> -       <widget class="QTreeWidget" name="scListView" > -        <property name="sizePolicy" > -         <sizepolicy> -          <hsizetype>7</hsizetype> -          <vsizetype>7</vsizetype> -          <horstretch>2</horstretch> -          <verstretch>0</verstretch> -         </sizepolicy> -        </property> -        <property name="minimumSize" > -         <size> -          <width>170</width> -          <height>230</height> -         </size> -        </property> -        <property name="alternatingRowColors" > -         <bool>true</bool> -        </property> -        <property name="indentation" > -         <number>0</number> -        </property> -        <property name="rootIsDecorated" > -         <bool>false</bool> -        </property> -        <property name="uniformRowHeights" > -         <bool>true</bool> -        </property> -        <property name="sortingEnabled" > -         <bool>true</bool> -        </property> -        <property name="allColumnsShowFocus" > -         <bool>true</bool> -        </property> -        <property name="columnCount" > -         <number>2</number> -        </property> -        <column> -         <property name="text" > -          <string>Description</string> -         </property> -        </column> -        <column> -         <property name="text" > -          <string>Shortcut</string> -         </property> -        </column> -       </widget> -      </item> -     </layout> +      <property name="allColumnsShowFocus" > +       <bool>true</bool> +      </property> +      <property name="columnCount" > +       <number>2</number> +      </property> +      <column> +       <property name="text" > +        <string>Description</string> +       </property> +      </column> +      <column> +       <property name="text" > +        <string>Shortcut</string> +       </property> +      </column> +     </widget>      </widget>     </item>     <item> @@ -130,22 +118,6 @@        <number>6</number>       </property>       <item> -      <spacer> -       <property name="orientation" > -        <enum>Qt::Horizontal</enum> -       </property> -       <property name="sizeType" > -        <enum>QSizePolicy::Expanding</enum> -       </property> -       <property name="sizeHint" > -        <size> -         <width>150</width> -         <height>21</height> -        </size> -       </property> -      </spacer> -     </item> -     <item>        <widget class="QPushButton" name="clearButton" >         <property name="enabled" >          <bool>false</bool> @@ -190,7 +162,7 @@       <item>        <widget class="QPushButton" name="applyButton" >         <property name="text" > -        <string>&Apply</string> +        <string>Ok</string>         </property>         <property name="shortcut" >          <string>Alt+A</string>  | 
