From 80fd2c0205bfe983507c068893d0761673e9ebaa Mon Sep 17 00:00:00 2001 From: Reto Zingg Date: Thu, 6 Dec 2012 17:35:33 +0200 Subject: [PATCH] remove, rename and delete --- AUTHORS | 3 - CMakeLists.txt | 32 - COPYING | 339 - COPYING-CMAKE-SCRIPTS | 22 - COPYING.LIB | 481 -- LibKdeEduConfig.cmake.in | 45 - Mainpage.dox | 15 - Messages.sh | 6 - README | 21 - data/CMakeLists.txt | 2 - data/README_packagers | 14 - data/kvtml/CMakeLists.txt | 5 - data/kvtml/README_packagers | 14 - data/kvtml/animals.kvtml | 368 - data/kvtml/clothing.kvtml | 152 - data/kvtml/computers.kvtml | 128 - data/kvtml/currencies.kvtml | 184 - data/kvtml/easy.kvtml | 454 -- data/kvtml/fruits.kvtml | 208 - data/kvtml/hard.kvtml | 454 -- data/kvtml/inventions.kvtml | 240 - data/kvtml/medium.kvtml | 462 -- data/kvtml/numbers.kvtml | 296 - data/kvtml/objects.kvtml | 248 - data/kvtml/people.kvtml | 152 - data/kvtml/professions.kvtml | 328 - data/kvtml/space.kvtml | 248 - data/kvtml/sports.kvtml | 264 - data/kvtml/translations.txt | 14 - data/kvtml/transportation.kvtml | 176 - data/kvtml/vegetables.kvtml | 248 - data/kvtml/worldcapitals.kvtml | 432 -- icons/CMakeLists.txt | 1 - icons/hi16-action-editplots.png | Bin 774 -> 0 bytes icons/hi16-action-functionhelp.png | Bin 761 -> 0 bytes icons/hi16-action-integral_func.png | Bin 530 -> 0 bytes icons/hi16-action-maximum.png | Bin 537 -> 0 bytes icons/hi16-action-minimum.png | Bin 532 -> 0 bytes icons/hi16-action-newdifferential.png | Bin 596 -> 0 bytes icons/hi16-action-newfunction.png | Bin 723 -> 0 bytes icons/hi16-action-newimplicit.png | Bin 626 -> 0 bytes icons/hi16-action-newparametric.png | Bin 803 -> 0 bytes icons/hi16-action-newpolar.png | Bin 696 -> 0 bytes icons/hi16-action-resetview.png | Bin 184 -> 0 bytes icons/hi22-action-editplots.png | Bin 1122 -> 0 bytes icons/hi22-action-functionhelp.png | Bin 1152 -> 0 bytes icons/hi22-action-maximum.png | Bin 717 -> 0 bytes icons/hi22-action-minimum.png | Bin 719 -> 0 bytes icons/hi22-action-newdifferential.png | Bin 991 -> 0 bytes icons/hi22-action-newfunction.png | Bin 1025 -> 0 bytes icons/hi22-action-newimplicit.png | Bin 1055 -> 0 bytes icons/hi22-action-newparametric.png | Bin 1156 -> 0 bytes icons/hi22-action-newpolar.png | Bin 994 -> 0 bytes icons/hi22-action-resetview.png | Bin 207 -> 0 bytes icons/hi32-action-coords.png | Bin 216 -> 0 bytes icons/hi32-action-deriv_func.png | Bin 701 -> 0 bytes icons/hi32-action-editconstants.png | Bin 1256 -> 0 bytes icons/hi32-action-editplots.png | Bin 1553 -> 0 bytes icons/hi32-action-func.png | Bin 1253 -> 0 bytes icons/hi32-action-functionhelp.png | Bin 1759 -> 0 bytes icons/hi32-action-integral_func.png | Bin 973 -> 0 bytes icons/hi32-action-lessen.png | Bin 389 -> 0 bytes icons/hi32-action-magnify.png | Bin 701 -> 0 bytes icons/hi32-action-maximum.png | Bin 1047 -> 0 bytes icons/hi32-action-minimum.png | Bin 1079 -> 0 bytes icons/hi32-action-newdifferential.png | Bin 1450 -> 0 bytes icons/hi32-action-newfunction.png | Bin 1501 -> 0 bytes icons/hi32-action-newimplicit.png | Bin 1498 -> 0 bytes icons/hi32-action-newparametric.png | Bin 1604 -> 0 bytes icons/hi32-action-newpolar.png | Bin 1318 -> 0 bytes icons/hi32-action-resetview.png | Bin 238 -> 0 bytes icons/hi48-action-editplots.png | Bin 2534 -> 0 bytes icons/hi48-action-functionhelp.png | Bin 2880 -> 0 bytes icons/hi48-action-maximum.png | Bin 1651 -> 0 bytes icons/hi48-action-minimum.png | Bin 1619 -> 0 bytes icons/hi48-action-newdifferential.png | Bin 1846 -> 0 bytes icons/hi48-action-newfunction.png | Bin 2026 -> 0 bytes icons/hi48-action-newimplicit.png | Bin 1932 -> 0 bytes icons/hi48-action-newparametric.png | Bin 2500 -> 0 bytes icons/hi48-action-newpolar.png | Bin 2087 -> 0 bytes icons/hi48-action-resetview.png | Bin 289 -> 0 bytes icons/hi64-action-maximum.png | Bin 1821 -> 0 bytes icons/hi64-action-minimum.png | Bin 1858 -> 0 bytes icons/hisc-action-deriv_func.svgz | Bin 1585 -> 0 bytes icons/hisc-action-editconstants.svgz | Bin 2610 -> 0 bytes icons/hisc-action-editplots.svgz | Bin 3279 -> 0 bytes icons/hisc-action-functionhelp.svgz | Bin 2614 -> 0 bytes icons/hisc-action-integral_func.svgz | Bin 1596 -> 0 bytes icons/hisc-action-maximum.svgz | Bin 1704 -> 0 bytes icons/hisc-action-minimum.svgz | Bin 1702 -> 0 bytes icons/hisc-action-newfunction.svgz | Bin 2034 -> 0 bytes icons/hisc-action-newparametric.svgz | Bin 2195 -> 0 bytes icons/hisc-action-newpolar.svgz | Bin 2287 -> 0 bytes icons/hisc-action-resetview.svgz | Bin 1270 -> 0 bytes .../keduvocarticle.cpp => keduvocarticle.cpp | 0 .../keduvocarticle.h => keduvocarticle.h | 0 .../keduvoccommon_p.h => keduvoccommon_p.h | 0 ...cconjugation.cpp => keduvocconjugation.cpp | 0 ...duvocconjugation.h => keduvocconjugation.h | 0 ...duvoccontainer.cpp => keduvoccontainer.cpp | 0 .../keduvoccontainer.h => keduvoccontainer.h | 0 ...duvoccsvreader.cpp => keduvoccsvreader.cpp | 0 .../keduvoccsvreader.h => keduvoccsvreader.h | 0 ...duvoccsvwriter.cpp => keduvoccsvwriter.cpp | 0 .../keduvoccsvwriter.h => keduvoccsvwriter.h | 0 ...vocdeclension.cpp => keduvocdeclension.cpp | 0 ...keduvocdeclension.h => keduvocdeclension.h | 0 ...keduvocdocument.cpp => keduvocdocument.cpp | 0 .../keduvocdocument.h => keduvocdocument.h | 0 keduvocdocument/CMakeLists.txt | 74 - keduvocdocument/Mainpage.dox | 36 - keduvocdocument/TODO | 10 - .../docs/basic_vocabulary_en2de.kvtml | 1352 ---- keduvocdocument/docs/elek.lex | 191 - keduvocdocument/docs/kvtml-structure.txt | 258 - keduvocdocument/docs/kvtml-version1.dtd | 52 - .../docs/kvtml_html_stylesheet.xsl | 103 - keduvocdocument/docs/lex-aufbau1.txt | 58 - keduvocdocument/docs/lex-aufbau2.txt | 127 - keduvocdocument/kvtml_empty_sample.kvtml | 142 - keduvocdocument/tests/CMakeLists.txt | 28 - keduvocdocument/tests/converter.cpp | 81 - .../tests/keduvocdocumentvalidatortest.cpp | 253 - keduvocdocument/tests/loader.cpp | 18 - ...vocexpression.cpp => keduvocexpression.cpp | 0 ...keduvocexpression.h => keduvocexpression.h | 0 ...vocidentifier.cpp => keduvocidentifier.cpp | 0 ...keduvocidentifier.h => keduvocidentifier.h | 0 ...vtml2reader.cpp => keduvockvtml2reader.cpp | 0 ...vockvtml2reader.h => keduvockvtml2reader.h | 0 ...vtml2writer.cpp => keduvockvtml2writer.cpp | 0 ...vockvtml2writer.h => keduvockvtml2writer.h | 0 ...ability.cpp => keduvockvtmlcompability.cpp | 0 ...compability.h => keduvockvtmlcompability.h | 0 ...ckvtmlreader.cpp => keduvockvtmlreader.cpp | 0 ...duvockvtmlreader.h => keduvockvtmlreader.h | 0 ...ckvtmlwriter.cpp => keduvockvtmlwriter.cpp | 0 ...duvockvtmlwriter.h => keduvockvtmlwriter.h | 0 ...vocleitnerbox.cpp => keduvocleitnerbox.cpp | 0 ...keduvocleitnerbox.h => keduvocleitnerbox.h | 0 .../keduvoclesson.cpp => keduvoclesson.cpp | 0 .../keduvoclesson.h => keduvoclesson.h | 0 ...plechoice.cpp => keduvocmultiplechoice.cpp | 0 ...ultiplechoice.h => keduvocmultiplechoice.h | 0 ...aukerreader.cpp => keduvocpaukerreader.cpp | 0 ...vocpaukerreader.h => keduvocpaukerreader.h | 0 ...lpronoun.cpp => keduvocpersonalpronoun.cpp | 0 ...sonalpronoun.h => keduvocpersonalpronoun.h | 0 .../keduvoctext.cpp => keduvoctext.cpp | 0 .../keduvoctext.h => keduvoctext.h | 0 ...ctranslation.cpp => keduvoctranslation.cpp | 0 ...duvoctranslation.h => keduvoctranslation.h | 0 ...elnreader.cpp => keduvocvokabelnreader.cpp | 0 ...okabelnreader.h => keduvocvokabelnreader.h | 0 .../keduvocwordflags.h => keduvocwordflags.h | 0 ...keduvocwordtype.cpp => keduvocwordtype.cpp | 0 .../keduvocwordtype.h => keduvocwordtype.h | 0 ...duvocwqlreader.cpp => keduvocwqlreader.cpp | 0 .../keduvocwqlreader.h => keduvocwqlreader.h | 0 ...vocxdxfreader.cpp => keduvocxdxfreader.cpp | 0 ...keduvocxdxfreader.h => keduvocxdxfreader.h | 0 keduvocdocument/kvtml2.dtd => kvtml2.dtd | 0 keduvocdocument/kvtml2.xsd => kvtml2.xsd | 0 keduvocdocument/kvtml2defs.h => kvtml2defs.h | 0 keduvocdocument/kvtml2todo => kvtml2todo | 0 keduvocdocument/kvtmldefs.h => kvtmldefs.h | 0 ...nt_export.h => libkeduvocdocument_export.h | 0 qtmmlwidget/CMakeLists.txt | 11 - qtmmlwidget/LICENSE.GPL | 674 -- qtmmlwidget/LICENSE.LGPL | 502 -- qtmmlwidget/QtMmlDocument | 1 - qtmmlwidget/QtMmlWidget | 1 - qtmmlwidget/qtmmlwidget.cpp | 6372 ----------------- qtmmlwidget/qtmmlwidget.h | 124 - ...aredkvtmlfiles.cpp => sharedkvtmlfiles.cpp | 0 .../sharedkvtmlfiles.h => sharedkvtmlfiles.h | 0 widgets/CMakeLists.txt | 18 - widgets/kdeedu.widgets | 4 - 178 files changed, 16546 deletions(-) delete mode 100644 AUTHORS delete mode 100644 CMakeLists.txt delete mode 100644 COPYING delete mode 100644 COPYING-CMAKE-SCRIPTS delete mode 100644 COPYING.LIB delete mode 100644 LibKdeEduConfig.cmake.in delete mode 100644 Mainpage.dox delete mode 100644 Messages.sh delete mode 100644 README delete mode 100644 data/CMakeLists.txt delete mode 100644 data/README_packagers delete mode 100644 data/kvtml/CMakeLists.txt delete mode 100644 data/kvtml/README_packagers delete mode 100644 data/kvtml/animals.kvtml delete mode 100644 data/kvtml/clothing.kvtml delete mode 100644 data/kvtml/computers.kvtml delete mode 100644 data/kvtml/currencies.kvtml delete mode 100644 data/kvtml/easy.kvtml delete mode 100644 data/kvtml/fruits.kvtml delete mode 100644 data/kvtml/hard.kvtml delete mode 100644 data/kvtml/inventions.kvtml delete mode 100644 data/kvtml/medium.kvtml delete mode 100644 data/kvtml/numbers.kvtml delete mode 100644 data/kvtml/objects.kvtml delete mode 100644 data/kvtml/people.kvtml delete mode 100644 data/kvtml/professions.kvtml delete mode 100644 data/kvtml/space.kvtml delete mode 100644 data/kvtml/sports.kvtml delete mode 100644 data/kvtml/translations.txt delete mode 100644 data/kvtml/transportation.kvtml delete mode 100644 data/kvtml/vegetables.kvtml delete mode 100644 data/kvtml/worldcapitals.kvtml delete mode 100644 icons/CMakeLists.txt delete mode 100644 icons/hi16-action-editplots.png delete mode 100644 icons/hi16-action-functionhelp.png delete mode 100644 icons/hi16-action-integral_func.png delete mode 100644 icons/hi16-action-maximum.png delete mode 100644 icons/hi16-action-minimum.png delete mode 100644 icons/hi16-action-newdifferential.png delete mode 100644 icons/hi16-action-newfunction.png delete mode 100644 icons/hi16-action-newimplicit.png delete mode 100644 icons/hi16-action-newparametric.png delete mode 100644 icons/hi16-action-newpolar.png delete mode 100644 icons/hi16-action-resetview.png delete mode 100644 icons/hi22-action-editplots.png delete mode 100644 icons/hi22-action-functionhelp.png delete mode 100644 icons/hi22-action-maximum.png delete mode 100644 icons/hi22-action-minimum.png delete mode 100644 icons/hi22-action-newdifferential.png delete mode 100644 icons/hi22-action-newfunction.png delete mode 100644 icons/hi22-action-newimplicit.png delete mode 100644 icons/hi22-action-newparametric.png delete mode 100644 icons/hi22-action-newpolar.png delete mode 100644 icons/hi22-action-resetview.png delete mode 100644 icons/hi32-action-coords.png delete mode 100644 icons/hi32-action-deriv_func.png delete mode 100644 icons/hi32-action-editconstants.png delete mode 100644 icons/hi32-action-editplots.png delete mode 100644 icons/hi32-action-func.png delete mode 100644 icons/hi32-action-functionhelp.png delete mode 100644 icons/hi32-action-integral_func.png delete mode 100644 icons/hi32-action-lessen.png delete mode 100644 icons/hi32-action-magnify.png delete mode 100644 icons/hi32-action-maximum.png delete mode 100644 icons/hi32-action-minimum.png delete mode 100644 icons/hi32-action-newdifferential.png delete mode 100644 icons/hi32-action-newfunction.png delete mode 100644 icons/hi32-action-newimplicit.png delete mode 100644 icons/hi32-action-newparametric.png delete mode 100644 icons/hi32-action-newpolar.png delete mode 100644 icons/hi32-action-resetview.png delete mode 100644 icons/hi48-action-editplots.png delete mode 100644 icons/hi48-action-functionhelp.png delete mode 100644 icons/hi48-action-maximum.png delete mode 100644 icons/hi48-action-minimum.png delete mode 100644 icons/hi48-action-newdifferential.png delete mode 100644 icons/hi48-action-newfunction.png delete mode 100644 icons/hi48-action-newimplicit.png delete mode 100644 icons/hi48-action-newparametric.png delete mode 100644 icons/hi48-action-newpolar.png delete mode 100644 icons/hi48-action-resetview.png delete mode 100644 icons/hi64-action-maximum.png delete mode 100644 icons/hi64-action-minimum.png delete mode 100644 icons/hisc-action-deriv_func.svgz delete mode 100644 icons/hisc-action-editconstants.svgz delete mode 100644 icons/hisc-action-editplots.svgz delete mode 100644 icons/hisc-action-functionhelp.svgz delete mode 100644 icons/hisc-action-integral_func.svgz delete mode 100644 icons/hisc-action-maximum.svgz delete mode 100644 icons/hisc-action-minimum.svgz delete mode 100644 icons/hisc-action-newfunction.svgz delete mode 100644 icons/hisc-action-newparametric.svgz delete mode 100644 icons/hisc-action-newpolar.svgz delete mode 100644 icons/hisc-action-resetview.svgz rename keduvocdocument/keduvocarticle.cpp => keduvocarticle.cpp (100%) rename keduvocdocument/keduvocarticle.h => keduvocarticle.h (100%) rename keduvocdocument/keduvoccommon_p.h => keduvoccommon_p.h (100%) rename keduvocdocument/keduvocconjugation.cpp => keduvocconjugation.cpp (100%) rename keduvocdocument/keduvocconjugation.h => keduvocconjugation.h (100%) rename keduvocdocument/keduvoccontainer.cpp => keduvoccontainer.cpp (100%) rename keduvocdocument/keduvoccontainer.h => keduvoccontainer.h (100%) rename keduvocdocument/keduvoccsvreader.cpp => keduvoccsvreader.cpp (100%) rename keduvocdocument/keduvoccsvreader.h => keduvoccsvreader.h (100%) rename keduvocdocument/keduvoccsvwriter.cpp => keduvoccsvwriter.cpp (100%) rename keduvocdocument/keduvoccsvwriter.h => keduvoccsvwriter.h (100%) rename keduvocdocument/keduvocdeclension.cpp => keduvocdeclension.cpp (100%) rename keduvocdocument/keduvocdeclension.h => keduvocdeclension.h (100%) rename keduvocdocument/keduvocdocument.cpp => keduvocdocument.cpp (100%) rename keduvocdocument/keduvocdocument.h => keduvocdocument.h (100%) delete mode 100644 keduvocdocument/CMakeLists.txt delete mode 100644 keduvocdocument/Mainpage.dox delete mode 100644 keduvocdocument/TODO delete mode 100644 keduvocdocument/docs/basic_vocabulary_en2de.kvtml delete mode 100644 keduvocdocument/docs/elek.lex delete mode 100644 keduvocdocument/docs/kvtml-structure.txt delete mode 100644 keduvocdocument/docs/kvtml-version1.dtd delete mode 100644 keduvocdocument/docs/kvtml_html_stylesheet.xsl delete mode 100644 keduvocdocument/docs/lex-aufbau1.txt delete mode 100644 keduvocdocument/docs/lex-aufbau2.txt delete mode 100644 keduvocdocument/kvtml_empty_sample.kvtml delete mode 100644 keduvocdocument/tests/CMakeLists.txt delete mode 100644 keduvocdocument/tests/converter.cpp delete mode 100644 keduvocdocument/tests/keduvocdocumentvalidatortest.cpp delete mode 100644 keduvocdocument/tests/loader.cpp rename keduvocdocument/keduvocexpression.cpp => keduvocexpression.cpp (100%) rename keduvocdocument/keduvocexpression.h => keduvocexpression.h (100%) rename keduvocdocument/keduvocidentifier.cpp => keduvocidentifier.cpp (100%) rename keduvocdocument/keduvocidentifier.h => keduvocidentifier.h (100%) rename keduvocdocument/keduvockvtml2reader.cpp => keduvockvtml2reader.cpp (100%) rename keduvocdocument/keduvockvtml2reader.h => keduvockvtml2reader.h (100%) rename keduvocdocument/keduvockvtml2writer.cpp => keduvockvtml2writer.cpp (100%) rename keduvocdocument/keduvockvtml2writer.h => keduvockvtml2writer.h (100%) rename keduvocdocument/keduvockvtmlcompability.cpp => keduvockvtmlcompability.cpp (100%) rename keduvocdocument/keduvockvtmlcompability.h => keduvockvtmlcompability.h (100%) rename keduvocdocument/keduvockvtmlreader.cpp => keduvockvtmlreader.cpp (100%) rename keduvocdocument/keduvockvtmlreader.h => keduvockvtmlreader.h (100%) rename keduvocdocument/keduvockvtmlwriter.cpp => keduvockvtmlwriter.cpp (100%) rename keduvocdocument/keduvockvtmlwriter.h => keduvockvtmlwriter.h (100%) rename keduvocdocument/keduvocleitnerbox.cpp => keduvocleitnerbox.cpp (100%) rename keduvocdocument/keduvocleitnerbox.h => keduvocleitnerbox.h (100%) rename keduvocdocument/keduvoclesson.cpp => keduvoclesson.cpp (100%) rename keduvocdocument/keduvoclesson.h => keduvoclesson.h (100%) rename keduvocdocument/keduvocmultiplechoice.cpp => keduvocmultiplechoice.cpp (100%) rename keduvocdocument/keduvocmultiplechoice.h => keduvocmultiplechoice.h (100%) rename keduvocdocument/keduvocpaukerreader.cpp => keduvocpaukerreader.cpp (100%) rename keduvocdocument/keduvocpaukerreader.h => keduvocpaukerreader.h (100%) rename keduvocdocument/keduvocpersonalpronoun.cpp => keduvocpersonalpronoun.cpp (100%) rename keduvocdocument/keduvocpersonalpronoun.h => keduvocpersonalpronoun.h (100%) rename keduvocdocument/keduvoctext.cpp => keduvoctext.cpp (100%) rename keduvocdocument/keduvoctext.h => keduvoctext.h (100%) rename keduvocdocument/keduvoctranslation.cpp => keduvoctranslation.cpp (100%) rename keduvocdocument/keduvoctranslation.h => keduvoctranslation.h (100%) rename keduvocdocument/keduvocvokabelnreader.cpp => keduvocvokabelnreader.cpp (100%) rename keduvocdocument/keduvocvokabelnreader.h => keduvocvokabelnreader.h (100%) rename keduvocdocument/keduvocwordflags.h => keduvocwordflags.h (100%) rename keduvocdocument/keduvocwordtype.cpp => keduvocwordtype.cpp (100%) rename keduvocdocument/keduvocwordtype.h => keduvocwordtype.h (100%) rename keduvocdocument/keduvocwqlreader.cpp => keduvocwqlreader.cpp (100%) rename keduvocdocument/keduvocwqlreader.h => keduvocwqlreader.h (100%) rename keduvocdocument/keduvocxdxfreader.cpp => keduvocxdxfreader.cpp (100%) rename keduvocdocument/keduvocxdxfreader.h => keduvocxdxfreader.h (100%) rename keduvocdocument/kvtml2.dtd => kvtml2.dtd (100%) rename keduvocdocument/kvtml2.xsd => kvtml2.xsd (100%) rename keduvocdocument/kvtml2defs.h => kvtml2defs.h (100%) rename keduvocdocument/kvtml2todo => kvtml2todo (100%) rename keduvocdocument/kvtmldefs.h => kvtmldefs.h (100%) rename keduvocdocument/libkeduvocdocument_export.h => libkeduvocdocument_export.h (100%) delete mode 100644 qtmmlwidget/CMakeLists.txt delete mode 100644 qtmmlwidget/LICENSE.GPL delete mode 100644 qtmmlwidget/LICENSE.LGPL delete mode 100644 qtmmlwidget/QtMmlDocument delete mode 100644 qtmmlwidget/QtMmlWidget delete mode 100644 qtmmlwidget/qtmmlwidget.cpp delete mode 100644 qtmmlwidget/qtmmlwidget.h rename keduvocdocument/sharedkvtmlfiles.cpp => sharedkvtmlfiles.cpp (100%) rename keduvocdocument/sharedkvtmlfiles.h => sharedkvtmlfiles.h (100%) delete mode 100644 widgets/CMakeLists.txt delete mode 100644 widgets/kdeedu.widgets diff --git a/AUTHORS b/AUTHORS deleted file mode 100644 index ac809ea..0000000 --- a/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -Developers: -* Scott Wheeler - Original author and current maintainer diff --git a/CMakeLists.txt b/CMakeLists.txt deleted file mode 100644 index 3ea4ee2..0000000 --- a/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -project(LibKdeEdu) - -#add_definitions( -Wall -fprofile-arcs -ftest-coverage ) - -find_package(KDE4 REQUIRED) -include(KDE4Defaults) -include_directories (${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${KDE4_INCLUDES}) - -add_definitions(-DQT_USE_FAST_CONCATENATION -DQT_USE_FAST_OPERATOR_PLUS) - -add_subdirectory(keduvocdocument) -add_subdirectory(data) -#add_subdirectory(widgets) -add_subdirectory(qtmmlwidget) -add_subdirectory(icons) - - -configure_file( "${LibKdeEdu_SOURCE_DIR}/LibKdeEduConfig.cmake.in" "${LibKdeEdu_BINARY_DIR}/LibKdeEduConfig.cmake" @ONLY ) - -if(KDE4_USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR) - set(_LibKdeEdu_CONFIG_DEST "${LIB_INSTALL_DIR}/cmake/libkdeedu") -else(KDE4_USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR) - set(_LibKdeEdu_CONFIG_DEST "${LIB_INSTALL_DIR}/libkdeedu") -endif(KDE4_USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR) - -install( FILES - "${LibKdeEdu_BINARY_DIR}/LibKdeEduConfig.cmake" - DESTINATION "${_LibKdeEdu_CONFIG_DEST}" ) -install( EXPORT LibKdeEduTargets - DESTINATION "${_LibKdeEdu_CONFIG_DEST}" - NAMESPACE LibKdeEduImport__ - FILE LibKdeEduTargets.cmake ) diff --git a/COPYING b/COPYING deleted file mode 100644 index d159169..0000000 --- a/COPYING +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/COPYING-CMAKE-SCRIPTS b/COPYING-CMAKE-SCRIPTS deleted file mode 100644 index 4b41776..0000000 --- a/COPYING-CMAKE-SCRIPTS +++ /dev/null @@ -1,22 +0,0 @@ -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/COPYING.LIB b/COPYING.LIB deleted file mode 100644 index 5bc8fb2..0000000 --- a/COPYING.LIB +++ /dev/null @@ -1,481 +0,0 @@ - GNU LIBRARY GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the library GPL. It is - numbered 2 because it goes with version 2 of the ordinary GPL.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Library General Public License, applies to some -specially designated Free Software Foundation software, and to any -other libraries whose authors decide to use it. You can use it for -your libraries, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if -you distribute copies of the library, or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link a program with the library, you must provide -complete object files to the recipients so that they can relink them -with the library, after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - Our method of protecting your rights has two steps: (1) copyright -the library, and (2) offer you this license which gives you legal -permission to copy, distribute and/or modify the library. - - Also, for each distributor's protection, we want to make certain -that everyone understands that there is no warranty for this free -library. If the library is modified by someone else and passed on, we -want its recipients to know that what they have is not the original -version, so that any problems introduced by others will not reflect on -the original authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that companies distributing free -software will individually obtain patent licenses, thus in effect -transforming the program into proprietary software. To prevent this, -we have made it clear that any patent must be licensed for everyone's -free use or not licensed at all. - - Most GNU software, including some libraries, is covered by the ordinary -GNU General Public License, which was designed for utility programs. This -license, the GNU Library General Public License, applies to certain -designated libraries. This license is quite different from the ordinary -one; be sure to read it in full, and don't assume that anything in it is -the same as in the ordinary license. - - The reason we have a separate public license for some libraries is that -they blur the distinction we usually make between modifying or adding to a -program and simply using it. Linking a program with a library, without -changing the library, is in some sense simply using the library, and is -analogous to running a utility program or application program. However, in -a textual and legal sense, the linked executable is a combined work, a -derivative of the original library, and the ordinary General Public License -treats it as such. - - Because of this blurred distinction, using the ordinary General -Public License for libraries did not effectively promote software -sharing, because most developers did not use the libraries. We -concluded that weaker conditions might promote sharing better. - - However, unrestricted linking of non-free programs would deprive the -users of those programs of all benefit from the free status of the -libraries themselves. This Library General Public License is intended to -permit developers of non-free programs to use free libraries, while -preserving your freedom as a user of such programs to change the free -libraries that are incorporated in them. (We have not seen how to achieve -this as regards changes in header files, but we have achieved it as regards -changes in the actual functions of the Library.) The hope is that this -will lead to faster development of free libraries. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, while the latter only -works together with the library. - - Note that it is possible for a library to be covered by the ordinary -General Public License rather than by this special one. - - GNU LIBRARY GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library which -contains a notice placed by the copyright holder or other authorized -party saying it may be distributed under the terms of this Library -General Public License (also called "this License"). Each licensee is -addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also compile or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - c) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - d) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the source code distributed need not include anything that is normally -distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Library General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! diff --git a/LibKdeEduConfig.cmake.in b/LibKdeEduConfig.cmake.in deleted file mode 100644 index 91363d1..0000000 --- a/LibKdeEduConfig.cmake.in +++ /dev/null @@ -1,45 +0,0 @@ -######################################################################### -# -# LibKdeEdu Configuration File -# -# This file sets various CMake Variables -# -# LIBKDEEDU_INCLUDE_DIR - The Include Directory for all LIBKDEEDU libraries -# LIBKDEEDU_KEDUVOCDOCUMENT_LIBRARIES - the keduvocdocument library -# LIBKDEEDU_KDEEDUUI_LIBRARIES - the kdeeduui library -# -# Copyright 2008 Andreas Pakulat -# Copyright 2010 Niko Sams -# Redistribution and use is allowed according to the terms of the BSD license. -###################################################################### - -get_filename_component(_LIBKDEEDU_CURRENT_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) - -if(NOT WIN32) -# This is needed on non-win32 platforms, as lib-install-dir might be in a -# totally different prefix than include-install-dir. So instead hardcode the -# absolute path during buildtime -set( LIBKDEEDU_INCLUDE_DIR "@INCLUDE_INSTALL_DIR@/libkdeedu" ) - -else(NOT WIN32) - -set( LIBKDEEDU_INCLUDE_DIR "${_LIBKDEEDU_CURRENT_DIR}/../../../include/libkdeedu" ) - -endif(NOT WIN32) - -if( NOT TARGET LibKdeEduImport__keduvocdocument ) - include("${_LIBKDEEDU_CURRENT_DIR}/LibKdeEduTargets.cmake") -endif( NOT TARGET LibKdeEduImport__keduvocdocument ) - -macro( _libkdeedu_set_lib_vars _prefix _lib ) - set( LIBKDEEDU_${_prefix}_LIBRARIES LibKdeEduImport__${_lib} ) -endmacro( _libkdeedu_set_lib_vars ) - -_libkdeedu_set_lib_vars( KEDUVOCDOCUMENT keduvocdocument ) -_libkdeedu_set_lib_vars( KDEEDUUI kdeeduui ) -_libkdeedu_set_lib_vars( QTMMLWIDGET qtmmlwidget ) - - -mark_as_advanced( - KEDUVOCDOCUMENT -) diff --git a/Mainpage.dox b/Mainpage.dox deleted file mode 100644 index 280c349..0000000 --- a/Mainpage.dox +++ /dev/null @@ -1,15 +0,0 @@ -/** @mainpage libkdeedu - -libkdeedu is a set of shared libraries used by the KDE Education Project applications. - -It consists of several parts: - -User interface parts: Glossary - -ExtDate for KStars - -libscience for Kalzium containing chemical classes - -KEduVocDocument is a library for reading and writing vocabulary files used by Parley, Kanagram, KHangman and KWordQuiz. - -*/ diff --git a/Messages.sh b/Messages.sh deleted file mode 100644 index 62bec1f..0000000 --- a/Messages.sh +++ /dev/null @@ -1,6 +0,0 @@ -#! /bin/sh -find keduvocdocument -maxdepth 1 -name \*.cpp -o -name \*.h >>list_libkdeedu - -$XGETTEXT --files-from=list_libkdeedu --from-code=UTF-8 -o $podir/libkdeedu.pot - -rm -f list_libkdeedu diff --git a/README b/README deleted file mode 100644 index 7f5783e..0000000 --- a/README +++ /dev/null @@ -1,21 +0,0 @@ -Contents of libkdeedu as of Feb 2006, and brief description of each module: - -extdate: -Contains a reimplementation of QDate named ExtDate which eliminates the -limitation on the year (1752-8000) imposed by QDate. Also contains -related reimplemented classes such as ExtDateTime, ExtDatePicker, -ExtDateTimeEdit, and ExtCalendarSystem. -Currently used by: kstars - -kdeeducore: -Contains KEduVocDocument and its related class for reading from/writing to the -KVTML format (and others too). -Currently used by: kanagram, khangman, klatin, kvoctrain, kwordquiz - -libscience: -Contains some classes related to scientific data, like chemical Element's, -spectra, temperature units and Isotope's. -Currently used by: kalzium - -ideas: stub directory, contains generic README and TODO files. - diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt deleted file mode 100644 index f2bf4ae..0000000 --- a/data/CMakeLists.txt +++ /dev/null @@ -1,2 +0,0 @@ -add_subdirectory( kvtml ) - diff --git a/data/README_packagers b/data/README_packagers deleted file mode 100644 index 6be7dd5..0000000 --- a/data/README_packagers +++ /dev/null @@ -1,14 +0,0 @@ -******** At the attention of packagers ********* - -KHangMan, Kanagram, Parley and KWordQuiz depend on /kdeedu/data/kvtml! - -Please do not ship Kanagram and KHangMan without those files, thanks! - -KHangMan and Kanagram depend on those files, Parley and KWordQuiz can use them. - --------------------------------------- -Anne-Marie Mahfouf -kdeedu module maintainer -annma at kde dot org - -November 2008 \ No newline at end of file diff --git a/data/kvtml/CMakeLists.txt b/data/kvtml/CMakeLists.txt deleted file mode 100644 index a59a057..0000000 --- a/data/kvtml/CMakeLists.txt +++ /dev/null @@ -1,5 +0,0 @@ - -FILE(GLOB datafiles *.kvtml) -install( FILES ${datafiles} DESTINATION ${DATA_INSTALL_DIR}/kvtml/en ) -add_custom_target( kvtml_data ) - diff --git a/data/kvtml/README_packagers b/data/kvtml/README_packagers deleted file mode 100644 index 6be7dd5..0000000 --- a/data/kvtml/README_packagers +++ /dev/null @@ -1,14 +0,0 @@ -******** At the attention of packagers ********* - -KHangMan, Kanagram, Parley and KWordQuiz depend on /kdeedu/data/kvtml! - -Please do not ship Kanagram and KHangMan without those files, thanks! - -KHangMan and Kanagram depend on those files, Parley and KWordQuiz can use them. - --------------------------------------- -Anne-Marie Mahfouf -kdeedu module maintainer -annma at kde dot org - -November 2008 \ No newline at end of file diff --git a/data/kvtml/animals.kvtml b/data/kvtml/animals.kvtml deleted file mode 100644 index eac48be..0000000 --- a/data/kvtml/animals.kvtml +++ /dev/null @@ -1,368 +0,0 @@ - - - - - converter - Animals - Animals from across the planet - - - - en - - - - - false - false - - bear - Large heavy animal with thick fur - - - - false - false - - dolphin - Sea mammal - - - - false - false - - zebra - African animal with black and white stripes - - - - false - false - - kangaroo - Australian jumping animal - - - - false - false - - whale - Very large sea mammal - - - - false - false - - horse - Four-legged animal used for riding - - - - false - false - - monkey - Closely related to humans - - - - false - false - - woodpecker - Bird that drills through wood - - - - false - false - - snake - Reptile with no legs - - - - false - false - - giraffe - Long-necked African animal - - - - false - false - - elephant - Largest living land animal with a trunk - - - - false - false - - mouse - Small rodent with a long tail - - - - false - false - - worm - Animal with no backbone or limbs - - - - false - false - - dragonfly - Large insect with transparent wings - - - - false - false - - penguin - Sea bird of the Antarctic regions - - - - false - false - - rabbit - Burrowing animal with long ears - - - - false - false - - hamster - Small mouse-like rodent, kept as pets - - - - false - false - - wolf - Fierce, wild animal of the dog family - - - - false - false - - lion - Large, powerful animal of the cat family - - - - false - false - - tiger - Large Asian animal of the cat family - - - - false - false - - octopus - Sea animal with eight long tentacles - - - - false - false - - rhinoceros - Large, thick-skinned animal of Africa - - - - false - false - - hedgehog - Small, with a back covered in stiff spines - - - - false - false - - reindeer - Deer with large antlers - - - - false - false - - squirrel - Small tree-climbing animal with a bushy tail - - - - false - false - - tortoise - A slow-moving, four-footed reptile - - - - false - false - - hippopotamus - Large African river animal - - - - false - false - - dinosaur - Extinct reptile - - - - false - false - - eagle - Large bird of prey - - - - false - false - - shark - Large sea fish with a triangular fin - - - - false - false - - duck - Swimming bird - - - - false - false - - fish - Live in water - - - - false - false - - parrot - Can repeat your words - - - - false - false - - frog - Small green jumping animal - - - - false - false - - snail - Slow-moving, has a spiral shell - - - - false - false - - camel - Can survive a long time in the desert - - - - false - false - - alligator - Reptile of the crocodile family - - - - false - false - - mosquito - Its bite spreads malaria - - - - false - false - - sheep - Grass-eating animal with a thick fleecy coat - - - - false - false - - shellfish - Water animal that has a shell - - - - false - false - - kitten - the young of a cat, ferret, etc. - - - - false - false - - kingfisher - Small bird with bright bluish plumage - - - - false - false - - piglet - young pig - - - - false - false - - turkey - Large bird reared for its flesh - - - - diff --git a/data/kvtml/clothing.kvtml b/data/kvtml/clothing.kvtml deleted file mode 100644 index 15f8306..0000000 --- a/data/kvtml/clothing.kvtml +++ /dev/null @@ -1,152 +0,0 @@ - - - - - converter - Clothing - Things humans wear - - - - en - - - - - false - false - - sneakers - Athletic shoes - - - - false - false - - boots - Shoes meant for working - - - - false - false - - pants - Leg coverings - - - - false - false - - shorts - Short leg coverings - - - - false - false - - skirt - The bottom half of a dress - - - - false - false - - dress - A full-body covering - - - - false - false - - parka - A cold-weather full-body covering - - - - false - false - - jacket - A light upper-body warmer - - - - false - false - - coat - Heavy upper-body covering - - - - false - false - - hat - A head covering - - - - false - false - - tobogan - Cold-weather head covering - - - - false - false - - earmuffs - Ear warmer - - - - false - false - - sunglasses - Sunny weather eyewear - - - - false - false - - socks - Foot protection - - - - false - false - - sandals - Beach footwear - - - - false - false - - gloves - Warmers for the hands - - - - false - false - - belt - Keeps your pants from falling down - - - - diff --git a/data/kvtml/computers.kvtml b/data/kvtml/computers.kvtml deleted file mode 100644 index c9b1224..0000000 --- a/data/kvtml/computers.kvtml +++ /dev/null @@ -1,128 +0,0 @@ - - - - - converter - Computers - Items surrounding your computer - - - - en - - - - - false - false - - monitor - A device to visualize bits - - - - false - false - - speakers - Creates waves through the air - - - - false - false - - printer - Used to visualize bits on paper - - - - false - false - - mouse - A way to instruct a computer - - - - false - false - - keyboard - A standard input device - - - - false - false - - joystick - Input device used for games - - - - false - false - - modem - Used to communicate over the Internet - - - - false - false - - caffeine - A substance ensuring alertness - - - - false - false - - floppy - An ancient storage device - - - - false - false - - tape - Used for software backups - - - - false - false - - scanner - Creates a digital representation of a flat object - - - - false - false - - headphones - For listening to sound privately - - - - false - false - - webcam - Sends moving images over the Internet - - - - false - false - - microphone - Allows you to record sound - - - - diff --git a/data/kvtml/currencies.kvtml b/data/kvtml/currencies.kvtml deleted file mode 100644 index ce92cc6..0000000 --- a/data/kvtml/currencies.kvtml +++ /dev/null @@ -1,184 +0,0 @@ - - - - - converter - Currencies - Modern World currencies - - - - en - - - - - false - false - - dinar - Algeria, Bahrain, Kuwait, etc. - - - - false - false - - dollar - USA, Canada, Australia, etc. - - - - false - false - - drachma - Greece (until 2002) - - - - false - false - - euro - 17 European Union countries, etc. - - - - false - false - - franc - France (until 1998), Switzerland, etc. - - - - false - false - - guilder - The Netherlands (until 1998) - - - - false - false - - koruna - Czech Republic, Slovakia (until 2008) - - - - false - false - - krona - Sweden - - - - false - false - - krone - Denmark, Greenland, Norway - - - - false - false - - lira - Italy (until 1998) - - - - false - false - - mark - Germany (until 1998) - - - - false - false - - peseta - Spain (until 2002) - - - - false - false - - peso - Argentina, Chile, Mexico, Cuba, Colombia, etc. - - - - false - false - - pound - UK, Cyprus (until 2008), Egypt, etc. - - - - false - false - - rand - South Africa - - - - false - false - - renminbi - China - - - - false - false - - ruble - Russia, Belarus, etc. - - - - false - false - - rupee - India, Pakistan, Sri Lanka, etc. - - - - false - false - - shilling - Kenya, Tanzania, etc. - - - - false - false - - yen - Japan - - - - false - false - - zloty - Poland - - - - diff --git a/data/kvtml/easy.kvtml b/data/kvtml/easy.kvtml deleted file mode 100644 index 57672f2..0000000 --- a/data/kvtml/easy.kvtml +++ /dev/null @@ -1,454 +0,0 @@ - - - - - converter - Easy - Easy Words - - - - en - - - - - Noun - noun - - Male - noun:male - - - Female - noun:female - - - Neutral - noun:neutral - - - - Verb - verb - - Regular - verb:regular - - - Irregular - verb:irregular - - - - Adjective - adjective - - - Adverb - adverb - - - Question - - - Name - - - Article - - Definite - - - Indefinite - - - - Pronoun - - Possessive - - - Personal - - - - Phrase - - - Numeral - - Ordinal - - - Cardinal - - - - Conjunction - - - Preposition - - - Informal - - - Figuratively - - - - - false - false - - playtime - time assigned for children to play - - - - false - false - - furniture - objects in a room - - - - false - false - - garden - a piece of cultivated ground - - - - false - false - - pupil - a person taught by another - - - - false - false - - vegetables - a plant of which some part is used as food - - - - false - false - - apple - a round firm fruit - - - - false - false - - plate - almost flat usually circular ustensil - - - - false - false - - sweet - tasting as if containing sugar - - - - false - false - - kitchen - room in which meals are prepared - - - - false - false - - chocolate - made from cocoa - - - - false - false - - computer - an electronic machine - - - - false - false - - carrot - rabbits like them - - - - false - false - - indication - show you an information - - - - false - false - - banana - a yellow fruit - - - - false - false - - information - knowledge - - - - false - false - - money - coins and banknotes - - - - false - false - - adventure - an exciting experiment - - - - false - false - - driver - person at the wheel - - - - false - false - - policeman - member of a police force - - - - false - false - - pineapple - tropical fruit with tough segmented skin - - - - false - false - - stamp - affix it to an envelop - - - - false - false - - lunch - midday meal - - - - false - false - - limousine - car for celebrities - - - - false - false - - escalator - moving staircase - - - - false - false - - breakfast - first meal of the day - - - - false - false - - flower - part of the plant from which seeds develop - - - - false - false - - education - systematic training - - - - false - false - - table - has a flat top with one or more legs - - - - false - false - - classroom - where students are taught - - - - false - false - - television - receives and displays images - - - - false - false - - mistake - incorrect idea or opinion - - - - false - false - - yesterday - the day before today - - - - false - false - - people - large group of persons - - - - false - false - - children - young humans - - - - false - false - - surprise - something sudden or unexpected - - - - false - false - - jacket - a short coat - - - - false - false - - cheese - solid food made from milk - - - - false - false - - chicken - a young bird, especially of the domestic fowl - - - - false - false - - dinner - evening meal - - - - false - false - - mountain - mass of land that rises to a great height - - - - false - false - - forest - set of trees - - - - false - false - - potato - plant with starchy edible tubers - - - - false - false - - water - H2O - - - - false - false - - river - a large natural stream of water - - - - diff --git a/data/kvtml/fruits.kvtml b/data/kvtml/fruits.kvtml deleted file mode 100644 index 6dbd346..0000000 --- a/data/kvtml/fruits.kvtml +++ /dev/null @@ -1,208 +0,0 @@ - - - - - converter - Fruits - Fruits of the Earth - - - - en - - - - - false - false - - apple - One a day keeps the doctor away - - - - false - false - - apricot - Resembles a small Peach - - - - false - false - - banana - A long yellow fruit that bends along its length - - - - false - false - - blackberry - A Shiny black berry - - - - false - false - - blueberry - Sweet edible dark-blue berries - - - - false - false - - cherry - Red fruit with a single hard stone - - - - false - false - - coconut - Has a hard brown outer husk and creamy white flesh - - - - false - false - - cranberry - A bright red berry - - - - false - false - - grape - Used to make wine - - - - false - false - - grapefruit - Large yellow citrus fruit with acidic, juicy pulp - - - - false - false - - kiwi - Fuzzy brown egg-shaped fruit with slightly green flesh - - - - false - false - - lemon - Yellow oval fruit with juicy acidic flesh - - - - false - false - - lime - Small, green citrus fruit that resembles a lemon - - - - false - false - - mandarin - Reddish-orange loose-skinned citrus of China - - - - false - false - - mango - Large oval smooth-skinned fruit from the tropics - - - - false - false - - olive - Small fruit with a high oil content - - - - false - false - - orange - Round citrus fruit, associated with a color - - - - false - false - - peach - Juicy fruit with sweet yellowish flesh - - - - false - false - - pear - Small, bell-shaped juicy, gritty-textured fruit - - - - false - false - - pineapple - Resembling a pine cone, with a tangy sweet taste - - - - false - false - - plum - Sweet, juicy, purple fruit with smooth skin - - - - false - false - - raspberry - Strongly-flavored berry of several colors - - - - false - false - - strawberry - Small, sweet and fleshy red fruit - - - - false - false - - watermelon - This melon from Africa has a moist red flesh - - - - diff --git a/data/kvtml/hard.kvtml b/data/kvtml/hard.kvtml deleted file mode 100644 index b08dc6b..0000000 --- a/data/kvtml/hard.kvtml +++ /dev/null @@ -1,454 +0,0 @@ - - - - - converter - Hard - Hard Words - - - - en - - - - - Noun - noun - - Male - noun:male - - - Female - noun:female - - - Neutral - noun:neutral - - - - Verb - verb - - Regular - verb:regular - - - Irregular - verb:irregular - - - - Adjective - adjective - - - Adverb - adverb - - - Question - - - Name - - - Article - - Definite - - - Indefinite - - - - Pronoun - - Possessive - - - Personal - - - - Phrase - - - Numeral - - Ordinal - - - Cardinal - - - - Conjunction - - - Preposition - - - Informal - - - Figuratively - - - - - false - false - - knuckle - - - - - false - false - - catalysis - - - - - false - false - - jewelry - - - - - false - false - - lighthouse - - - - - false - false - - enhancement - - - - - false - false - - federalism - - - - - false - false - - dogmatism - - - - - false - false - - dilettantism - - - - - false - false - - chloroform - - - - - false - false - - ethnography - - - - - false - false - - calligraphy - - - - - false - false - - brainstorm - - - - - false - false - - belladonna - - - - - false - false - - boomerang - - - - - false - false - - accordionist - - - - - false - false - - afterthought - - - - - false - false - - ornithology - - - - - false - false - - osteopathy - - - - - false - false - - rattlesnake - - - - - false - false - - exhibition - - - - - false - false - - radiography - - - - - false - false - - surrealism - - - - - false - false - - syllogism - - - - - false - false - - symposium - - - - - false - false - - theologian - - - - - false - false - - taxidermist - - - - - false - false - - trigonometry - - - - - false - false - - translucence - - - - - false - false - - truthfulness - - - - - false - false - - troposphere - - - - - false - false - - uprightness - - - - - false - false - - upholstery - - - - - false - false - - workaholic - - - - - false - false - - withdrawal - - - - - false - false - - zoology - - - - - false - false - - wheelbarrow - - - - - false - false - - xenophobia - - - - - false - false - - yachtsman - - - - - false - false - - astonishment - - - - - false - false - - xylophone - - - - - false - false - - pseudonym - - - - - false - false - - prosperity - - - - - false - false - - psychiatrist - - - - - false - false - - protagonist - - - - - diff --git a/data/kvtml/inventions.kvtml b/data/kvtml/inventions.kvtml deleted file mode 100644 index ffd2f2b..0000000 --- a/data/kvtml/inventions.kvtml +++ /dev/null @@ -1,240 +0,0 @@ - - - - - converter - Inventions - Greatest inventions of humans - - - - en - - - - - false - false - - aircraft - Achieve flight through fixed wings - - - - false - false - - antibiotics - Drugs that kill bacteria - - - - false - false - - automobile - A motor vehicle for passengers - - - - false - false - - batteries - Store electrical energy - - - - false - false - - bicycle - Efficient human powered vehicle with 2 wheels - - - - false - false - - boomerang - When thrown, it returns - - - - false - false - - clocks - Accurately displays the time - - - - false - false - - computers - One is in front of you right now - - - - false - false - - dynamite - A powerful high explosive - - - - false - false - - electricity - The flow of electrons - - - - false - false - - elevator - Allows for speedy vertical travels within tall buildings - - - - false - false - - email - Fast method of sending mail through the internet - - - - false - false - - helicopter - Rotating blades on this craft allow flight - - - - false - false - - hovercraft - Vessel that floats on a cushion of air - - - - false - false - - internet - The global computer communications network - - - - false - false - - lasers - Intense beam of light - - - - false - false - - paperclip - Holds paper objects together temporarily - - - - false - false - - photography - Snapshots of moments in time - - - - false - false - - plastics - Petroleum-based polymers with a range of properties - - - - false - false - - radar - Radio waves provide the spatial location of objects - - - - false - false - - radio - Sound recieved from electromagnetic waves - - - - false - false - - steamengine - The pressure of water vapor drives this engine - - - - false - false - - telephone - A vocal communication device - - - - false - false - - television - Electrical device that displays moving images - - - - false - false - - tetris - Puzzle game made famous by the Gameboy console - - - - false - false - - transistor - Foundation of modern electronics - - - - false - false - - velcro - Hook and loop fasteners - - - - false - false - - wheel - Circular object that allows for low-friction motion - - - - diff --git a/data/kvtml/medium.kvtml b/data/kvtml/medium.kvtml deleted file mode 100644 index 6c2d5da..0000000 --- a/data/kvtml/medium.kvtml +++ /dev/null @@ -1,462 +0,0 @@ - - - - - converter - Medium - Medium Words - - - - en - - - - - Noun - noun - - Male - noun:male - - - Female - noun:female - - - Neutral - noun:neutral - - - - Verb - verb - - Regular - verb:regular - - - Irregular - verb:irregular - - - - Adjective - adjective - - - Adverb - adverb - - - Question - - - Name - - - Article - - Definite - - - Indefinite - - - - Pronoun - - Possessive - - - Personal - - - - Phrase - - - Numeral - - Ordinal - - - Cardinal - - - - Conjunction - - - Preposition - - - Informal - - - Figuratively - - - - - false - false - - machine - apparatus for applying mechanical power - - - - false - false - - bedroom - a room for sleeping in - - - - false - false - - magistrate - an official with authority to administer the law - - - - false - false - - gymnasium - a building equipped for gymnastics - - - - false - false - - appointment - an arrangement to meet at a particular time - - - - false - false - - antibiotic - a substance capable of destroying a bacteria - - - - false - false - - delegation - a body of delegates - - - - false - false - - pharmacist - a person who is skilled in pharmacy - - - - false - false - - cheeseburger - a hamburger with cheese - - - - false - false - - assessment - the amount or value is fixed - - - - false - false - - surroundings - the things or conditions around - - - - false - false - - supermarket - a large self-service shop - - - - false - false - - indication - a sign to show the presence of something - - - - false - false - - radiography - the production of X-ray photographs - - - - false - false - - information - facts told or discovered - - - - false - false - - mincemeat - a mixture used in pies - - - - false - false - - signature - a person's name written by himself - - - - false - false - - enthusiasm - a feeling of eager liking for something - - - - false - false - - asparagus - a plant whose young shoots are cooked and eaten as vegetable - - - - false - false - - vocabulary - a list of words with their meanings - - - - false - false - - government - the organization governing a country - - - - false - false - - conservatory - a greenhouse attached to a house - - - - false - false - - bookshelf - a piece of furniture where you put books - - - - false - false - - photograph - a picture formed by the chemical action of light on a sensitive surface - - - - false - false - - intelligence - mental ability - - - - false - false - - lawnmower - a machine for cutting lawns - - - - false - false - - arithmetic - the science of numbers - - - - false - false - - membership - being a member - - - - false - false - - tranquility - calm and undisturbed - - - - false - false - - contribution - given jointly with others - - - - false - false - - apostrophe - a punctuation mark - - - - false - false - - amusement - for entertainments - - - - false - false - - umbrella - protect you from the rain - - - - false - false - - illumination - a decoration with lights - - - - false - false - - millimetre - 0.04 inch - - - - false - false - - milligram - one-thousandth of a gram - - - - false - false - - aquarium - a tank in which fish are kept for display - - - - false - false - - miscount - an incorrect count - - - - false - false - - population - the number of people - - - - false - false - - innovation - introduction of a new process - - - - false - false - - innuendo - an unpleasant insinuation - - - - false - false - - strawberry - a red fruit delicious with cream - - - - false - false - - nephew - the son of your brother or sister - - - - false - false - - countryside - rural areas - - - - false - false - - collection - a set - - - - diff --git a/data/kvtml/numbers.kvtml b/data/kvtml/numbers.kvtml deleted file mode 100644 index c0a858e..0000000 --- a/data/kvtml/numbers.kvtml +++ /dev/null @@ -1,296 +0,0 @@ - - - - - converter - Numbers - Written words for numbers - - - - en - - - - - false - false - - zero - 0 - - - - false - false - - one - 1 - - - - false - false - - two - 2 - - - - false - false - - three - 3 - - - - false - false - - four - 4 - - - - false - false - - five - 5 - - - - false - false - - six - 6 - - - - false - false - - seven - 7 - - - - false - false - - eight - 8 - - - - false - false - - nine - 9 - - - - false - false - - ten - 10 - - - - false - false - - eleven - 11 - - - - false - false - - twelve - 12 - - - - false - false - - thirteen - 13 - - - - false - false - - fourteen - 14 - - - - false - false - - fifteen - 15 - - - - false - false - - sixteen - 16 - - - - false - false - - seventeen - 17 - - - - false - false - - eighteen - 18 - - - - false - false - - nineteen - 19 - - - - false - false - - twenty - 20 - - - - false - false - - thirty - 30 - - - - false - false - - fourty - 40 - - - - false - false - - fifty - 50 - - - - false - false - - sixty - 60 - - - - false - false - - seventy - 70 - - - - false - false - - eighty - 80 - - - - false - false - - ninety - 90 - - - - false - false - - hundred - 100 - - - - false - false - - thousand - 1000 - - - - false - false - - million - 1,000,000 - - - - false - false - - billion - 1,000,000,000 - - - - false - false - - first - 1st - - - - false - false - - second - 2nd - - - - false - false - - third - 3rd - - - - diff --git a/data/kvtml/objects.kvtml b/data/kvtml/objects.kvtml deleted file mode 100644 index 3bc0329..0000000 --- a/data/kvtml/objects.kvtml +++ /dev/null @@ -1,248 +0,0 @@ - - - - - converter - Objects - Everyday objects from the home - - - - en - - - - - true - false - - television - Electrical device that displays moving images - - - - true - false - - chair - For sitting down on - - - - true - false - - freezer - Used to keep food items extra cold - - - - true - false - - fridge - To keep food cool - - - - true - false - - cooker - Used to cook food - - - - true - false - - fireplace - Keep warm by flame in cold weather - - - - true - false - - table - Holds items above the floor - - - - true - false - - drawers - Storage for personal items - - - - true - false - - mirror - Reflects the area in front of it - - - - true - false - - clock - Keeps the time - - - - true - false - - wardrobe - Stores clothing items upright - - - - true - false - - bookcase - Storage for books - - - - true - false - - blender - Liquidates food items - - - - true - false - - settee - For comfortable seating - - - - true - false - - washbasin - To wash the hands and face - - - - true - false - - shower - To clean your body whilst standing - - - - true - false - - bath - To clean the body whilst lying horizontally - - - - true - false - - kettle - Dedicated to boiling water - - - - true - false - - telephone - A vocal communication device - - - - true - false - - radiator - Increase the temperature of the house - - - - true - false - - radio - Plays audio from the airwaves - - - - true - false - - computer - Interactive electronic device - - - - true - false - - pets - Alive, and often cuddly - - - - true - false - - pictures - Images in frames - - - - true - false - - toothbrush - To brush teeth - - - - true - false - - carpet - Soft floor covering - - - - true - false - - toys - Things to play with - - - - true - false - - ornaments - Objects with no obvious function - - - - true - false - - cupboards - Larger storage areas - - - - diff --git a/data/kvtml/people.kvtml b/data/kvtml/people.kvtml deleted file mode 100644 index 106c777..0000000 --- a/data/kvtml/people.kvtml +++ /dev/null @@ -1,152 +0,0 @@ - - - - - converter - People - Influential people of history - - - - en - - - - - false - false - - aristotle - Influential Greek philosopher - - - - false - false - - beethoven - Composer - - - - false - false - - columbus - This explorer discovered the Americas - - - - false - false - - darwin - Theory of Evolution - - - - false - false - - edison - Inventor of the Light Bulb - - - - false - false - - einstein - Theory of Relativity - - - - false - false - - fleming - Discovered Penicillin - - - - false - false - - galileo - 'The Earth revolves around the Sun' - - - - false - false - - gandhi - Non-violent independence for India - - - - false - false - - gorbachev - Helped end Communism in USSR - - - - false - false - - mandela - Ended apartheid in South Africa - - - - false - false - - marconi - Inventor of radio - - - - false - false - - michelangelo - A painter, sculptor and architect - - - - false - false - - napoleon - French conqueror - - - - false - false - - newton - Discovered Gravity - - - - false - false - - pasteur - Invented Vaccination - - - - false - false - - washington - First president of United States - - - - diff --git a/data/kvtml/professions.kvtml b/data/kvtml/professions.kvtml deleted file mode 100644 index f1a4b6d..0000000 --- a/data/kvtml/professions.kvtml +++ /dev/null @@ -1,328 +0,0 @@ - - - - - converter - Professions - The jobs people do - - - - en - - - - - false - true - - doctor - One who helps the sick - - - - false - true - - fireman - One who puts out fires - - - - false - true - - fisherman - A catcher of ocean creatures - - - - false - true - - soldier - One who defends his country - - - - false - false - - astronaut - An extra-terrestrial traveler - - - - false - false - - electrician - A person that maintains an electrical system - - - - false - false - - plumber - Someone that repairs water systems - - - - false - false - - psychiatrist - A doctor for the mind - - - - false - false - - policeman - An officer of the law - - - - false - false - - author - One who writes for a living - - - - false - false - - journalist - A news writer - - - - false - false - - programmer - A maker of computer software - - - - false - false - - actor - One who performs for an audience - - - - false - false - - musician - A player of music - - - - false - false - - comedian - One who invokes laughter - - - - false - false - - chemist - Scientist who specializes in chemistry - - - - false - false - - teacher - One who instructs students - - - - false - false - - mechanic - A person that repairs machinery - - - - false - false - - farmer - Someone that grows crops - - - - false - false - - artist - One who practices art - - - - false - false - - salesman - A door-to-door seller - - - - false - false - - tailor - Makes and alteres clothes - - - - false - false - - blacksmith - Crafter of iron and steel - - - - false - false - - dentist - Specializes in oral medical care - - - - false - false - - designer - Develops and communicates ideas - - - - false - false - - scientist - Expert in an area of science - - - - false - false - - inventor - The first to think of or make something - - - - false - false - - engineer - Uses scientific knowledge to solve practical problems - - - - false - false - - accountant - Look after the finances in an organisastion - - - - false - false - - baker - Bake bread - - - - false - false - - builder - Involved in the construction of buildings - - - - false - false - - carpenter - Crafts furniture - - - - false - false - - chef - Prepare and cook food - - - - false - false - - hairdresser - Cut and style people's hair - - - - false - false - - lawyer - Defend and prosecute people - - - - false - false - - optician - Look after people's eye sight - - - - false - false - - reporter - Find and report the news - - - - false - false - - secretary - Arrange appointments and organise meetings - - - - false - false - - architect - Designs the blueprints for new structures - - - - diff --git a/data/kvtml/space.kvtml b/data/kvtml/space.kvtml deleted file mode 100644 index 3bf0e8b..0000000 --- a/data/kvtml/space.kvtml +++ /dev/null @@ -1,248 +0,0 @@ - - - - - converter - Space - Space objects, terms and missions - - - - en - - - - - false - false - - apollo - The American moon program - - - - false - false - - asteroid - Small planetary body in orbit around the Sun - - - - false - false - - astronaut - Person from the USA who travels into space - - - - false - false - - buran - Russian reusable spacecraft program - - - - false - false - - comet - Medium-sized icy object orbiting the Sun - - - - false - false - - constellation - Grouping of stars which can form a shape or pattern - - - - false - false - - cosmonaut - Person from Russia who travels into space - - - - false - false - - earth - The planet on which we live - - - - false - false - - eclipse - When one celestial body obscures another - - - - false - false - - galaxy - Very large cluster of stars - - - - false - false - - jupiter - Fifth from the Sun, the largest planet - - - - false - false - - mars - Fourth planet from the Sun - - - - false - false - - mercury - The smallest planet and nearest the Sun - - - - false - false - - meteor - The visible track of a Meteoroid entering the Earth's atmosphere - - - - false - false - - meteorite - Matter that has reached Earth from outer space - - - - false - false - - mir - Russian space station, launched in 1986 - - - - false - false - - moon - The natural satellite of the Earth - - - - false - false - - neptune - Giant planet, eighth from the sun - - - - false - false - - orbit - Path an object makes around another - - - - false - false - - pluto - Second-largest known dwarf planet - - - - false - false - - satellite - An object that revolves around a planet - - - - false - false - - saturn - Giant planet with rings, sixth from the Sun - - - - false - false - - skylab - The first American space station, launched in 1973 - - - - false - false - - sputnik - The first artificial Earth satellite, launched in 1957 - - - - false - false - - sun - The star at the center of the Solar System - - - - false - false - - taikonaut - Person from China who travels into space - - - - false - false - - uranus - Seventh planet from the Sun - - - - false - false - - venus - Second planet from the Sun - - - - false - false - - voyager - Twin space probes launched in 1977 - - - - diff --git a/data/kvtml/sports.kvtml b/data/kvtml/sports.kvtml deleted file mode 100644 index bf3563a..0000000 --- a/data/kvtml/sports.kvtml +++ /dev/null @@ -1,264 +0,0 @@ - - - - - converter - Sports - Events of the Olympics - - - - en - - - - - false - false - - aquatics - Water sports - - - - false - false - - archery - Shooting arrows with a bow - - - - false - false - - athletics - Track and field events - - - - false - false - - badminton - Hit the shuttlecock over the net - - - - false - false - - baseball - 4 bases arranged in a diamond - - - - false - false - - basketball - Throw the ball through the hoop - - - - false - false - - boxing - Fighting with the fists - - - - false - false - - canoe - Small boat propelled with a paddle - - - - false - false - - cycling - Riding bicycles - - - - false - false - - equestrian - Horseback riding - - - - false - false - - fencing - Fighting with swords - - - - false - false - - football - Kick the ball into the opponent's goal - - - - false - false - - gymnastics - Graceful display of athletic ability - - - - false - false - - handball - Using hands and a rubber ball - - - - false - false - - hockey - Curved sticks and a ball or puck - - - - false - false - - judo - A martial art - - - - false - false - - pentathlon - 5 athletic events - - - - false - false - - rowing - Propelling a boat with oars - - - - false - false - - sailing - Boating propelled by wind - - - - false - false - - shooting - Firing projectiles from a weapon - - - - false - false - - softball - A game resembling baseball - - - - false - false - - taekwondo - Korean martial art - - - - false - false - - tennis - Played with rackets on a court - - - - false - false - - triathlon - 3 athletic events - - - - false - false - - volleyball - Hit an inflated ball over a high net - - - - false - false - - weightlifting - Lifting heavy weights - - - - false - false - - wrestling - Grappling between 2 opponents - - - - false - false - - bobsleigh - A sled racing down an icy track - - - - false - false - - curling - Stones slid across ice - - - - false - false - - skating - Gliding on ice - - - - false - false - - skiing - Downhill on snow using flat feet - - - - diff --git a/data/kvtml/translations.txt b/data/kvtml/translations.txt deleted file mode 100644 index 0140ed7..0000000 --- a/data/kvtml/translations.txt +++ /dev/null @@ -1,14 +0,0 @@ -translations of data files I know are done -feel free to add to this list if you do translations of these files :) - -ca -da -de -en_GB -es -ga -gl -it -ru -uk - diff --git a/data/kvtml/transportation.kvtml b/data/kvtml/transportation.kvtml deleted file mode 100644 index 8755301..0000000 --- a/data/kvtml/transportation.kvtml +++ /dev/null @@ -1,176 +0,0 @@ - - - - - converter - Transportation - Ways of getting around - - - - en - - - - - false - false - - automobile - Four-wheeled vehicle - - - - false - false - - motorcycle - Motorized two-wheeled vehicle - - - - false - false - - train - A vehicle that travels on tracks - - - - false - false - - airplane - A flying machine - - - - false - false - - helicopter - A vertical takeoff aircraft - - - - false - false - - bicycle - A two-wheeled human-powered vehicle - - - - false - false - - streetcar - An electrified bus - - - - false - false - - elevator - It goes up, it comes down - - - - false - false - - ship - A sea-faring vehicle - - - - false - false - - submarine - For underwater transportation - - - - false - false - - trolley - Open-air bus - - - - false - false - - truck - Heavy duty with four wheels - - - - false - false - - bus - For transporting several people at once - - - - false - false - - subway - An underground train - - - - false - false - - moped - A two-wheeled scooter - - - - false - false - - speedboat - A fast sea-faring vehicle - - - - false - false - - snowmobile - Motorized transport over snow - - - - false - false - - rollerskates - Strap wheels to your feet - - - - false - false - - unicycle - One-wheeled, often seen in the circus - - - - false - false - - airship - Filled with a lighter-than-air gas - - - - diff --git a/data/kvtml/vegetables.kvtml b/data/kvtml/vegetables.kvtml deleted file mode 100644 index 95ea2c3..0000000 --- a/data/kvtml/vegetables.kvtml +++ /dev/null @@ -1,248 +0,0 @@ - - - - - converter - Vegetables - Vegetables of the Earth - - - - en - - - - - false - false - - asparagus - Succulent young shoots - - - - false - false - - broccoli - Dense clusters of tight green buds grow from a thick stalk - - - - false - false - - cabbage - Has leaves that form a characteristic compact head - - - - false - false - - carrot - Orange root vegetable that grows underground - - - - false - false - - cauliflower - Type of Cabbage, with bunches of creamy white florets - - - - false - false - - celery - Crisp, green vegetable - - - - false - false - - chickpeas - Also known as garbanzo beans, with a nut-like flavor - - - - false - false - - cucumber - Long, green, cylinder-shaped vegetable - - - - false - false - - garlic - A bulb made up of sections of cloves - - - - false - false - - leek - Long narrow white bulb and long dark-green leaves - - - - false - false - - lentils - Small brown beans that cook quickly - - - - false - false - - lettuce - Leafy greens enjoyed in salads - - - - false - false - - mushrooms - A type of fungi - - - - false - false - - onion - Its odor can make you cry - - - - false - false - - paprika - Spicy seasoning ground from red pepper - - - - false - false - - parsley - Fresh-flavored bright green herb - - - - false - false - - parsnip - Root vegetable that looks like a white carrot - - - - false - false - - peanuts - Small light brown nuts, often served salted - - - - false - false - - peas - Small round green seed which grows in a pod - - - - false - false - - potato - Mid-sized, yellow, and grown underground - - - - false - false - - pumpkin - Popular at Halloween - - - - false - false - - rhubarb - Celery-like vegetable - - - - false - false - - soybeans - High-protein, used in tofu - - - - false - false - - spinach - Crisp, dark green leafy vegetable - - - - false - false - - sweetcorn - The yellow seeds of a type of maize - - - - false - false - - tabasco - Very hot red peppers - - - - false - false - - tomato - Red, technically considered a fruit - - - - false - false - - turnip - Vegetable with a succulent, bulbous root - - - - false - false - - watercress - Green leafy little plant, only grows in running water - - - - diff --git a/data/kvtml/worldcapitals.kvtml b/data/kvtml/worldcapitals.kvtml deleted file mode 100644 index 61e4663..0000000 --- a/data/kvtml/worldcapitals.kvtml +++ /dev/null @@ -1,432 +0,0 @@ - - - - - converter - World Capitals - Capital cities of the World - - - - en - - - - - true - false - - london - Capital of England - - - - true - false - - paris - Capital of France - - - - false - false - - berlin - Capital of Germany - - - - false - false - - dublin - Capital of Ireland - - - - false - false - - cardiff - Capital of Wales - - - - false - false - - madrid - Capital of Spain - - - - false - false - - moscow - Capital of Russia - - - - false - false - - kabul - Capital of Afganistan - - - - false - false - - khartoum - Capital of Sudan - - - - false - false - - washington - Capital of the USA - - - - false - false - - canberra - Capital of Australia - - - - false - false - - tokyo - Capital of Japan - - - - false - false - - lisbon - Capital of Portugal - - - - false - false - - edinburgh - Capital of Scotland - - - - false - false - - baghdad - Capital of Iraq - - - - false - false - - beijing - Capital of China - - - - false - false - - seoul - Capital of South Korea - - - - false - false - - tehran - Capital of Iran - - - - false - false - - ottawa - Capital of Canada - - - - false - false - - athens - Capital of Greece - - - - false - false - - stockholm - Capital of Sweden - - - - false - false - - oslo - Capital of Norway - - - - false - false - - sofia - Capital of Bulgaria - - - - false - false - - amsterdam - Capital of the Netherlands - - - - false - false - - rome - Capital of Italy - - - - false - false - - vienna - Capital of Austria - - - - false - false - - santiago - Capital of Chile - - - - false - false - - tirana - Capital of Albania - - - - false - false - - brussels - Capital of Belgium - - - - false - false - - zagreb - Capital of Croatia - - - - false - false - - tallinn - Capital of Estonia - - - - false - false - - helsinki - Capital of Finland - - - - false - false - - reykjavik - Capital of Iceland - - - - false - false - - budapest - Capital of Hungary - - - - false - false - - ankara - Capital of Turkey - - - - false - false - - jakarta - Capital of Indonesia - - - - false - false - - kingston - Capital of Jamaica - - - - false - false - - nairobi - Capital of Kenya - - - - false - false - - riga - Capital of Latvia - - - - false - false - - beirut - Capital of Lebanon - - - - false - false - - tripoli - Capital of Libya - - - - false - false - - skopje - Capital of Macedonia - - - - false - false - - kathmandu - Capital of Nepal - - - - false - false - - lima - Capital of Peru - - - - false - false - - warsaw - Capital of Poland - - - - false - false - - bucharest - Capital of Romania - - - - false - false - - bratislava - Capital of Slovakia - - - - false - false - - mogadishu - Capital of Somalia - - - - false - false - - damascus - Capital of Syria - - - - false - false - - bern - Capital of Switzerland - - - - false - false - - bangkok - Capital of Thailand - - - - false - false - - copenhagen - Capital of Denmark - - - - diff --git a/icons/CMakeLists.txt b/icons/CMakeLists.txt deleted file mode 100644 index 106884f..0000000 --- a/icons/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -kde4_install_icons( ${ICON_INSTALL_DIR} ) diff --git a/icons/hi16-action-editplots.png b/icons/hi16-action-editplots.png deleted file mode 100644 index fe8191f8df7e890b0675150ffb84b65734f052e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 774 zcmV+h1Nr=kP)#DB2kQ5s=P177mp_ZmYb0Thjlx{0^AMdu)`-ai-wSMqi960AW|BFANl;U5So0~Ji zJ27>~pLVXg+d1jz%xUUqKnMo^*8*PVmE81%J@Z<%I$t|j9sQ!X-8CRC5dVH2KsDoc zgVp^Yur0!8jr4h3-`^pG1W6={j|yU4eD0sg7@3o~<%Ih7Vrky-*zlSL|0-}&$;Elf zyxd^|w>04O>x#am!LbbAvOGB3KTwBlBoa`w8vdMIO^OoR9E}@07A{p0K#z$pS;2Ni zSBj`0${zeg0dE7G281w`5pvL=%qLzoxFs3wovt#bD)nvrWb(?&vzG|TR}yl7kpeIz zSuJI5HulJK`)X=mU!Orpbh4%{w^W}&I2Lo0>nmoD$ISYRs(MDBXm$JdHL6sBESGC$ zMgrbK{BCR3+G29(POvgIRl*d)=Z?eO?giuEu#sBV%qy{BhqJ+B7=|ho5nc$7s0J}y zB0NtM6(@wVklv?+x$q+U7xd7ev4 zd{bChumNz(l#V!UtD`Otw?2^^tt%I8VzQn4Frf*5SPHi(0C1g4L$z^iK{j}lj#F&$ z1w3zK9Q^M-^J0jn0$2R)=`%N~RtxK&|M;s1EH6#JO=Vp6L zr#tgGkQO%?o)*N*U4Bu<^*oe%q>PP?9Wk5DewJmch^WSBG)@9}9mg(oOlPL%Hik!L z6QW~gU6dI0CB()yzesw{kWy1wS^1O<*(KR#7`CA3R?GPcD$J)5o=GCkDH z_pw5uplWMt8z_pB;|~nGOU1sJ04NIBtp*yZe&XVB4chw>_~KV0l@?KQxIvu$@QBxH zwJU{%g#%>k!j^!KMkeEF)GhGdo5ic30?hI)P!BR;kX8^vRi~rlxCpy?z}) z!A}2auh#=~XhBY_(V{SBOA*Oo9Iq rPzHlxNvTv`9UmWm@9}t^AqT$zUy*ilHe)f*00000NkvXXu0mjf`utVw diff --git a/icons/hi16-action-integral_func.png b/icons/hi16-action-integral_func.png deleted file mode 100644 index bb04239f6096db5e02b8e43a8459d074a8e365e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 530 zcmV+t0`2{YP)UMaCLQwqoV`l^CwsYS!Rt0 zA#g&ue2QZ60?*G+SOk8SIx%Q8-h>Z_BaEgZV#6>{tKC6S6hxz2lLn3wn$36kd_K&g zT0KWBwhgy?WljQdlF)Adz~fn+Vf2c}#|LyeZLF^c!SF8wUMQyg2XSjMxr<0-lc&oW z^m;wUz&pt`?TIzma~vY!3uBkihTk8U>-qqHKtQe!mZw%f)24 zZFQs32$VON-lU67{QmwzI-Nnc+r{mzid^m(PT*(htb|hO47J)lGMRnOK&*5&dnneI zVL5|Bp@>%N6M?{*_z!GYHUmm2LZJ|*Sl)oDs`{bpy4S8xyfK9|jU@5i(lo8{3mG}T Us0VDdjsO4v07*qoM6N<$f;*n+F#rGn diff --git a/icons/hi16-action-maximum.png b/icons/hi16-action-maximum.png deleted file mode 100644 index ccfcac6de81f0c2ebca38cff2a2a3a28bad785e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 537 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJbFq_W2nPqp?T7vkfLzHE*NBqf z{Irtt#G+J&^73-M%)IR4h=nnAI!{RL_~nX z6SVX}vK%}>f)S{SkrAk7sjdN#+oz?UBr1Byz<7N{Ow6q8oLt=e{DMNl5|T>F>e>dzHnxs#9vSvk4I71bSm6K2j^ zymrT~y?gf`Jbv!drAwDD-?{hj`SU#$@e6>a^?15ChE&|@?Yk;;$Uwwpx`^(Dr0I_q zvT(k8_y2#ekJ>`vdpEWhm#us7{>MLk<8w35E);QU6Ju9!5|C6|$g*VSryUDkrQB0I zXsgV&`TN%oQQvwU9_`7xs7|608#N;DXCYcWnZMYU10Zg@s3_W8mKK<}SBRH$)`rNKSKD$ImuMJJ&Zf34gL4*m>}BJo)dY*UUV>&65=Q7}h-CGs*^-}r6O(4W-!*4}wdq{_6ySNr z;z?I#s3V)dR)nY3DdRiF`@Wn8rC5X}m6eq{)(4xaMpfGIfNOhC%EV{)(PfQ?t_&65 z%2l0v<0LHpL~jFHM(AZ$$#UPGOOxmA#`i4CI%iKXh&Z+-zuAJ86Yj|SIF>RPO3VuM zkvq6y$q$#Pu%NlsH&4HrG&1X%XRtLLAUSxE(T-AT^*GjYgkrRcii*0S8s|jIVZ3NP zXL$PdBoFLoCCWf6x`Ww0Kxy78PW%edyR(5tqPmAye#mlj49%Uyx{+~OtE;R1L^+9y z9@6>OyZBw51+E+3SI4=T6i;g4H@BI^Acn~VPpJC~Woy#d{rW3s?b|Yo6JpE1Mm^}v i!QekRWBf)RG5i5Qhs=Vh=mJFm0000g(%)Y@i5`?c^8ye;>npGc%wFP~2Hj^NgVhNOm8?|9y-Zsyg{B+ zVHwC*jg2iGon1XWef?9XPM!df&XtU z_?u~TV*d3f2|25KW?xOHWxFAN=t$^_ntaxm{bpBc&+^NJHZ1#{wWFryHPf%{2d_Am hTVA-q_(i!QDb)5_sQryl$6cxBPr}`w zbV`8aW2u(!!hJti2>*Q}2{h#IkGem{#s2;D|MymHPLRGAFi@gOg8YIR7@3$@SlGCE zczAgE_yvT;#3Upo6d$b(TmTjIcjv*3~tOwhb zoESwIE;L^ncg_4Ck+2 zASJl^J$qzXz2w(0t2I)BA8V$h@{0%NFHJT08Q2w(c_OqSsW{N((j0b?_1`-Js-@YL x_1ifGbIgQ1mMJv-`6$aEc*36{U@g->M(2qV^QseqN`O9K@O1TaS?83{1OO?!9?Ad! diff --git a/icons/hi16-action-newparametric.png b/icons/hi16-action-newparametric.png deleted file mode 100644 index 9cbf41d8af292c927eb3a9cc833c20461c85d557..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 803 zcmV+;1Kj+HP)jcE`fMHfN@30+Ky!kZ+FzQ8N> zBIv>(Tm^Gmh*BwnS;RgxzsAgO_u<^!-qX7e*GTLK&-tJC9G?IG;qVelDR!c{xj7?J z&Da4xVjwqMN$~l+v^&v(Fb@!>inM@%$(acLx`%e|bt6JF0jagu0OSS02(bE7qd9Jv z0`MAPs#`4eH$ixLVEt~aSc~cVA`>_mY{3Q|;z#>EOlwt;rQPrE@7Don52|hI`XboP z47|xHfM>1`#NUJvu?=`41?EQ$ICOT93n9|$^%Q_ND5qD*gKu?-dKWC7KwrRSv?CkfN|WP|AiKf+O(E|JvTb?;eF%ksr1b2C)#zH2@8589_mYc$`Lqb2@J{ z8XKIO!gN20D=bU-o^5s{D;rA$Qjth>8bGQ-G%q)M)6Z;-K1~>Ko-8ku>+?p22C_Nd zx9Ft2gh|t~Fms<_A*)cnF+3}kO1+4X9&cMD1cA<};!?41#*rk82}mi83gtu3P`5;p zb^A*2Tcgpm1{J!i7=Db}g@CH2;;#19#ilI}AF)UkJpjFhJ;wt02eD)qZ{5G)=&0-! zCd>Tc2u2e3_eWAM%Ycm$I3}hcIiQ5crqUe!SP706bG`LZe(RG$`Db>w$mPvRvrNE+ zHTdaRIQq4zDyZj{aPeJFa2Qt`p|-muwdTb*_4o>^tdmHqyS%0qcThVwldYzUU*q3~ zyrHG2D;I~=mjFnj@3FsBkz4iBaO!GHFMt%$9I hhgp)1b8G;>r$2uZL$4Tn97_NI002ovPDHLkV1mtWYJ>m) diff --git a/icons/hi16-action-newpolar.png b/icons/hi16-action-newpolar.png deleted file mode 100644 index a86a71ef37d38deef233e23f9c995edd31ebb535..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 696 zcmV;p0!RIcP);VHC!ncmJxvx?$QTF{cpqCDR65T11qIkg&dFVGu+FLk%X>hbYE2jFI@M!Y@S% zQ4k8z7bQ10q=-Ur{#m$M*wV30C8yh>Y~p=;uU%`j?w}t$_dPE>=RM~h4xyAn3a8V# zS3JXzK!L(^i03&-AS+P43BVaaLj2zy%xmWdliQMgiIT+5z`nqmE9u%!i)cE}$Yziy zd`2lgVNw}Ze$)6h3kb5?EYg_9)xW$FzpxH3rVwp*H$S!xTA!d2M)bl473^e`TrM~R z5+`~num{&*D>sxUv%0LDRa&7A+KVAvffn~#+$|S>`yCF)NdQd0@KkvY1WSUZ_M!Hk zfkOiq#;eCmYhKs9Xb3e-g3)E^vevz-%967`Tn3l05_3@CW& z#R=Zc7U;IPRM$7mA4mt5VL>g9u5t$qjbRKk=rnmup0YP(K}0Zz0N$e!r-Y)pi$tiO zSlHJKwal@u<}-?)JUB}-f*N`mv# zO3D+9QW?t2%k?tzvWt@w3sUv+i_&MmvylQS^6_+W4AD5B{NsEBPj72)YoM#d1(7o* z^E%xdH?I5`uV8XC-Ko8hy-s_@Duzd5Y{}vi6lCPsog{wiU+_QFA}X*Y$ziYOGA8k4 c@en}<*QPg5zlF8_0h-I;>FVdQ&MBb@0R9v^)&Kwi diff --git a/icons/hi22-action-editplots.png b/icons/hi22-action-editplots.png deleted file mode 100644 index 95244fc2110af13dbdbfeeb99df4cb67bc368215..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1122 zcmV-o1fBbdP)#RTu~G|GBq?zCh_)LT~9-U<{OH#lRd)HbxWJ#KcHqTwKgPEz1mI;Da+UQwnji zL_uc^`o;LRn7Em!%;<>2jV=xsHVC1cV^B65)|Syy7|_>yxyMUV(J)GI{&N30Uv8e9 zJm)-zP)e~8t*xzwuv1b4jJW^q4mlXhxK=Mt)p3wu22?NIOLKeM^oUKMR*1&9_C;{+}6y)io@aP897}uM?Hm?+SLJADL)ElA1y9xYGV%|!S!rmNrahjX}v1!nI2@H(vAl=#vWss!o@gkTj z76{LpAQ%Azuu5+&QC5C(C>votpyCmi6FLz&63x>yU+mre=5~9Hi~!)<+PY-`C6o>) z7)V&qo^%3b3qp3R!BSUyLSe`P5)mM3fZsEFJ{XT2&r%qRY^Lg?y}f*F@++4dL2r-w-_4T!D11A|sW;ObFK#>u9Jm}RuG~!ewOY>O_pas}mjNO`E z7z;#&+hcC|-3OO~CS^&cz{^*Lgb+eyGMTV)JtjH!l*mDRm(y1M``Uc}LZdp^_c^6= zZaVte>wH6@u?%>ETMnnU)pi`7ru!;h>ppn!(B+bnGCNR4D5d`lhyh{;1sd&$z6#(9 zl9aT({*GUdN!Q0q@BcbJaC*$*Ly|wl+?ZML+^H%$YU>($sn9oaoquSgl|J!a5UjHp ziMprFW<8R$!GT7f^St2rX>>Tus1koSNczH30!FR%Y_=xfnxA1WPWe^{K&OgOO$%n< zz_J`tx;Zpd(SIZ3$GoDVS*taN2S^Br-j}Y_yc9t#*Yps{c2m{9l!eVc;b$LZFP9_M z>@~|i;3TFsJ1lPOX<6sL5Qt_%X3c2%SzZ&X_<*L~f*kR6x;JDNk5 znqwg9lhAcuj|7}Z;qZqf9v8wlbt=v#O>TP1!cY2Q_btdPeVgi@D}dGB4*h%7H!ffu zg2+2H>3XY;tIl8d*^~$5gKv@vW{Zc3^h0~VO^+r$6@pq~u6UTz#lYDd9bAJC% ze&?Lu`AY;rz$TJC=W+qONxy6g{bPp&o{Mu)_ICh%luv~93n@H=(b3Vej*gDzU@&+< zrBdCgt*yN&iZ`Xt$#YB{_Otf*UTR&X-;#W>^&+=K(OfW5c>&ggMT|)LK z5{z-eYZqgJ)N)~*)-Vo-Bd?^SWVNQI<`)1*s00s23gE4yEzQ>b`7$hqc!=~*3J6D~ zV57($2NpJ9)X30K!=Rw9sS?*LQ7dAayM8xvjAC}U8r-u4loY49ZyiP>$%tn<}4m*HO- zbq;VQk{9FwPnyDb`z13@KAuD_Nv(8F$Hd{eGmyxHoeLmDF@U*k#UKK=P7Q=sB2V4y z?EQ1q>%+P-2Os?LVHi$ zQUGvJ4l`;+JzbNelH6|qoRrVBo;MCfA`z#-VEAKdYU*8%nXz`BI*x2~KxP*2u zQCRt?S}Fbq^ikLVq;)#o+~)J$b;pFNw6ru%JJ*<2tF>>Q-*v|}o9!6OvTBpbG!cu% z2JvWiE~XdtB1t`7ulIZEXm&SZGi5IbyWOsiMx)0`-0S!IyRZYYCdq64kqQBUTj_7P@ImOjxZ}c41**WN2vUGS!Y@hx`R(18ORK Sv<%CQHczMatB5%hh$;Wn~{58aB&- zM7lNg7APwNb)7ddd0}d{TGtRr9yTyOU|FJu4`>= zYisZ51cI*a$y2A!TC#NA`VCvQA3t&8)Tz_A?mu|=`0=|BA3l8f_U-4d-@pI-`TLJ| zO%5n*&v?2xhDcmaPFSEPAaqDeN4M8C;LxFyC!LslC!F0_h&7~90ZhX+l`8nbME9;WEOO}fI#@d{Hx}?#EQ6;hYfkOWM2@bU?i3=3d63aH7 zGWuh7u}aJ%E!uS!N7LDBU8XJ_S#7&lJIcP0TE!w9+ObKbvHG}~gM`wlx9>H&KG>|D z&nz5qIw2xh236@WM(@YBqUfr06ik?9LlQwA1xkSq(ks*Kt` z1EYt=rVMOc44m9R!6ODHa=ZdQ%9=p-Co{7;4c#O)ZHQ5#{2~yefFxL@@huaRf9B>4 z%*^d-+INgi1Eu6LWn{PM=oxZzhe^raGB!<<0lBSHNqL`vak7m3Uvmo|0fC#wrbQAG z#S#)J5)#Sc5`WFjKbV<)F*E;eZoX4PW2=S+kPRgNn1jgQ=H@^JKsL~#I%(;8X=xxA zh=ANxE$IqC)8k5l{DK*nm|57^**Q4*`2|HpWn|=4^bO2y9UL8rcIwUYtH<|OIEF3yKdv=EnBv1J8gTe~DWM4fEO`0Z diff --git a/icons/hi22-action-newdifferential.png b/icons/hi22-action-newdifferential.png deleted file mode 100644 index 2db7306da8ed77a3a0b8c1eb4fa72cb3ede2254e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 991 zcmV<510ei~P)HW34v%>N1rsU59;8e|YaW za?^;-EnN?~GTkr`ZDlrdB2Yw4c^U}vbPNvXocrA8zPfbxi!(MlwA%V?zwLVU+kgLE ze`cz*wA6DoM3KjFst9aW6GArOL=ntDNlA%_kB{Gu5(os|@Or({F1{PcM(_=iuu49H zG~lqt45(67z)PrHd)p-RV`dP4)n1kqoKnb;t(plERVV5IT7h z@kq>xzj}cTT_g8=c-Un4-Fr2rWEq)p;z9oYhL$d>%greD5AW){9bpcZ~GeOr+JP3 z{EK}_EBa9uOf+P#%{X=QzQKauyORogi^IE%GTr0ap785UQj4>&Z4lo3{Sl|!uWfb% zKHy{1G^;g~2(Cz+W{Kslb6Fx1(uFj|Qdj%j{zvWuDBTql8G+_G*z`z1 zPjiQyoxzL=q6i@Z0^5(9*tsl=*G^nutr211!CPo-xy1hEHLOF~_V(rzB`Gxp?St}* zrPVxza_nWEE?UUGhThcb)2W+o2P)LbpSgPS4s4ev*fkd5$;Fv?Eifkxe3$;ji_LVT zgj;-R<2jz;qJ!(nd7_RB2~KhW84mjErIh8Bm6em&G;EK3LT7UyC2l9lvlF?YeUREm zYiT3OStGAE#f2w5foD`Y7JU-(~&9n6pr;$8lMzW~olf0TEsEeQYs N002ovPDHLkV1k-m*$V&w diff --git a/icons/hi22-action-newfunction.png b/icons/hi22-action-newfunction.png deleted file mode 100644 index b2f004a8a187ca10feaaf006d3fcdda00adc2d09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1025 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 QEdT%j07*qoM6N<$f?S`}aR2}S diff --git a/icons/hi22-action-resetview.png b/icons/hi22-action-resetview.png deleted file mode 100644 index f3555525542e438f206d67917fd00a9f4ed4223c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H0wnYHF4+L2n2Mb|LpV4>-?)JUB}-f*N`mv# zO3D+9QW?t2%k?tzvWt@w3sUv+i_&MmvylQSO7?Vd45_&Fbizi?0|q=ScPn|S+gI2hG zHfpVuo0-8;UiR3FIrZYn{wE)LuHXN$_fAG!JwyAOODCU|&Upj0j=|H_&t;ucLK6Uz Cd`}ku diff --git a/icons/hi32-action-coords.png b/icons/hi32-action-coords.png deleted file mode 100644 index fe7f09b3c8c26e65c87eb0d217c1b8ae89ff545c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UoCO|{#S9GGLLkg|>2BR0pdfpR zr>`sfB{p$E3AW`1m6|{yrX+877l!}s{b%+Ad6}Lrjv*Dd-cEMpI-nrH{P}-<#ryle z8m7oyQdrx%j6+Fnx?^G_+ffP4LfeM#PFFJaGA0JqTw6Asd)`?#joZt4mmF=mn|{7! zoshS}#_J6+O6k*QST|_MGdMjdZT?r_ux9#>eV<+Z)C#A`1ampBc3=|N0<@ID)78&q Iol`;+0Lwo~)&Kwi diff --git a/icons/hi32-action-deriv_func.png b/icons/hi32-action-deriv_func.png deleted file mode 100644 index 23964ba111afee31ac4454d54b4f30bb954a0a2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 701 zcmV;u0z&iYm0e<-T-GOSg z>e(9`IiymL0;Pb;GEk`;VrAtmIygorr8mfCKcTDZYLFDj2QWAH9P{(9K`Di< zXTfoFRKeurlVA+Uq#&2mVObXX`fiHN#>XFnqo?NvMn>+ozYN#bJ|Z5!@0*{Rde+`P zu)ABt;^He7zz3M-FDx%F;Q08r=MRU&T($2G3=Iu~(o0xfeTSKu3?h*TT1+KhFV~8T z#VwZW>*(&jCfA7g@ANF#+1X+jEe;v5v*iMa#qL1{wrzv(e|oDpIr#&__#wl9`=GJU z#z3j`9UUE)F*tZfCIBIXN6{*_x4&U@^Z~y_7so)oUdO?~zOdKVzhGh_1xd8VfUbYW z?Ceu)Zhl37|1As*+y;X*12iZDiNr(EI2^~u^z;kd*+)QK<(ML{@00000NkvXXu0mjf*03}U diff --git a/icons/hi32-action-editconstants.png b/icons/hi32-action-editconstants.png deleted file mode 100644 index d3a085cb6956044838f31c57dd2e7ddbeb23a33e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1256 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 DOTpNV diff --git a/icons/hi32-action-func.png b/icons/hi32-action-func.png deleted file mode 100644 index 6b95aa61ca59665576b0b41d55e852caaf5bbd3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1253 zcmVj)GiJkp8X|&@fj_3kxP<*sH?!~uO~^7bSmJca zVkSS$CL0bRjv)zI%zl_G7}&~(FhGzB9bH?XEwoVD;(K4aHib0{x05G%?|JVz=ic+4 z=e!?BR#{m&r_<>YvB6kaSU^`-*QbJBuTQM5u7=<5$I8kIs1aKde^CE#jP<}f_hDpY z7~8k+02ngJWFX;o)q6-6A(zWBJUj@4!H_4=3;*2b^RE&gw_Y#nYsPNhzJ=!IYpAck z82G7-L>_3x1zCS=zaS{64fGSRPB05?ZLP4`EEpK*g+#Csg7{c3JRT2na}UrF4AE`` zNI;MQK?(ygF)_%`FJwQ+%6dVv0c-?8(#I;5O58n*L`e66#l=Omv^3HA8>IR`$O%b# zlE*=Hs}t(>8>|y}_obyrke$7kWRFw>p3H#I--pzqLddNaD6Cd&{;&eFMK_{G$cV^J zDF4TZxN~)|-ROW1;P`j%-iv3dPGIbG9a?_*8DnE3$jp46S$LWZFxBc)Uts?0ZvcfN z*uAu8AM8gzhW`7D|L+kf8-IkS^gZ}DrDHYRujE2un!;4yJvLy5tmW*`mYrw29dugoR~)zafx0moPLm2%~WVZnrCp0Zzs3?Kd$v_$L(}AF?n1 zfX2^GVEk$$TbQ1{8QtA~V03hpD`ZbkH#y%Zv`RE%OfL5D8X?X|i_Bk9pSin_}bWYj2 zQ=j8<{_9Yureb;7gTlf$d2wc9yIUPu*s4-R7ATCZt^8_x(cKbur z*4AE;)49_J@puG{MiVSJN~JQ?7l2x=38vy^IiP6$2}=H{5Exg7%}xI90_>k0r^VwC zin!3_MlL?qhfpfs_0m50i%O9ATj%4e=J;O#9iun%S%f2W(_#jq!AwaRQd^s#d|(O> zF*>5O+8WqSRv`j{3`A88`^f=~HTBS+`3i#NA&)D_`L>=s4r|qy@FyijTAW271|%Or zM@Ji{VlM#W+4Ilp<$f>fh@mT5U>ACbTPLX`JYpSqI P00000NkvXXu0mjfo=Q{` diff --git a/icons/hi32-action-functionhelp.png b/icons/hi32-action-functionhelp.png deleted file mode 100644 index ebe2ea5c3d815a7ee471eb891df9117dc2af2c4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1759 zcmV<51|a!~P)Cht#u`nXW5ajKt2GCniT z!;8_DubPdp)b`|of@g4Ne zwl|H&?AfzJH8eC@yu7@!l$4aBIUJ5vWMm|dJctet504$MCg=AXmIRx~hq!SMXlg;H zRXl6QrOFoEuMQVQYQ!IZ3JOc@ zuPVSkrU{>@uVW(IUlri!=y-+o)XvVXkbDFoC#xfqCoBj9nSc{&mPc{n4sgAU1k_8w z>`Zwx;tw`s=Sg(3Jg*UV9=C#7S&bMe1%Rf{T_)fmp$dSrfJ{L_0g8%>&6bvy+bGc( z7Vim`+?fsi>TEG?RRH-HfspJP`0jj!*}I=$TOqoTRzw0DUI@Hg*(!|%r2vYCIbf@X z&*v+cnVFTb-kX}5{!KoX==Vke@~W#=3^Fai$=`w8bHJ_=AoZ9S2?xYjoh!jQAv)Pg z$*P_}Y8^yEkw_X}mX~CV(P`&P8{qxJJxt$H*I6GB{4I>k?4hiz3|a40RaIMQ zDrzQAo_x2ku+a960tV=8dg>Kl4_+z|v>BMSwJT}G=(NPb2e64R2X}L;v~DKhm)HiM z#V29v5f6KpkWK-V{HBG4MS-oY?H<~E_!Lv>QGlZU_eaNvm%={<7`qslxEyd403L~e zZ!&PXv<=LzmWkkyPz_ItyRHRnDBxW?P6vn15B9>fTU0p=mZ6cLb-nCV82AgDh z40kF3ZwKI<3^;D=%DR0O`0>a;;AcEw&pk3V1sL^B3H0>z#Z1722@}}z`|dpsDw1fP zr9_lZiM@x=p8>D5uGqy@z;kUW>;#Y5b2kDr0jD)jVCIq1CND1!Ccw(d>ZEM>y$k6d zHLIK{L+yo}n;8b!E<8VAgJ$f3G4~I)z@8&A+Rw>u&NU z?=66#ZZAyMpHYJF{jG>82Ie0G7Uj2~u~`gef0Tawr{8k}1A`Q37h-%!F;<=e5-7gz z9563e1cTsHpm$DB;iekX$=A*V(9(PF`Db(sXt*EoBpz5SyoQjpDn#w8#iE?YNIEaU z%A-w~v;7gAR^7%3ui_SJ7fr}VL_~zihTp-#;RJb~|1E%_<#T*6v647URA~qNijmwB zP`QpcMhJ+}vi5YgXRzdQa&jGRZf@JDJnka|bmxodr`3s3gj`ScwCrv%0fvT#)pQ2L zQ(5st1bh^+v9X$3T3XWePy7BA@?k9AX9DQn$Cu4N-GZ{o+x4jcI&Aj79R7zYDk^KJ ztlp;rjE#-&zwCVp`ME6CX9DQ@Wie#P5D+4oe|Gm9-=_ln{QMGMuKly*qlr)ZQ~V!a|DI5^nf-Q7J)AP`u~VmuyiK7C#_(kP@;@^C_~*94fDnAA}M zxVX6FlOGZt9X*jYp9=c=Sx?W)iJ`1ruL+>upQf|EW9H16XKAa=r(R#6uiH74IFcC2 z+VrY`>gsAGPfyS7bkdcOh-I|qT`4h_82+)#_&=ewDj67x3t#{M002ovPDHLkV1f*7 BNA>^! diff --git a/icons/hi32-action-integral_func.png b/icons/hi32-action-integral_func.png deleted file mode 100644 index 6f2f6d2d5f3b5e9ace8c94f2ddfdd5a5009ba8ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 973 zcmV;;12X)HP)|Shfp_!fW~e~z!+geh$bL`APX@_Oj)pC0WKi% z2WWsLLeO9XiKPVOQ4)zf1PhS}lmLa|of90SX=|qz`I2+b>7D7!H{Ut;+!?N{tn6!4 zRFn$;85WBL27{qSP%+fi)xl;v#NpwgdJ`=*<)#G0qyN=2n!3t!oob-+Fm(Jfjk0}lN014Bb9K4>gq>mYSO{i zS6~I&?@9rADVUr4LOvki9Gqcj=si=(ikO&d)O1Qp9(ZpVuB1GxYSlL3;X) z)9C}NtE=Sw{R14NXB;gpFNlEIyaJuBi7nA}Nbp7tY;RjcN9*4n2?@!Rny#)6)YLqs zI$+MS-oYE%FLQgxCk9qFh{@KiVfgqO|lOWI&z* zX7hLQ@$re$oL>I{4Gm8)I{FE*v1+K*aUjT0KyX)q<>hbW)6%X>b2&L0aGdy3YeQva z6=Z@)2+kB(TU$d_)nnTCo11l*n)(b8`T2z>x>;6Mu3g9Tk^th{ZS?o| zp|J2SqNA_UE4fU_Uj><&*|e-gR8*8xZ*OdDhBrY9I3u7|t660mFg7-d@bHU>i%XO~ zObFglz;zKS6bj_#YNRhAZ$jz=;&4_V1$K6Ju(Y&jcR-5%sCYmS$d15^M&~--(QOWH v2&SZH^m0QAa9XYQCEMjv&O!i_$@Kac)oRW4hF-U%00000NkvXXu0mjfzH_=3 diff --git a/icons/hi32-action-lessen.png b/icons/hi32-action-lessen.png deleted file mode 100644 index e2e5ae63282c243f04488bb85ee11b3095b0983d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 389 zcmV;00eb$4P)kdg00009a7bBm000XU z000XU0RWnu7ytkO2XskIMF-ae2>=2HkTR&s00002VoOIv0RM-N%)bBt0TxL_K~#9! zt<*ni!!Q)b@ozLFE9(d}+iz j*{=9RSW;lZjQ{WrQwpeKd>YO700000NkvXXu0mjfE_0mA diff --git a/icons/hi32-action-magnify.png b/icons/hi32-action-magnify.png deleted file mode 100644 index d684a82b87425dd45de23828ddd55be85245f0c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 701 zcmV;u0z&kdg00009a7bBm000XU z000XU0RWnu7ytkO2XskIMF-ae2>=8IUtwPM00002VoOIv0RM-N%)bBt0!~RpK~#9! zt(47c6G0eb@nzYt5B3AU`p@$Mm{4p%%PT+5$T;L)Rt_#vjOm&pYtdW-qV9`{ZiyCqUvb@sn??VCGi+ zUF8+M{BE7Zc6T95olSnpHrX)uAjN~fccB{(wQl1$V`OCdLhCjza^NX3+~xfqyw-Pz z^TYJuF0U799|Fm4ro{A;`KZ4 zeE{Gn4Ge;ge!6`C;E;p(M4+D-M!Qnyt%DBY1%WGIC4-dIe`DiNAlt!#K}7w(xjB&g!N!I`M*F{+8A!R9B8Ze$VUW;Z5LaW6QR-G! z25FR5V~|o|l~U1=(*P-uRN8A|^3mLyK}s3Kl~DO_VZk7!YNw)+pri>D0BW(9R|7KA zRdpC7RY3;A0MLufQmUUUEjeV=cxBW?WYwiuSrui}SViSj*x7*^O%ya86gAAbxfkgg z1}f_$s%bN@aRJ5qwDmXZ88LA3`~o`L(vp=&5M+_Ld8C+FrnvYTeWSw$MtKqv1(K3L z@ooA>dkl<#j6DX%`wdM%&I2m8u()Du%D~8Y&dB(wiP=RH)1PMM*Njbp;x|n|DWjmIs-vrKWMph&VrF4& zEr~7nueJ(8<>)lnYes>K6q``{P9zB!^0_Jyr;Wa zn)Vn3zWL;~vr0hwOHuEJQ^&au-%*h1c5TgAXK-lZp`A0fwY*gP?WE6h_;2NkduN=# zcRQ)9YVu$e$;=hr?;$KKy!*nNXV2ycWGfh7I`1MK+nAZ)93LMX9UouI(8e@D)G1Rq zyIE%MoiEMS>S~3HBNCbP z)zi8TJo$NgS4^mZkk2U>{u#!9)Z3&tC8$`weCJik;hmnekoAs9Xy}fk_k@)#98JO_ zcXumo6FCxobrtubyXtPz21&ln--H*lIO?s~Ab5D5ho#q~s}6M&CLf)8W~NCh$8%SP Y#mRmrCeQfu50u6{UHx3vIVCg!09U?s%K!iX diff --git a/icons/hi32-action-minimum.png b/icons/hi32-action-minimum.png deleted file mode 100644 index c936daf8d9cff362ec9b1d9a20e4c03a1b025680..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1079 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dy%*9TgAsieWw;%dH0CFWuTq8`X2~@8o=OxXef~W@8AI9 zX>0!nB2P~SDXIU~)(k=_Csb7ao13R8Dg8G#W>8Q7DiH@_F)^SZgD8j#QYNi3Psh|( zNt;1Z@xPf_xQb4joZNp)%XBqu1}T-}#ugxDW@Zl}eQgM<}*NshY0Y%Ks?}P1n zWM&3b{}yOF1H*eWGbTpHmuBX5vhsCua{qvWj7)kwyg==r%q@WAS95b9l44_v77_Vt zVd2a#5G5i46bGUiN=m=YE&f8d99k-Gh<^Q zcU#Z0=Ro@=mIV0)1Fc|Y1_l5d8#@;-A0Hn-zkrCCxVVI*l#HyLyrQy}uD+3xiHW&| zwT+{bUqDb$Xhc+WOk6@zN@`kWPF{XtQAtT@SzB*!--HPhr_7!+f8oM~ia4uZv@INiR7owNII?QI>*6FX^#OD2iIZM2AR#8GuzG-G$$`p*>RlDWs=4DX?jeWt=SB@_1QOg7&c$MVpl_1sBEHW`gZ zrTZqDJ%Y;`?5l&83YurF*eE{Tr&Fj|V}keGNkNKTVry0jdZ`9W$*P<^t2#G&c}nDw zm5V%H&ti9*v3psm|C}3l3<{H?H|_U!S+G-Y7gKTe{hm$p)?NA%P%d3;!m6O{uw+Nu z^!f9a=}Zt^*!7IN%~Z9?b(c*d0_XWgNV_6FHa|&OQ!^o|HDx5114fJYD@<);T3K0RRgld|Utk diff --git a/icons/hi32-action-newdifferential.png b/icons/hi32-action-newdifferential.png deleted file mode 100644 index f5b7641a49bbfae8d93b56b452d7a8c1ee484cd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1450 zcmV;b1y%ZqP);>rI;d`Mrq-wz}B)4h-F#xS&dFJ znN6u>qhpiWIPx$cA2_3i;1Ka@Aq7Jbg$4HRIem{U&Yhi@(Z$COX9cpj;FE`@Xx3j&%Ri5m=tNTbnMCJ^u5afqwIM(`5E z0&dmi(35zY!MGk7fbbU3>0yg^oaK=UVrG6+`h(?4vmqD=hVdL}JL-?HTpH4o*-wI~ z6L1esQRm$bV(;*LbrU-Y6NR*nouqtTD7C=A`!J*Nb>AO_;C{fp*e_y=eU`u!ep*$< z9V(gCs+#$wUY+bbUF7*RhI}o_$;oO61({4H9Ym`I;$74={MfHQW;Pl#T!Ptuz>DZ0 zE2TCrKhC*3ma~p%=Bf&*aUZ9T_%9TNwgY@N0#Pl*D+S`+lVl^oPV9R*KdNft#i~xs znsXKdzJiHQxw~yNV-?iGew9jDj*fLpdp&AZZK8<73o8_1RR@M9{@j}WifOLcOcs)Lu11LEPn%-RpE z1#Z9v=Td_@moH!bXEz3hV2MlkKD7UgxOG15yOu+Ryij!ou_%sn;!X{`0P0=YbmRMl zl-FS+moQ;jq;2*#009+v6S=TWh>Lbl4CuZ2r%alTdT|KF`LY7pz+I6-D+jdCo}ruLWk3SqnEg{-tEJUyFQl$boCZ^`gQu0*tO4P>)8B}$&I&c2wmzF+ zGp!pdX4S=x^u;>aj-|su8)gUOhlYk43QVK6wcAw8VbZu)zc%9Ql$4Y)qOFpOtf8r* z&y7r}WAfz5{NK|vZHu@&lm@~O_<5&gVSP(>A6Kb)kkgp7xK1Qj*Kc+(V|t?)=xXLe zY`Sjj)r5qEx~=BKi;j=`Ggr36?Tf-&lai8ZL|Y|And5Jou1pJ%r%s(J3bPtTayc=pO-n~z!--cd2CU6p$bgV+mQDlj9 z3xN}BA9gKUw#=avHyI6;W!B->5f}a1XU?4IZD0Y$>2qrfHk((CuTKv=Bs!F*s_Q0B zoH$P`W3g2m@3N~JomrA|&5MDDBO)RaMLk%sJALkD(Z1bAa#X}%i*ot*Wz2fnY4<+| z<8DiA-~70^I3ex?iY@Re4JI1aX(Oi?bmObE70&?hE#M_K81!>Cny6t`gtQ?tGII3o{%*tS4Rlrv>VXx!OT`Eo zz;N%oV29LYJc)MYc(%Go4eGE(D` zvGgTEuXtZZT}k@)$Nt40qo=yI2;ZjwKM+p^_?!#WbO%KOAz%eCfJ893yW8-DX+)A6 z$%a$Xl{kUkgYXQ%kxv~HLTMA4N7LOb-UdD~ua3eN+&mdCtfLC2m5MxxTaKoB5PVM! zh<9feO>45yUm}5pxWho@b4Jp3G@TFVo*RIuW=|Z=I=+$$D^sb~^Vh_Kf%nCLr@9vy z1Y$hm!vWnN1KpJW4ctou;o=q*i1!C!Km)=&XvoL%4~=HZ5ZNuOssI2007*qoM6N<$ Eg2Gt3uK)l5 diff --git a/icons/hi32-action-newfunction.png b/icons/hi32-action-newfunction.png deleted file mode 100644 index 90e8bca2115ae49790343fc412b885c36068d3f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1501 zcmV<31tR*1P)O=EBtHJTV+^Z}xAj`~mhLAM+>?Fp+I#KaUVEKuM1-NT zY}qmseF_7y*;JBZzI;XoF8_>&qt6u#gqZsQtNL34_8;ti4DftP(epr*swSiSn+{Z| zCZs(tjqH9AXvXjX^Q40r851gjONLYfy5reEt?ImJD6U$d<8_+A z@F+pn)O*b1&HEAm>gv zA%_U1GPU@SY9P9Doz>OV^toq@>8h%#>f|q&+sQEnI06)^rh+L-9a=6uOaU5EEdK?Y z?K1?n3b7>|a3QRP#LLjO{uCulz%{G%nC?Px|NX^HHLwI5?qg5EN%o(=NS@v;LGt@f zw}qv++=$0Dz`Od}y#K<14H(9AL%1MZeOVjzMRO(@L9f(k(s*L?=0*95#EL+~e=Fv#tr+f3Ds%1JxX7vZ@(SksI%oDT8dm@`_4R?& zRV0mPYHA+M_5JFDez14xMH3#me%jSLqmH>sRjtXip}5g*JBV)2IBXq%F{AVI2(0Cs$)%*2-O)}mnPf07?(8H*V_rUv#`lMfI$2?#?x?T- z9A#fDQM><_V^jLZa~$U)Pb79h;4}G)FCWWn#p!cAQdhTNl;@EYNql^;A-!$KRj;ec z)qxc%aZyrjG^*S&BC-HuSlbiZunKx)IkOJeem#+X@I~%J*%bG7 z04=Jn=uKHi25v^+V%HeHihHRa9wvkQojbOko-wm!gf-*tI^FZY-m~BT={m=FPwijc z9os0sHUtcSO$(f?fn}jcxV$H}UIR~a7P>{&qLf({hGEEASQOb`-xP#Dp=6gp^arCg zlw;cx{vP__LdU)#%0z1}<77LT1d;tUf7*XM>jXlPGYK5=f|T_q=#TB&k9LXdHp*4U zn=|d7;TSV6W&f*M#3}o;P9T6eD0@BsfClz30KTyDjAb1iBt0*^eJ??2@PZ$X_-cO^ z*eLTt7p9b+pcYd!G~BKxyWU^YsVA4catICa;SKi`~_!>BN% z)c4-9S`rD7*i#*+Rs+!{vP>W;G8d&j=^p}4k_AVKi<9f7O=DAj0fC6G=f3Zj*6t^@ z`ajm)hh&M1;y@XSUcX)E5*!;fimzu*XT^q^$`610y$jf*@jl8qInWY>>$k@eonnDYQ_kun!vDx066Kz9$goVo00000NkvXXu0mjf Dvq9JY diff --git a/icons/hi32-action-newimplicit.png b/icons/hi32-action-newimplicit.png deleted file mode 100644 index 7d4de3285c4b4b757bf8288bff1b7df6f46afb06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1498 zcmV<01tt24P)z z>Bw2PzsPB>0L&vguAJ6zKcjCgP*_(#2SNJ)wbI9YqVucEr+`eb0jR`Q?MDF^i(r#T z1Am4z^CohgZzfHA1G&T-NIiEF!6&kvsAPS1!QTYuEvm9d4}`o6t7Nkm z!#&b|-@icG&(T`Go}BQyNiKW#k!~d+{nH5P8BZ)Nl2&qtTLW=C2TMy!V}dO#~800uVSFP@}4(Z;3Q?4_s?N zAm_-C;wj`Te}uG4%$9DXe_$=Obi~pphbBGg*LmpBe-Hwy5IhdZo+SW*6`&H(bEDQb z!nFnXJ?|!XWAXy3<6Fpi{x@^uh?C|vp~rMxX(n+?X~($D&8KE82qhQ?UG zJQ8+2h?i>i!WHw}YX~$DP=~YdEmj(d>o=cV;m?^bxf^;HCp;#;pOf>WHtI^{v11*b z0R#>LZGay3POeq*o*SH5y%c941}w$uUSU35J1JOAbo}of>ohy`>by>qs?^-1$f!cM zOiTcRx`RSM?+Ll>zPwK!hD890_2!Hb-}`?u-~~q79n26=K`P}@H3Uf9yHf2 zK&=?THDqNuO1WA@fH)@><^Rb9)CZ;w#Kgqhw-;~(0tf{B8jxv9n761aJw3hkIRX+P zKrXTc;`I8L{=@`St3PfE4h~MU-+~*{i#8ww=DX^g&iH`Yr70;Xvm9=LD~7;Rfsq}s z4?L#tgDXnp5NZZg#dii&CB|}j+?N<508Z=>x*A*o_5<3c+}M)R*acyo5SuJx-38odY-5XAFPqhseo$*a2I=sP;!I&RmI&*#CP5+4l+?L2NbF2 zU4T}2Ev>@Kwh``ej;bNDkcVwxRZw5x8J!H5WT?R-!3FGlFN(?qxUxW)Z9)gNK#BT) znu%^yr2q1fENt>nSKbN;CTV!h-9I1hg@AMBdjPACWu=%s-$%WdvqLL$<-mOf9%JSG z*A<^$4U+_wpzD3$<*Wc^R}~pK5MeY3J09XZY;sn>0$>63?5OpZ!X@L2;7$Mv+ZY$V zh+f84RI|DC!j8_ZBj0=18392Z!e?@HkK8AnS zy=Vb8lY+N^X1D}|uqw)6ZSDn|t%^>tGUO-sZ;4AzsqYHoO8@`>07*qoM6N<$f^%@Y AZ2$lO diff --git a/icons/hi32-action-newparametric.png b/icons/hi32-action-newparametric.png deleted file mode 100644 index 3aaa20ac38762a0a059eb6cebb735356fdc8de0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1604 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 diff --git a/icons/hi32-action-resetview.png b/icons/hi32-action-resetview.png deleted file mode 100644 index 0b2316afbe85123b5e0c387057286dd73e7f8453..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UOvO%~Asif`Z`?qFk|nMYCBgY= zCFO}lsSM@i<$9TU*~Q6;1*v-ZMd`EO*+>BuHF>%?hE&{od-))5g8~n0K)=l0h9jI? zZ^>MOAfaa&lasW}p$nW@pElbEP=6C1k=>1=vFv z10FA6nsCr!(p2T1y<7Ti%Xxn&G}NrSR`*tOvUtL$>AN;eo%XoD diff --git a/icons/hi48-action-editplots.png b/icons/hi48-action-editplots.png deleted file mode 100644 index e29f723f27b628c5d5a6587942c1fa5c842aa9ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2534 zcmVQ(dzvOadpi?7&;MDwuWx_r|9jW_ewP&o;4fFY zGuMLTOG+foAo1#s^?x-Q85uc9Py+zoH`ltOEN3r@_btVh@R9O#7p*jEH+`!BVq;^E z3aa0J$=@VjUSbQBUj?Lv3YBH=#RZ=(QiAY!D*&RSqi2wLnIPe_O7xw|v+aRW4k&g3 z?jHn$sQx(z8Lm1-)JMBn0m8z~aP5iE6eKVued) z%NhVEJ0@;-RQ}LJ8T~vPrTI*KV5hADpm6Ds7X;9uIRRMVqP~_bUVvY|woyj^zA>5C zQ39NEP?(qPazeTbx1m{Qp_rJMxpjq$`r7U{47I;@Q%3(MySntz0#b%50Pd|GDW~Xn zX;y&n@bI>jDyDVX`M>B#g?)YNE30aS`G-b87D)g&uS^~Jj-fd1p`ZFzEo1}`&j6Br z?6P0{Y^99;4f|Kcd&p4%P`b%YC|(=Q07Tp(8PDy&dtCcB3J|jdd9l5#6y_i40B1YZ zMgM(e^pghR{FL_Dnr$UaxNdTut0V|i@LI(j-$UCn0W%O^^zKZ^_Q3`-3 zi5^1q-82I*mvBuNgom zuC-jm$r!)}zU}Ha0kC$y51!=ODWhN1?^X0OoE6cpOjbnSPjdj$3lVpd0c3~_zoRs2 zsVTtG*%alHmP&x!fk37%kktW5?5_a05;8=-dgjeH1Mrdxm;n@vTHGRl_cR%JU5M}g z(u@(nZ*72LGJLKxaHbt;4A{0||Hmt_RZ>$uef+*58Uujmd>DX?(rJ*1xsxUU2dDPD zEibhN9$Ns{#sS$~ft((|o}mEcenE@_k^;+-7%a!CS@-jM7?0A|48W4(RSWq`zU@CX zIB}WXOB*XkIRQKz1za8kT(Y98H?Z3QwJ9D*8Rzn=>N2k0SKw& zI&#%u)m2^CnkbDAFd%g#@pbChAizrz_ay@;G0yM&^KK)t$ul%Kl z7{I2$3aMfH?tREyTO*@({TD0SQpv&$iNiOhF)cH8OZHvSt1z~tvQtDtXR>kt))HVhz+ZM^ObFb4xTV{M7BhzOy* zN!lRsf;8_7pmHrxvIQtwL=f|V8>@heQILMS2*TpV`csZ$@!}{fpYHv$YmYN-!@NpO<^HqRT6N9h}ZioL+S^}sK2q!qxA zD|g*2`A&;!DnQ5IrI4VM>0Sp^>)^9djyX+D zp?^&uo>h7(0Vux#lpG?6bp)^jxVZ@xIcuiF_L_u13V`2!K*hCG zWKA)-D>8iFg5__0c{;31VE_@Hxuu4!I*hAd#QOS1?@?d<*B)r9McgU|P{nIKH#f7i zY6`#+@z~AM+%yKDkn~b2j!ft*ozH;P52LwWn8)fti1NVGq(gyF={klp>gHOj=q77E7lUJYfLi z9afwgJ!WjEkS1y!Dd{N`GJqQ*-5)58S~WIMj_c=Lj!lrrPwdJ=+1(19$x8q7o3 z*yt7wp8W9aXm_N>ZpVg^4)+Jz|1E>ezXpKKCcPDDvOg4t2|=Y7*VEg?a#_ zCnBwQ22jg$FK3$>JN`+{cs{bSNA?H@9Cn!ub5q+j4vsEqjR15Y;|$wrfvq4=EFg?4u*XgHdiA67;~moBCT>}vPQ&JA22m?tgDk@a{g7F-0x~$+R?1f zTmmpu7hvlg=xz(Dtz-bRCmc?u@pRP(Akj1`7G@%5^d&*i8TumoogG8{MaIkNX7&I$ zbpV*QNovv=z^8tgxcLm>_3c}0?>D%O?B{u0nGjTcYA4k15E)`LE4k7NJB^+Si7bG zs-i>wQ3mkY^g>}P)3q61ud5G`5R9l->%p@!0vP;G0VD-sv}zsn?mu*?Zdm0&Ze+eIqqDzW@LL07*qoM6N<$g6ANr2LJ#7 diff --git a/icons/hi48-action-functionhelp.png b/icons/hi48-action-functionhelp.png deleted file mode 100644 index 627ddf2e2723ed9b47b3d893f74367092bee4d29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2880 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 diff --git a/icons/hi48-action-minimum.png b/icons/hi48-action-minimum.png deleted file mode 100644 index e095ab64d8e186d5ecbdf13e166f00e913adbee5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1619 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 IM6N<$f+Y0CN&o-= diff --git a/icons/hi48-action-newimplicit.png b/icons/hi48-action-newimplicit.png deleted file mode 100644 index c9add9e6fca326efd55abf6e84191736b5ea45a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1932 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 diff --git a/icons/hi64-action-maximum.png b/icons/hi64-action-maximum.png deleted file mode 100644 index f6dddc6801b2b0dfa9251fc7aaa8ea24fdb3d835..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1821 zcmV+&2jcjNP)KC%Baf*hQcdpc9}I zaPt!YS0P{lpaaka=mx|oy6LkH+NSWPApovAz;?hOK%%$^hynU3V)U6rF-ZH=84PsZD~~!#++8wWz%e5}8zX zT+QjAX2R>ELp7vw9iSWu15}qIn+WKn!*lUO7eYh_)zzsr0qi=Tq#4_g0RjwESCZ(? z1_HLzh|I}UDNJ-xo!d1ffR?v|fJ2$y3lN=DccGR9ETEBS*MNX_s(XQ!1awd%0vZqy zpt?J>B%q6KVhkD(V4%9Yv?QP#5WDU^2n8jK*8z6I{fXJd#R&p(pL$kb{|4Mwk3)Zq z*pLwd;95l^#v%^rC->=K%g;ZK%;tf)B_$GzQll{i<#Vy9Xux7JeSa;vRCj!g=c}@U zfD)tepkOxt#Wzc(r#J%UhWx+JLmGKkQ!v7#P}iYFiEYgQAdQ?T)m zau!zveAo+pcgym4eiHm<-{`MfaW0BRk@ydclC@s{yzE&9*+K~8Hl@Mm5$gXq5ZWR~ zoJ6{e_e1-kJ+%wjLP+yc*g0v^?@H%?2uBb49KILi zsF(50oZUWoymi2q+S+-LGkTRdq`+wG(YzFv1i{p3Hm6Q%c2`%+29mjMf~eEs-pbwK zEW43HC?<*?7)@uW{FE-DbBZbdfVR8A`uffzH8qj}#E53Ilmz2;)Cpe@$0;5pQCFoB z#MpTOk}J_cbP=6<{QmxjD!dP9LI60w`f@~`oIX7jk=B{ky|VKb_uU*Pm{cu=o0=S( zU9Mi}Lv+dsw$#qg%_srj{1fb){5cd#n)337Agd2?r8CxYcD|V=I@OQFAo7DyU?qMD zg=GDE>V%z;W2!Sl0LG1g3oHTKYQvv$#Z%t_0~4IVaAu+pMIW0sZAB8HA=ZZX1GSsE zneG`AOF%<|8h(ocN?Fn*g=_NOSuD(s%;=~DLy zsp2yJY7Bys#P~34*Jr`dR!G2tx&(;gY!IHftYiq|!8=`5ZNu4~U&Kx2OEh~q8jZS= zU=Oo-8Wf#XuW&ZsG<66F28&?m_pmH~1m!KA_fK)6TH(_Vh%fke?iJ^H}^NEZo z&L6RT7RBF+ZJs4eZWsyd0@#$E0F1w4J8kmUb;#8ou$N;5@Zdw7E!~Y!xGASF+u<(O z`Cp@Ak9?TP%%5By1sh-)S1yZe_FTp^PLlKc;pkUBEEhbv22u2+MghA~vQ{o*M*&NK zoivJLe12CbyyHsZbI+n}auXP@NnqTcgrMSb-%9FNh$Vm}p~(Z8o;}wi&vP9=!M3^G zTl2c?7jsHIsxhgZA?gjBrJ|fU)XaI1lOm1;*XEwD|7%Pq;0pc&!>_$+T`ci400000 LNkvXXu0mjf=Gal_pzSSioBXoVd(ZhE zzw`RecREgzq(>SG0SW=^gFrx(yk5;i=jg0iIg%(om5>1He4*s`OMq^`2M>$$;LCcz zHNX&bt}*^STX7LUq6pz=c;KBE#d7c^81<`N5Y}-#pOa_=%w!0Vu83mm15N;l4nbI$%>;mr+gN+|I6b=}z0c1BJ?ask z1$H`}OId*fe*g6wK3_pr5)cSXVQsx8k_-7ol}jlB=6gB}!AI5V5%#cxFN@;-dvsO@ zm;=}XXa=+af)s7^*%n$yHzN5B4Wog8R@Tn9E2}?=IB%JHU#G#>OY8;LMgK)s_&Kk* zd<2fW08M~ifJ89}=m2yhXnBx%-%H!LlAQaiSo@B9d`Hpw@U~~D8GGNy;T;aof)KN> z4ibOwMURKSi{nLrt$+}9ss*qX-~g!NrvN^q@7B_~61Jr>iW2IYJh=#L>WSGV`upoj zZL7irm@U;Q%Ln}K@%_NEd{Y!pNp*GO5;#8{aFsf71W-THH2~Ytwi1;!eONuaeGJ%g zgte=w+Os3O9?q(??;MGd;i7SM3#Ki}{VBisF_)0pjZvq+ts(W1ou`QKxlgeBf zx9V?-Tc0{~=JF+B0w$Ieq&y?^o~>qTUwF8&BY|v=a~=z40q#`o0w{~hlwu?V0*$O4 zxBP+r`BwW|k%*6l|?vdYi6-9s9c>INOE?sUZgC|dW{VC-1&h1K0R0fg8<-f31g9MZ1ksz-N1+X2p4w1hL;AD87~gvRX>r_pTu5l&w5 zB!mb#3xDU1oB*23C*&PyKM?19*KFRlhRf0Iis;rZmhEPU9$v8EfI~<5wi@@hv5=Vs zAwL1ik|vfRzJ0nLEHSZr@BE&j;n{H&KrsWBJ; zd<>4&Bp?7C_d%Vn0mDfA*C)15izYV;tc@7yQQggQ63_~-K{T*mSMhJk&hw*B47>VB3==42Wjiw!BouFt%*^DmK9lVWQt7RsDLZvzi zM*mf))n4%H#|CDbXFL3Qr&apBtSsEHq|-fJUloD}K)w0*U}vGm#QQ9aLA5>;$mLWKtA$Wz`QQ zpJm7%agfI`5dK|nL&Q6_*O wl>Zr02v7)62v7)62v7)62v7)62*^DC120_(Xz+oHqW}N^07*qoM6N<$f~dM^y#N3J diff --git a/icons/hisc-action-deriv_func.svgz b/icons/hisc-action-deriv_func.svgz deleted file mode 100644 index 64320b79b54b79d81ec11a99e18f0e38724f4472..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1585 zcmV-12G02(iwFqsE~P*K18Ht+UuAf7Uv6hZRBcKC?O0oH+cp$_ZhnQPVps#{!iyw} zik+fy+%`ZjL7QaTQ=v$-Ekq^_Nw$;x`W;f1Enm_l-u5=pvB-1%cz6y;r~CGPk{feg zl$jJg6FbN>xJYE0iBZqIzItzmrcqY0NaI`z-ZOwl!zxwlXV3hNbae00A z>7s9#w(I^*`>uO_b#8pW`Ct%)Fk;Aa-N6_0$Q)PIG;-a=V&N>PBa4xH_03f>?zchT z1_irOP!?RUjFFR8sj2+gw()@rUc{9wBI8{uZ@F=i=d-fXBm+c|rM(XBr?RMw%X~Jn zFNEP};!Qon$e<1g8fUXCPYsVA8-{IzdGK{)7{($?t8vdHo^Pt*m}jGLrN*8f&ojO_ zllMIn8OQ)3qhXZQLk_W#5XWII7tuT`v)i1Xa1q1HzKxT+Q6Xm{jRap9+uE=KQ8|qh zurMun$%{GH^epX}ItU@Fy}+tW;V)V(7jh`6Ma5m2#8bY(3LU(um&!!M6L6ChWn#xk z1(NpNWSYy$PI-~de+*|Lalq%}j^b@xf}%T?6Yfs4DK97Tju-C7!Mk(!F6BI(xwR!X zOQa~>+IrbcP?Wtr>rW6uYMs|oQ8SYb@rJ0C)D(2MO1Gi6^c&18{f6L_a#kdK2qw5A zc%^f!VcI&;T4vyTAK*Vee{wNn;Tl9sCthiY(uq}uI*FXPI#(eFZyQOyG`$nm)NP{e7*Mb+dH0KYi@fq!U! zqb2iNWEHH-3{vj9n#)&lT`nhtVJ{%a@e!&^;Q#5_FDGLH|64qmTp z*WD~6p#E)nk(ZPgaTxQ0x^$XqTU8dJ9fyUK)$FF!URqf1^|O_|gdAL0{Xu_leztAT zJEX7%4B8H~;NZe)&v*aYlJL2Cd60RE_M1OAz`GvEb3Ghp-rH~fkQLoE9{jwpx~@9L z^y#*`bf_aXRadU{S*I=`W<8w7Bd$I7%-2KxEE%`5NO{q)0{v{TB-CP7J?P7>VzjSM z%Ib=b_VdeeoXQ2%=r;3F%8AnIgcN(2;cb2bH%A6_4NvIpFdsBCKnP)fo4LpYxU`qo z)4)Sd2s9T~AK@n?0K!ws0DyK>k?3U@t)o6-1euDs{Jc`DIE|}uD-)JMi;zQ5{hVkw zp#C|uXy11_3|rLlEKl{|-I)_g6J!z4U>2^as*M%BrXtI;mmJ%>=_JV3^qOXSs(lO} zS2?FJVZ@qE{ADNu3-_t^g)L$c=&85=VwC<~l)(=rGIkXjbHJUN;xF<26#x zLjBqwg4XoB7bErdBK5YAV%*g36EK(M*N$WWIH(h{4tONQcQB&5$CABN3jvZP$8I>P z$NGd~Jqj$Q`GIOX2*a1elC)!qiG>NEh5QT@7>pg_=}srvL(@oWy4}!ip!W%(YM{(@ zfDN7cvkjH971V$4bJQKR=PN~Jm)RqaJVKm0%Qa2&qpXVaEU78Oc#`E0(bZTM>IXhQ zS)m<;l&;`yu3BZM@xSST^+>ANwJ(Xvd)_!0gy;ww2cD zQOG+U2`TuAUZi4l`vzIij@vlA=9f*y?<>`VJ0}dRsdfB=sj`RjD((fd+vo) zlT;Bf*L%A*hy4z0@WZaFN2l=S_szLHf_MG>Ut}4>_#b2$_8b;?G_a`egox4b&?IA+ j9-d?j|DR;fNHT^4^Ypi$=2-Jp&f)bJAr#2dniK#48A=+Z diff --git a/icons/hisc-action-editconstants.svgz b/icons/hisc-action-editconstants.svgz deleted file mode 100644 index 51fc4646dbcccf5abfd1fd9da61692147f578460..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2610 zcmV-23eEK&iwFqE8M;6K18Ht+UuAf7Us_C0WJh8EwOMO#+eQ}sy!jPe6$>PQIh^-H zwp-M8S_GSHizeyrekvG=wuwljLDE*7U%%&)6lIB0+o)MOlBhE?_ue`8+?io?_T8uD zB6`TGIxma!iC}yZWyP$V=f%zW-hUeD~j< zUqp(Pz;%+m{MY2!J1F$ToL09Z(1S#UOQ<`eQ4$I)e#rA;=ER(W$9y(&J|v-B>DoO=}ZdO`f&m;CbHMo==oyyuFso z7QW5$o7-lL4{qk=>_b|Ey`)**B_HQmHos3kF7Fm)ljO6qsFQTo{$%_*z+wCv zV0C$4&9ZBl$XJmzl*gel?vlANgZF&_|L4u?M1&oa&gR*5 zjn6*w^i8!5XhNqft$wW1d7c#wu%R1Vzqmrn98ZJZLCRi%n(Z+`gU`{AZzA}*1V%!*dy1xF*%1E{PCK1me7H+y&DeebXuK1im!n%DPK$vexKi_k)jX@#O}4$Zno5W?Zyvj6Gc-JXMj@+1JKx`4-=_0&1y%1helANKCj;Y# z2cyGo^XyZ*fh(hx;-g0R(~fCrZ5TDK@&X>?{$WW-rw;U3KR1P8MX!tWt|@Qs^Ld6E zZL0fh-Edp34#5?;9>BrK4m|db`5g-VannR*YNEKf`PAlMc)}aCKOSmt%0-3){4Cq< z5GAdGZZ?9s5yFS{V@i{K8dfws{7m76EZkKYmad0>RvUd^mqioT`R8mZWbfp(ZmRNQ z)@5QkxV~#n+s@bNGG9DSFY*TcvUC~!iYTMEX;DXS%A)K#t=b$-3p{(IiwaT9nsySU%c>~tsWjW8Li|TZkP|LIQ*662eD?rOE=hAOL z;*1P?B?fFLNGjVtGZ<_5KZY*N=4lFPUu4e(^PU?OPS!VgS~_bmxWJGDQH|rW1n)*s zm6RNcrEeYLCiC97$+ws1G6WaoS<+%(;92Rv;2A>u@jNguzTB^o$NRN7mHqRaF*dkO zD1{{Yp%^yhz~#QI4bQ+vYOU1?@1?!D8Jd(}%1Gf)kR>0yvM+WE2ldupXc+$exi?%- zZw5o%Jf1Ag(C08IPFv632?>N~BqWVmKIC=&VUe9?MT(F3Lpu9-QG>Ow3f-09xkr4WK? z*zq0;HzyDp^CupTgg)7x)8`>`!~~MJdpx+ommQYwtHtwg*8iFGVjwHhh8g1(O$Olv zrKF2q6Y4ZqvPYfbga(fqQ$iySCaDI4i7q4fXCnB(PcU1qwE-FwGa-0kPhx=1a|r{U zZk^x&J>$}F9UR6x#e~<6`U()@RB$}9iqWd)2vkfu?F>N4I4Z{g3`}$FbZEl@$tGyy zL6c>;a}*Ys(!x64q1q{JBhQ@Gp~XnD-kSZ`YoLJ(t$Nf3V?vLDp><#3l?IBal@mr; zpo*bgdZ7D={T%INPWY#FLYbOwC+es=iIQ>t=>*HKE;oq>t=tO4*YTr-qj^JvGI+0n z8cyPM9H^$g+z6l|uwX)mO6E1Uu0y>E(t>yD>zwIP8?pWB_Ooff6u498w*?1Tl+X zv<#BaG2df7NIud7oz3}tc1mC3ekI);oQ~JW;q}2jT^}r{ms(PFT2z!*hDf5RqxwZx z;081D9DGyf?mE!#yg<@j!i%7;TIVw1x{Vlxs2Wh4sKRt+f`ILlszI)`e(6FrjeCMVDf2 zP)Ew}F2&Axt|@v$o}BGauLBp6)|5`(VhF@aZuZT6oHR2omu)WpALZenrbrrQjd!hL z9ShP5qEnL8jqXuOjEbaWw0Bs-ECbgnjHY=sfqIS{I@+X(bgw0_ee!s{S4x;=Ktx=tex+B= z$VfVb>_wk8AE29k9F0?Hf4BbpUry!D;a5)%A0TNH3|wj2?v!F&3N8Ds(IQ3N)~Jn> z7O0f8-2_5a0JVY^vb`vnGhVfHX^^O$auJjO$PuPIlfrY0(eUJLP@GV3=cE_=V%m$1 ziFNyr;+nUYIPG>B)DpkGK7!;!8`F60+x{iFZJ#Y4@zW{&a_9nGJQ@r{e0=w!Pbdz! UutguZuOIO7KR9%43N;`A04pUUvH$=8 diff --git a/icons/hisc-action-editplots.svgz b/icons/hisc-action-editplots.svgz deleted file mode 100644 index e8d99f68165c2502f3153b79aab3cf8b83182cd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3279 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 diff --git a/icons/hisc-action-functionhelp.svgz b/icons/hisc-action-functionhelp.svgz deleted file mode 100644 index 93f488954e66558a6e95d13a1198c8a6ef5c8b17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2614 zcmV-63d!{!iwFpGf~-IQ18Ht+UuAf7UurUOP;D>(?O9oG+ei|APJRVf!2&VBZuWgB zc7lm)X9LU;WRmRe(}1REn;VG~NczgJ->Rl4i;Cnx8E5BZ30Y!yRoC%-RV}uB`092( zi>~v!DXQ{l#3>s^d6`wyqP#d7ef)4r+$d_=w4A21s?3i@Wi@*B^6BB-@B1!U3IZ2Y^5698(pWZ}*G0r?wNpkY*=;`RPZ5QJtxw*NaH(Zq+fs*60pn}owm~v`XeNIlb3m&wpBfjewtQidGvNRyK34n6@e$MEC7Z;E2b1;$9GH)* zQ>W7+FWX)Rf_{7a2md4Zx>yQ7mPHGkTtS)rj(Pl6er%S>@S~9t)LW;+_zuR>QpZIn z78_z1Lxj{j&LNH`Po5k$ZM6tpaem(9EtVl;%NlRmyBTnc8YHV`(A>`$W5?F_l^#TP z6eTa8KHX}J@3JGk*QcigJO19z+TUR^#0fOMiJsUSJ$sKHcYc6;lhaeSY0W)o%}C{TSu@A4-G(*6zK2_WV)UjVv6b8> zk3hEEi)@J-`HE}8ZBO$+1Vd-3_iksC>?9bj&D{O|Aohk{gsBP=DcZX+8`zcn(HchW zgCS>BO7D6Q!`KVH0@6zAr1716Id)z=0+Q1G7$g;YG$i%DTaUN=9!cYY&f^Fu@1v?sj$h!Dsy`9s&Er&eElaMS773<{FESb`Fe zj2QD+S!yMRf%P&&q=hFS_dprYq!fYmO2!%jV}?L{%81^p!mjWVy)vT+r_MOM*Omwh z&`mhFl}sc1$fswZ0bR*pU8X}S3)Bw4g;_B1Rs;MKukrLGuUMcXf&My!mK%N zomeA^IuW|eTHN!vQ5c(W&})_&=K{0D0?C{>(B*^+0MHW=Y63@GY9a;raT8$IF@sTa zi{+x7L~|Zo3=$ubtK>uEs{bLmYu~|ow3ThWZxbUi9LTUjbXW=la~gZmIHDYUr~sxT z8aqW1Wq>T35$q@IcyBGQJz3M_|#;U+l79Yh+e zHK1B~+($b-^*mK6ajTy$gOV&Tyd#`ZW`dP3kmOp|+tGoepU#t>R(U zL$3AUOK|n5OO+3oeX&Wu{_*tVU;o-!4`zEk*uCmO19}2l3#sj@K?i^p<(zN^#5rOq zmx^#pg>=LrKN&%^p{FgiKn8#h9R5}rN6$ar**L_b+B(e&{At?j70^3++-P6u`B13}h4uVa`jQEOR`(p`y zdU(-?cj2ws;fX`u%o@JclXXlh7h~rN$2Htp3Ld>x2kW_ZKhn4PZM);2I@@=-uTDz` z0V2{v2cdNroDS>ib3QJsGJkPil`T0>=f&)9{3fsFIi}Igq6gHf=jp7Qxe3qegQ=$Y zl8=R2+U^(Dd7E7h^sdvoNXyk)%#NgGb_s{prcLYi#Z6tbeZ7xo^)kr&==+Iqo*45* z+fQKL|EY>{JTKb3UY~{2!uaf}ZM(9#?S2;I&a1AppdBG_#RL~_ReBhhw;TWRLSx7Q z#D_-M-+T6l$3j3sacy1P-@xwxhb=5DLA|$+L*EtmpJQ?K^3`Dy%)Nw92ph_D&$?Nj zIsacL8+GETvr2H~R&^q&RoZzwtP|sYaGe;B7PhmtPhA`)7w{fT!P_2HvZ9WQA$5WC zqD^N-)(5ir6+C2O72u*B6w`-do;T62`Azh`ny2N815Gt!+-lx);P5c06&rHE8UH>K z@T<@ZX5#*47YX2DD+@gw!{qfn4dPu)j+}ZkMnl_hd zU8i?p6IkO$7|yk3_uNQlh4X%s8~sS!49zT~%jS3R|L*6kk2-qr?g4(ykl#H(+RDIo Y^tM$5xP{(quAw{s3s;JNBw8Z?0JISTlmGw# diff --git a/icons/hisc-action-integral_func.svgz b/icons/hisc-action-integral_func.svgz deleted file mode 100644 index 782da6f6dba0dc5b532f099ad26fec08fa4f6b4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1596 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 diff --git a/icons/hisc-action-newfunction.svgz b/icons/hisc-action-newfunction.svgz deleted file mode 100644 index 202d7beaa883a1d7eb2cef04d551b7b16e895402..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2034 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 diff --git a/icons/hisc-action-newpolar.svgz b/icons/hisc-action-newpolar.svgz deleted file mode 100644 index f135c0f5012f1220bf8957fa4889ec41ce908bcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2287 zcmVlC5p-+Ceolc@_ zUzBN{opu&NlU%?-H`BrnGC z$6w=M6aRW~)`LTD<$wq=A~Q;c)vy!t^?K18pZOxG@}eL8ILt47^ma0tmsKr_U`o4n z){EO&UR2Th$$Z>Th1>x2GK%(TGchf3jAT)!hVhm1ABWXErq53*#69D|}9^pZgZ%O1*^<&&f!$n$m2{xT_HA7ABDAJ5X6FQ@qzU&MdC z`0+gcGW32pkH1W3le~)4L7tUy6SQ15m6fM07~q)Cu-0p<{<48B^QEwM3YFJWRK`pB zhX1nWmH$#e%6wi7{0JdD$$S-Xwo>*Qu&u-3|F(kv@$a%Kznr*4IwoW--Tz|^a3QIEw(msTCe#t(Si=G&^1b|*qs%pU<1RPkRjG4xQ z?^-}0pcf28pT6+Kf%61f$*{pMcxXM)i1Ei*nSHR(E~2bb7gF z0`%5lyNX{u#W;{lG3~yQ%v1WnWc=P_?Awi9Ce%DIm)y#g^rz|YeV%63hn=hkvuPGS ztEij)*6D{vC+ev9_TlldK!;LT9zLxpu&57Daa4T%!1(Nl337CEc~9bPenK8$9N;px zpSS0~vETkk3LlBNpki!?G{*y=i6`zS;rEoL9+6|rJSxSQdu)br_NWBo;t~19)&2B( z0Kxe85R4P&q;ANw%!r) zQ`*5Bz>)oK`pcuX{)dM@xbq(|!R;C3!!sNcULOj7#ER|(x8J7LNw`cVo5ZRgUHeys zADwodwLgxAOk0l7m|8Qqt*3%oV>q>q=q`w)a9F6% z5UZnIILHjcVRn6@2uHn6b2&@KzQzS=AJt=_xXg>8FP17@k1f^WA-Aq7C^pZgA?iv` z+x6uYPEa@4L3fp3^L!e-01&CPa=ZEf7^wtNQV6!EybDT8uwHI2?M<2?WpD8!fN>)Z zSS;TOILQuJpoT-?@7AjFD!&;QValsw?l*<=bm+@%ahA-g{GehlOc0b|jZL|CCjMw+Sn& z=CZ}EIseX*>gs8Gg7!$wlJ=PZb$PleGm(Fz=Uu22iMa(%uHCJ>kU2O%Szs0_`rfEL()!i(t{b11S!mFuxoVi|i zu&y=y5R5B^4!AHxgst>YUs4jMtx=G+Mfe(RHSF9y4X;{0iN`I7laGkFCUR9ISvkrJ z>^$|)NmBXeOU`sTu}*X0d{4djUxa8_K-F|2G_g{IMca@{MS_g-trauszXzg#l@bgr zTi3ePfgwz3pw0$qFbTliv~7#92T}82h_3tIbbxVq*qWt9GTDc0%PLZWI_lBLi}}R& z{k2Et;cAu|gKyv{JYL`~)UV$>ZwmjFr`baK{jaQdmxdBym1J7$W^LAU$0!q>o#_a7 z>eUkMDeoF3ZBzQ&S&}XPYN2SWP2sQe$-JtK5axgp9=GNtqEJatHY4&ICiDYc52Kt|2AflLqv2Nk>}C(<$#q=sXBG)u>V30y;$RwD@l?dKO z){|jF9#o_$Dl&p_t*t;eR1nF9aFI1Ykq%6>5-6se)wwC^wdk*_3=*Pp7Ea;5czYngBm5K~GL?fT;!0 zIY6Z-_y9O`HDnr03^3J1IRkP__%g6n)OJRx8hnH+%XEkbz)30rJqvzFYF&i90l3O^ zdm5ZT32^4XHMBwnLkl!28F8VBHqO`(&{%-gMx0TigkZE=)1E?F+X(}#ceNz~tf#P} zjA-ke?kW_+E!vFQ8s5L3O_QofZ=bW}VTkVi=&|)LS-0itg9dZVyjZ-LDzEX>{BNn= J$BmI9006Ftf#?7L diff --git a/icons/hisc-action-resetview.svgz b/icons/hisc-action-resetview.svgz deleted file mode 100644 index 2c0808a4d38fe622597471c102bfae5885ec9963..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1270 zcmV0PPyINwz%|ibTsoWKs}mJI=4)p={ZfqhyJ(he^K3=R5q)9X^AP57QFOSuG2} zhX%!#ff!FkR`7gi++2S)Ljy^b@GL0>XG4Pv*X0T zOhW#2&ImcbK1V-qFOY3n)QT*ZkkKE;kug!KiV0aP7I@)cQRn3P2hlp@$LP$217>?b zGZ0{=7S2>=XnUrKE*NKZqC_2|Pno!5=&~$lQZ*t3s@8F1b@Wh)TA{0QmYbIx;YN77 ziZDhF21Rr_E6NPH&hH4BCeVYeBZSbR$kb$LI5z0$YdSTwc*2T&qMpj<1zVhohoNC1 z3)!v*Z?^%YT9%M20eKylViC^^S=^QE1LFyNnRiKgpVwl>vzW65+CL2yiDi|fz);mp zvU<)Md65kbos^XcC{YFPcvCwIJN8PC-^(aw_gwO}>mios;{Fv1~@}r&TEwDN?~DSux5sA})tL4PZku zb)mOfaqE3Yy%jcxwA)R7Bx&V4=UbmQ=UV}mVpgYY3=|A=rgW2SK(pzz9UA!TbNH`s zUkQz(aO1?T>11<)OPuHy#i^K*rdgp0Z=qdSJ$g`#OPv}5y-0RVmJm*#Q7{;h1~pCw z85_&C8}u`^JQxrJ*8ntFQeV_bRxqwwC2;xj{1^SzSjyMn4KEZ_WCq>!Q%CWg-^g_+ zbZAg$bk71}Em(rUhW@cA4OSZVz6J;!z#R&nynFXzAjV_K6!hQjRA|slMG15K z-lzKBb~iwj8i<@69rY7okNVMbY@x01E}QcL8-0sg-VRX`PmAnI6kPp0Fw))gGakww?ph9UPGU>p0nO87CV@k?XHUrJb(LB-u`Y zqtJ;~a64LW9i-3A)#+HrJ$R7LMrWh*(=MBT$RLd(xcA%&`)hh&q`T)`>$Saj2)W%) zen4XT`Q6v@A42Z;lOI;cE_L|wAPtEAmx3K@vrOo}&P?x4E!|zR9+oP}Sz~c%ydO7L zBfb-L#_AUEn`;LUFmZ)iHrs1=0n&UM)apa!B+0}Armzb=3Nh6u!Z2_>-;26v3M-%M zIoNX@hwedO$hSi5`yutZ(4ydA%3SZ5)DE0pyj?aU*X_miy4edXTR=|4BCmB~RXt-{ z(X7ar+!gYqQsOyrmq7oNI+HxtiH2OZi|`)$@D!bhx_I2^anSqpit~BLSwKZ+kSnIQa0O=fRQvd(} diff --git a/keduvocdocument/keduvocarticle.cpp b/keduvocarticle.cpp similarity index 100% rename from keduvocdocument/keduvocarticle.cpp rename to keduvocarticle.cpp diff --git a/keduvocdocument/keduvocarticle.h b/keduvocarticle.h similarity index 100% rename from keduvocdocument/keduvocarticle.h rename to keduvocarticle.h diff --git a/keduvocdocument/keduvoccommon_p.h b/keduvoccommon_p.h similarity index 100% rename from keduvocdocument/keduvoccommon_p.h rename to keduvoccommon_p.h diff --git a/keduvocdocument/keduvocconjugation.cpp b/keduvocconjugation.cpp similarity index 100% rename from keduvocdocument/keduvocconjugation.cpp rename to keduvocconjugation.cpp diff --git a/keduvocdocument/keduvocconjugation.h b/keduvocconjugation.h similarity index 100% rename from keduvocdocument/keduvocconjugation.h rename to keduvocconjugation.h diff --git a/keduvocdocument/keduvoccontainer.cpp b/keduvoccontainer.cpp similarity index 100% rename from keduvocdocument/keduvoccontainer.cpp rename to keduvoccontainer.cpp diff --git a/keduvocdocument/keduvoccontainer.h b/keduvoccontainer.h similarity index 100% rename from keduvocdocument/keduvoccontainer.h rename to keduvoccontainer.h diff --git a/keduvocdocument/keduvoccsvreader.cpp b/keduvoccsvreader.cpp similarity index 100% rename from keduvocdocument/keduvoccsvreader.cpp rename to keduvoccsvreader.cpp diff --git a/keduvocdocument/keduvoccsvreader.h b/keduvoccsvreader.h similarity index 100% rename from keduvocdocument/keduvoccsvreader.h rename to keduvoccsvreader.h diff --git a/keduvocdocument/keduvoccsvwriter.cpp b/keduvoccsvwriter.cpp similarity index 100% rename from keduvocdocument/keduvoccsvwriter.cpp rename to keduvoccsvwriter.cpp diff --git a/keduvocdocument/keduvoccsvwriter.h b/keduvoccsvwriter.h similarity index 100% rename from keduvocdocument/keduvoccsvwriter.h rename to keduvoccsvwriter.h diff --git a/keduvocdocument/keduvocdeclension.cpp b/keduvocdeclension.cpp similarity index 100% rename from keduvocdocument/keduvocdeclension.cpp rename to keduvocdeclension.cpp diff --git a/keduvocdocument/keduvocdeclension.h b/keduvocdeclension.h similarity index 100% rename from keduvocdocument/keduvocdeclension.h rename to keduvocdeclension.h diff --git a/keduvocdocument/keduvocdocument.cpp b/keduvocdocument.cpp similarity index 100% rename from keduvocdocument/keduvocdocument.cpp rename to keduvocdocument.cpp diff --git a/keduvocdocument/keduvocdocument.h b/keduvocdocument.h similarity index 100% rename from keduvocdocument/keduvocdocument.h rename to keduvocdocument.h diff --git a/keduvocdocument/CMakeLists.txt b/keduvocdocument/CMakeLists.txt deleted file mode 100644 index 97ead8c..0000000 --- a/keduvocdocument/CMakeLists.txt +++ /dev/null @@ -1,74 +0,0 @@ -add_subdirectory(tests) - -########### next target ############### - -set(keduvocdocument_LIB_SRCS - keduvocdocument.cpp - keduvocidentifier.cpp - keduvocexpression.cpp - keduvoctranslation.cpp - keduvoccontainer.cpp - keduvoclesson.cpp - keduvocleitnerbox.cpp - keduvoctext.cpp - keduvocarticle.cpp - keduvocconjugation.cpp - keduvocpersonalpronoun.cpp - keduvocdeclension.cpp - keduvocwordtype.cpp - keduvockvtmlcompability.cpp - keduvockvtmlreader.cpp - keduvockvtml2reader.cpp - keduvockvtml2writer.cpp - keduvoccsvreader.cpp - keduvoccsvwriter.cpp - keduvocpaukerreader.cpp - keduvocvokabelnreader.cpp - keduvocwqlreader.cpp - keduvocxdxfreader.cpp - sharedkvtmlfiles.cpp -) - -kde4_add_library(keduvocdocument SHARED ${keduvocdocument_LIB_SRCS}) - -target_link_libraries(keduvocdocument ${KDE4_KIO_LIBS} ${QT_QTXML_LIBRARY}) - -set_target_properties(keduvocdocument - PROPERTIES VERSION ${GENERIC_LIB_VERSION} - SOVERSION ${GENERIC_LIB_SOVERSION} -) - -# if we want to set our own version instead of following kde generic -#set(LIB_KEDUVOCDOCUMENT_VERSION "5.0.0") -#set(LIB_KEDUVOCDOCUMENT_SOVERSION "5") -#set_target_properties(keduvocdocument -# PROPERTIES VERSION ${LIB_KEDUVOCDOCUMENT_VERSION} -# SOVERSION ${LIB_KEDUVOCDOCUMENT_SOVERSION} -#) - -install(TARGETS keduvocdocument EXPORT LibKdeEduTargets ${INSTALL_TARGETS_DEFAULT_ARGS}) - - -########### install files ############### - -install(FILES - libkeduvocdocument_export.h - keduvocdocument.h - keduvocidentifier.h - keduvocexpression.h - keduvoctext.h - keduvocarticle.h - keduvocconjugation.h - keduvoclesson.h - keduvocleitnerbox.h - keduvoccontainer.h - keduvocwordflags.h - keduvocmultiplechoice.h - keduvoctranslation.h - keduvocwordtype.h - keduvocpersonalpronoun.h - sharedkvtmlfiles.h - keduvocdeclension.h - keduvockvtml2writer.h - DESTINATION ${INCLUDE_INSTALL_DIR}/libkdeedu COMPONENT Devel -) diff --git a/keduvocdocument/Mainpage.dox b/keduvocdocument/Mainpage.dox deleted file mode 100644 index 0e29282..0000000 --- a/keduvocdocument/Mainpage.dox +++ /dev/null @@ -1,36 +0,0 @@ -/** @mainpage KEduVocDocument - -KEduVocDocument is a library for reading and writing vocabulary files used by Parley, Kanagram, KHangMan and KWordQuiz. - -At this date no binary compability is guaranteed. Please update this lib when updating the applications mentioned above. - -Important classes are: - - KEduVocExpression to hold an abstract entry. It contains translations in KEduVocTranslation. - - Lessons are organized by KEduVocLesson. - -Grammatical terms are part of KEduVocTranslation and also contained in: - - KEduVocArticle (articles of a language) - - KEduVocConjugation (conjugations and personal pronouns) - - KEduVocWordType (word type management) - -Grammar is accessed by using an instance of KEduVocDocument. - -Grades can be stored using the KEduVocGrade class (part of a KEduVocTranslation). - -KEduVocDocument supports reading and writing of different file formats. KVTML (version 2) is the default. - -Readers: - - KEduVocKvtml2Reader the current default file format since KDE4 - - KEduVocKvtmlReader for compability (pre KDE4) - - KEduVocCsvReader Comma separated values (text files) - - KEduVocPaukerReader Pauker file format - - KEduVocVokabelnReader Vokabeln file format - - KEduVocXdxfReader XDXF file format - -Writers: - - KEduVocKvtml2Writer - - KEduVocKvtmlWriter - - KEduVocCsvWriter - - -*/ diff --git a/keduvocdocument/TODO b/keduvocdocument/TODO deleted file mode 100644 index c369fd4..0000000 --- a/keduvocdocument/TODO +++ /dev/null @@ -1,10 +0,0 @@ -Things to improve in KEduVocDocument ------------------------------------- - - * Check if all copy constructors are ok or disable copies - -Binary incompatible: - * Tenses should be per language as different languages have a different set of tenses - - - diff --git a/keduvocdocument/docs/basic_vocabulary_en2de.kvtml b/keduvocdocument/docs/basic_vocabulary_en2de.kvtml deleted file mode 100644 index 9567876..0000000 --- a/keduvocdocument/docs/basic_vocabulary_en2de.kvtml +++ /dev/null @@ -1,1352 +0,0 @@ - - - - - - Parley - basic vocabulary German-English - Markus Büchele, Norbert Behrendt - GPL - - - - English - en - - - - - - German - de - - - - - - - - Noun - noun - - Male - male - - - Female - female - - - Neutral - neutral - - - - Verb - verb - - Regular - - - Irregular - - - - Adjective - adjective - - - Adverb - adverb - - - Question - - - Name - - - Article - - Definite - - - Indefinite - - - - Pronoun - - Possessive - - - Personal - - - - Phrase - - - Numeral - - Ordinal - - - Cardinal - - - - Conjunction - - - Preposition - - - - - Past Progressive - Simple Past - will future - going to future - Present Perfect - Present Progressive - Plusquamperfekt - Simple Present - - - - false - - also - - - auch, außerdem - - - - false - - although - - - obwohl - - - - false - - and - - - und - - - - false - - because - - - weil - - - - false - - besides - - - außerdem - - - - false - - but - - - aber, sondern - - - - false - - despite - - - trotz - - - - false - - either ... or - - - entweder ... oder - - - - false - - however - - - jedoch, aber - - - - false - - if - - - wenn, ob - - - - false - - instead of - - - anstatt - - - - false - - like - - - wie - - - - false - - neither ... nor - - - weder ... noch - - - - false - - not yet - - - noch nicht - - - - false - - or - - - oder - - - - false - - such as - - - wie zum Beispiel - - - - false - - than - - - als - - - - false - - therefore - - - deshalb, daher - - - - false - - though - - - obwohl, trotzdem - - - - false - - unless - - - wenn nicht, es sei denn - - - - false - - until - - - bis - - - - false - - when - - - wann, als - - - - false - - whether - - - ob - - - - false - - black - - Adjective - - - black - blacker - the blackest - - - - schwarz - - Adjective - - - - - false - - blue - - Adjective - - - blue - bluer - the bluest - - - - blau - - Adjective - - - - - false - - brown - - Adjective - - - brown - browner - the brownest - - - - braun - - Adjective - - - - - false - - eight - - - acht - - - - false - - five - - - fünf - - - - false - - four - - - vier - - - - false - - green - - - grün - - - - false - - grey - - - grau - - - - false - - hundred - - - hundert - - - - false - - million - - - die Million - - - - false - - nine - - - neun - - - - false - - one - - - eins - - - - false - - red - - Adjective - - - red - redder - the reddest - - - - rot - - Adjective - - - - - false - - seven - - - sieben - - - - false - - six - - - sechs - - - - false - - ten - - - zehn - - - - false - - thousand - - - tausend - - - - false - - three - - - drei - - - - false - - two - - - zwei - - - - false - - white - - Adjective - - - white - whiter - the whitest - - - - weiß - - Adjective - - - - - false - - yellow - - Adjective - - - yellow - yellower - the yellowest - - - - gelb - - Adjective - - - - - false - - about - - - über, etwa - - - - false - - above - - - über, oben - - - - false - - according to - - - laut, nach - - - - false - - across - - - über, hinüber, durch - - - - false - - after - - - nach, nachdem - - - - false - - against - - - gegen - - - - false - - ago - - - vor - - - - false - - among - - - unter - - - - false - - at - - - an, bei - - - - false - - because of - - - wegen - - - - false - - behind - - - hinter, hinten - - - - false - - between - - - zwischen - - - - false - - by - - - bei, von, durch - - - - false - - close to - - - in der Nähe, nahe - - - - false - - due to - - - wegen - - - - false - - during - - - während - - - - false - - except - - - außer - - - - false - - for - - - für, seit - - - - false - - from - - - von - - - - false - - in - - - in - - - - false - - in front of - - - vor - - - - false - - into - - - in ... hinein - - - - false - - near - - - nahe - - - - false - - next to - - - neben - - - - false - - of - - - von - - - - false - - on - - - an, auf - - - - false - - on top of - - - oben auf - - - - false - - since - - - seit - - - - false - - through - - - durch - - - - false - - to - - - zu, nach - - - - false - - toward - - - auf ... zu - - - - false - - under - - - unter - - - - false - - up - - - oben, hinauf - - - - false - - up to - - - bis - - - - false - - with - - - mit - - - - false - - without - - - ohne - - - - false - - bed - - - das Bett - - - - false - - bread - - - das Brot - - - - false - - no - - - nein - - - - false - - please - - - bitte - - - - false - - sorry - - - Entschuldigung - - - - false - - thank you - - - danke - - - - false - - to be - - - sein - - - - false - - to do - - - tun, machen - - - - false - - to have - - - haben - - - - false - - water - - - das Wasser - - - - false - - yes - - - ja - - - - false - - autumn - - - der Herbst - - - - false - - century - - - das Jahrhundert - - - - false - - day - - - der Tag - - - - false - - east - - - der Osten, östlich - - - - false - - hour - - - die Stunde - - - - false - - inch - - - der Zoll (Längenmaß) - - - - false - - kilometre - - - der Kilometer - - - - false - - left - - - links - - - - false - - metre - - - der Meter - - - - false - - mile - - - die Meile - - - - false - - minute - - - die Minute - - - - false - - month - - - der Monat - - - - false - - north - - - der Norden, nördlich - - - - false - - right - - - das Recht, rechts, richtig - - - - false - - season - - - die Jahreszeit, die Saison - - - - false - - south - - - der Süden, südlich - - - - false - - spring - - - der Frühling - - - - false - - square - - - das Quadrat, der Platz - - - - false - - summer - - - der Sommer - - - - false - - triangle - - - das Dreieck - - - - false - - week - - - die Woche - - - - false - - west - - - der Westen, westlich - - - - false - - winter - - - der Winter - - - - false - - year - - - das Jahr - - - - - - time and space - 91 - 92 - 93 - 94 - 95 - 96 - 97 - 98 - 99 - 100 - 101 - 102 - 103 - 104 - 105 - 106 - 107 - 108 - 109 - 110 - 111 - 112 - 113 - 114 - - - survival training - 80 - 81 - 82 - 83 - 84 - 85 - 86 - 87 - 88 - 89 - 90 - - - numbers and colours - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 30 - 31 - 32 - 33 - 34 - 35 - 36 - 37 - 38 - 39 - 40 - 41 - 42 - 43 - - - conjunctions - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - - - prepositions - true - 44 - 45 - 46 - 47 - 48 - 49 - 50 - 51 - 52 - 53 - 54 - 55 - 56 - 57 - 58 - 59 - 60 - 61 - 62 - 63 - 64 - 65 - 66 - 67 - 68 - 69 - 70 - 71 - 72 - 73 - 74 - 75 - 76 - 77 - 78 - 79 - - - diff --git a/keduvocdocument/docs/elek.lex b/keduvocdocument/docs/elek.lex deleted file mode 100644 index 46b23aa..0000000 --- a/keduvocdocument/docs/elek.lex +++ /dev/null @@ -1,191 +0,0 @@ -Vocabulary Trainer V5.0 -LEX|Deutsch|Englisch| 259 260 1 1 1 0 0 268 0 1 1 1 1 145 6 23 1999 255 1 1 653 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 1 1 0 0 | --11 700 -System -Energie- und Automatisierungstechnik. V. Manuela Lutz. Danke. -1 1 der die das|he she it| -1 1 eine einer eines einen einem|has have had is be| -1 1 er sie es|his him her its| -1 1 wir ihr euch|in to into on at too| -1 1 in an auf bei|the a an| -1 1 zu um zur zum|out by with of off| -1 1 ist sind seid|something someone some| -1 1 dies dieser dieses|under below| -1 1 || -1 1 || -der die das ein eine einer eines einen einem|the a an| -| -| -| -| -| -| -| -| -| -| -| -| -| -| -| -| -| -| -| -| -Sachgebiete| -| -| -| -| -| -| -| -| -32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 -1 0 255 255 255 255 255 255 0 0 1 Abbildung||||mapping|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Abblendkappe||||anti-dazzle device|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Abdeckblech||||cover sheet|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Abfallstoffe|products|||waste|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Abfalltechnik||||waste engineering|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Abfangblech||||locating plate|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Abfrageprotokoll||||inquiry log|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Abgabeleistung||||power output|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Abgang||||outgoing circuit|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Abgangsbaugruppe||||outgoing unit|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Abgas||||exhaust gas|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Abgasdruck||||exhaust gas pressure|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Abgasemission||||exhaust gas emission|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Abgasgegendruck||||exhaust gas back pressure|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Abgaskatalysator||||exhaust gas catalytic converter|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Abgaskomponenten||||exhaust gas components|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Abgasmeßgerät||||exhaust gas measuring equipment|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Abgasrückführung||||exhaust gas recycling|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 abgedeckter Druckknopf||||covered pushbutton|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 abgedichtete Kunststoffleuchte||||sealed plastic luminaire|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 abgehende Leitung||||outgoing feeder|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 abgeschirmte Drucktaste||||shrouded pushbutton|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 abgesichert||||fused|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 abgetastet||||sampled|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 abgeteilt||||segregated|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Abgleich||||adjustment|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 abisolieren||||to strip|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 abklemmen||||disconnect|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Ablauf||||sequence|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Ablaufplan||||flow diagram|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Ableiter||||surge arrester|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Ableitung||||terminal lead|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Ablenkung||||deflection|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Abluft||||exhaust air|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Abschaltautomatic bei Spannungsabfall||||automatic loss-of-voltage tripping equipment|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Abschirmung||||screening|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Absolutwert||||absolute value|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Abstand||||distance|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Abstraktionsebene||||level of abstraction|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Abteilung||||department|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Abwasseraufbereitung||||effluent treatment|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Abwasserbehandlung||||waste water treatment|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Abwassertechnik||||sewage technology|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Abweichung||||deviation|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 abzählbar||||countable|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Achse||||axis|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 adaptiver||||adaptive|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Aggregate||||aggregates|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Aktoren|Aktuatoren|||actuators|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Akustik||||acoustics|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Alterungsbeständig||||durability|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Altlasten||||polluted areas|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Analogeingabe||||analog input|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Arbeitswissenschaften||||ergonomics|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Aufbau- und Verbindungstechnik||||packaging of integrated circuits|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Aufbereitung||||preparation|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Auflösung||||resolution|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Aufspannplatte||||mounting plate|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Auftragsabwicklung||||order transaction|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Auftragsbearbeitung||||order processing|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Ausführung||||conducting|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Beleuchtungstechnik||||illumination engineering|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Bildcodierung||||image coding|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Bilderkennungssystem||||image recognition system|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Bildkommunikation||||image communication|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Bildmenge||||image set|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Bildschirmanzeige||||screen diplay|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Bildverarbeitung||||image processing|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Borhmaschine||||drilling machine|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -0 47 255 255 255 255 255 255 0 0 1 Datenübertragung||||data transmission|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Druckluft||||compressed air|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Druckluftanlage||||compressed-air system|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Drucktaster||||pushbutton|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Einbautechnik|Einbausystem|||packaging system|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Einheit||||unit|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 elektrisch||||electrical|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Elektrizitätszähler||||electricity meter|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 elektromechanische Bauelemente||||electromechanical components|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Elektromotor||||electric motor|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 elektronische Steuerung||||electronic control|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Endschalter||||limit switch|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Fernwirktechnik||||telecontrol|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Freiluftanlage||||outdoor installation|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Gebäudeinstallation||||wiring practice|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 gedruckte Schaltung||||printed circuit|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Gleichrichter||||rectifier|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Grenzwert||||limiting value|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Halbleiter||||semiconductor|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Halbleiterbauelement||||semiconductor component|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Hebezeug||||hoisting gear|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Hilfsstromschalter||||control switch|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Innenraumanlage||||indoor installation|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Installationskanal||||trunking and duct system|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Installationsmaterial||||wiring accessoires|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Installationstechnik||||electrical installation|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Isolation|Isolierung|||insulation|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Klimatechnik||||air conditioning|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Kommutator||||commutator|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Kraftwerk||||power station|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Kupplung||||coupling|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Lager||||bearing|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Leistungselektronik||||power electronic|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Leistungsschalter|Leistungsschutzschalter|||circuit-breaker|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Leittechnik||||control engineering|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Lichttechnik||||lightning engineering|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Linearmotor||||linear motor|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 magnetisch||||magnetic|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Magnetschwebebahn||||magnetic levitation system|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Maschine||||machine|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 mechanisch||||mechanical|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Meßgerät||||measuring instrument|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Näherungsschalter||||proximity switch|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Oszilloskop||||oscilloscope|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Positionsschalter||||position switch|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 programmierbares Meßgerät||||programmable measuring apparatus|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 programmierbares Steuergerät||||programmable controller|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Prozeßleittechnik||||process control technology|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Prüfung||||testing|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Regelung||||automatic control|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Relais||||relay|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 rotierende Maschine||||rotating machine|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Rundsteueranlage||||ripple control system|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Röntgenanalyse||||x-ray analysis|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Rückkopplung||||feedback|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Sammelschiene||||busbar|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Schallmessung||||sound measurement|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Schaltanlage|Schaltgerät|||switchgear|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Schaltschrank||||switchgear|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Schalttafel||||switchboard|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Schieneninstallationsrohr||||buselectric wiring conduit|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Sicherung|Schmelzsicherung|||fuse|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Steckvorrichtung||||plug-and-socket device|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Steuergerät||||controller|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Stromrichter||||static converter|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Supraleiter||||superconductor|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Supraleitung||||superconductivity|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Thyristor||||thyristor|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Vakuumschalter|circuit-breaker|||vacuum swith|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Wasserkraftgenerator||||water-wheel generator|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Wasserkraftwerk||||hydroelectric power station|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Werkzeug||||tool|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Werkzeugmaschine||||machine tool|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 0 255 255 255 255 255 255 0 0 1 Wert||||value|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Wicklung||||winding|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -1 47 255 255 255 255 255 255 0 0 1 Zugangskontrollsystem||||access control system|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| diff --git a/keduvocdocument/docs/kvtml-structure.txt b/keduvocdocument/docs/kvtml-structure.txt deleted file mode 100644 index 3a28920..0000000 --- a/keduvocdocument/docs/kvtml-structure.txt +++ /dev/null @@ -1,258 +0,0 @@ - - - - - generator="kvoctrain v0.7.0pre3" - cols="3" - lines="3" - title="Beispieldatei: Deutsch - Englisch/Französisch" - author="Ewald Arnold" - license="OpenContent" - remark="Beispieldatei mit allen Eigenschaften"> - - - Lektion eins - Lektion zwei - Lektion drei - Lektion vier - - -
- - die - eine - der - einer - das - ein - - - fd en - fi en - md en - mi en - nd en - ni en - - - la - une - le - un - -
- - - - ich - du - sie - er - es - wir - ihr - sie - sie - sie - - - I - you - he - she - it - we - you - they - - - je - tu - elle - il - nous - vous - elles - ils - - - - - - - - - Mein Typ 1 - Mein Typ 2 - Mein Typ 3 - - - - Benutzer-Konjugation 1 - - - - Benutzersprachebene 1 - - - - s="1" - t="v"> - - - l="de" - charset="ISO 8859-1" - y="laufen"> - - - - > - - gehe - gehst - geht - gehen - gehen - gehen - schwammschwammst - - gehen - - - - - width="208" - l="en" - g="1;2" - c="2;0" - b="1;0" - d="12312;123123" - ff="falscher Freund" - tf="Freund falscher"> - - - went - have gone - - go - - - l="fr" - charset="Unicode" - >aller - - - s="1" - t="aj"> - - - a="schlecht"> - - - gut - besser - am besten - - gut - - goodbetterbest - - good - - bonmeilleurle meilleur - - bon - - - u="anat" - >Knöchel - - - knucklescheville - - - - - \ No newline at end of file diff --git a/keduvocdocument/docs/kvtml-version1.dtd b/keduvocdocument/docs/kvtml-version1.dtd deleted file mode 100644 index 9a23f34..0000000 --- a/keduvocdocument/docs/kvtml-version1.dtd +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/keduvocdocument/docs/kvtml_html_stylesheet.xsl b/keduvocdocument/docs/kvtml_html_stylesheet.xsl deleted file mode 100644 index 8cd2037..0000000 --- a/keduvocdocument/docs/kvtml_html_stylesheet.xsl +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - - - - <xsl:value-of select="kvtml/information/title"/> - - - - - - - -

- -
- - - - - -
-
- - -
- - -

Lesson:

- - - - - - - - - - -
-
- - - - - - - - - - - - - - - - - -
-
-
-
- - - - - - diff --git a/keduvocdocument/docs/lex-aufbau1.txt b/keduvocdocument/docs/lex-aufbau1.txt deleted file mode 100644 index cbdcf36..0000000 --- a/keduvocdocument/docs/lex-aufbau1.txt +++ /dev/null @@ -1,58 +0,0 @@ -From: Michael Werner - -Hallo Ewald, - -es freut mich, daß Dir mein VT zusagt. Wobei ich mir nicht ganz im Klaren -bin, ob es eher mein Programm oder die beigefügten Lexika sind. ;-) - -Du hast völlig Recht, daß ich der Opensource-Bewegung positiv gegenüber -stehe. - -Viele Grüße -Michael - - -----------kleine Format-Beschreibung (bitte mit Font Courier -"nichtproportional" ansehen)---------- - -Lexikon-Format-Beschreibung: - -Format eines minimalen Eintrags (mit zwei Dummy-Einträgen x und y) - 0 255 255 255 255 255 255 0 0 1 -x||||y|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| - | | | | | | - | |___________________| | | Lektionszugehörigkeit (1-9) - | | | | - | | beide Sprachseiten sind ungelernt - | | - | diese Nummern bitte unverändert übernehmen - | -Attribut: 0 für --NONE-- - -Format eines maximalen Eintrags - 0 255 255 255 255 255 255 0 0 1 -MAIN#0|SYNONYM#1|SYNONYM#2|SYNONYM#3|MAIN#1|SYNONYM#1|SYNONYM#2|SYNONYM#3|| -||||||||||||||||||||||||||||||||||||||||||||||||||||||| - - -Eine Konvertierung (zur Erstellung einer LEX-Datei) könnte nun -folgendermaßen aussehen: - -erster Schritt: -Formatkopf einer bestehenden Lexikon-Datei nehmen und vor die erste -Vokabelzeile kopieren. - - -zweiter Schritt: -0 255 255 255 255 255 255 0 0 1 an den Anfang jeder Vokabelzeile -(entspricht einem Vokabeleintrag) schreiben. Wortbestandteile durch | -trennen. Minimal muß ein MAIN#0 und ein MAIN#1 existieren und mindestens 1 -Vokabelzeile. - - -dritter Schritt: -neues Lexikon laden. Dadurch werden beim nächsten Abspeichern die Anzahl -der Vokabeleinträge und das Datum korrekt gesetzt. Die Vokabelliste wird -hierbei auch sortiert. - - diff --git a/keduvocdocument/docs/lex-aufbau2.txt b/keduvocdocument/docs/lex-aufbau2.txt deleted file mode 100644 index ea7f358..0000000 --- a/keduvocdocument/docs/lex-aufbau2.txt +++ /dev/null @@ -1,127 +0,0 @@ -# Format eines minimalen Eintrags (mit zwei Dummy-Einträgen x und y) -# 0 255 255 255 255 255 255 0 0 1 x||||y|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -# | | | | | | -# | |___________________| | | Lektionszugehörigkeit (1-9) - -? maximal 9 Lektionen? "Namen" der -Lektionen? -Das Lektionenmaximum ist auf 9 festgelegt. Die Lektionsbezeichnungen werden -weiter oben abgespeichert! Ausprobieren, dann siehst Du wo. - -# | | | | -# | | beide Sprachseiten sind ungelernt - -? 1..x = Note? -0..2 (0=ungelernt, 1=unsicher, 2=gelernt) - -# | | -# | diese Nummern bitte unverändert übernehmen - -? was bedeuten sie? - -# | -# Attribut: 0 für --NONE-- - -? weitere Attribute? -Alle aus der Eingabemaske "Edit Entry" ersichtlichen + 20 extra zu -definierenden Attributen - -# Format eines maximalen Eintrags -# 0 255 255 255 255 255 255 0 0 1 -MAIN#0|SYNONYM#1|SYNONYM#2|SYNONYM#3|MAIN#1|SYNONYM#1|SYNONYM#2|SYNONYM#3||||||||||||||||||||||||||||||||||||||||||||||||||||||||| - -? Das Lexikon beinhaltet immer 2 Sprachen, MAIN ist der "normale" Ausdruck -und -? es folgen bis zu 3 Synonyme jeweils für beide Sprachen. Was folgt -hierauf? -Alle Konjugationsformen die evtl. für das Konjugationstraining eingegeben -wurden. (siehe ITALIAN.LEX) -? Ich speichere jeweils das letzte Abfragedatum, die Anzahl der Abfragen -? und Fehler sowie eine Art Note. Gibt es dies bei dir ebenfalls? -Nein, wozu? Meiner Meinung nach, ist der Anwender am Lernen interessiert -und nicht an einer Statistikreiterei. - -? Hier der Anfang von elek.lex mit meinen Vermutungen: - -# Vocabulary Trainer V5.0 - -? 1. Zeile: Version - -# LEX|Deutsch|Englisch| 259 260 1 1 1 0 0 268 0 1 1 1 1 145 6 23 1999 255 1 1 653 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 1 1 0 0 | - -? 2. Zeile: Kennung, Sprachen 1+2 und viele Daten (aber welche ? ;-) -Programminterne: Abspeicherung der Trainingsoptionen und viele andere Infos -die meiner Meinung nach Lexikaspezifisch abgespeichert werden sollen. - -# -11 700 -verwendeter Zeichensatz -? 3. Zeile: nochmal 2 Daten -# System -? 4. Zeile: Beschreibung ? -Nein! Nochmals verwendeter Zeichensatz - -# Energie- und Automatisierungstechnik. V. Manuela Lutz. Danke. - -? 5. Zeile: nochmal Beschreibung/Herkunft ? -Eigentliche Lexikonbeschreibung - -? danach ein Stück Wörterbuch, allerdings ein anderer Aufbau als oben --> siehe Trainingsoptionen -# 1 1 der die das|he she it| -# 1 1 eine einer eines einen einem|has have had is be| -# 1 1 er sie es|his him her its| -# 1 1 wir ihr euch|in to into on at too| -# 1 1 in an auf bei|the a an| -# 1 1 zu um zur zum|out by with of off| -# 1 1 ist sind seid|something someone some| -# 1 1 dies dieser dieses|under below| -# 1 1 || -# 1 1 || - -? Zeile ohne Zahlen? --> siehe ebenfalls Trainingsoptionen -# der die das ein eine einer eines einen einem|the a an| - -? viele Leerzeilen ? --> eigene selbst zu definierende Attribute -# | -# | -# | -# | -# | -# | -# | -# | -# | -# | -# | -# | -# | -# | -# | -# | -# | -# | -# | -# | -# Sachgebiete| -# | -# | -# | -# | -# | -# | -# | -# | - -# 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 -? ab hier scheint das Lexikon zu starten, aber was bedeuten die 32 32 ... -Funktionstastenbelegungen - -# 1 0 255 255 255 255 255 255 0 0 1 Abbildung||||mapping||||||||||||||||||||||||||||||||||||||||||||||||||||||| -||||| -# 1 0 255 255 255 255 255 255 0 0 1 Abblendkappe||||anti-dazzle device|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| - -Mein Tip für Dich: Verwende das Lexikon ITALIAN.LEX von mir. Dort findest -Du die meisten Funktionen verwendet und vielleicht wird für Dich vieles -klarer, wenn Du Dich mehr mit der VT-Funktionalität auseinandersetzt. diff --git a/keduvocdocument/kvtml_empty_sample.kvtml b/keduvocdocument/kvtml_empty_sample.kvtml deleted file mode 100644 index 2267d7c..0000000 --- a/keduvocdocument/kvtml_empty_sample.kvtml +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - - - - - - - language - en - - - 250 - -
- - der - die - das - - - ein - eine - ein - -
- - - ich - du - - er - sie - es - - - - wir - ihr - - sie - - - -
-
- - - - grammar type a - grammer type b - - - Special tense - - - - slang usage - professional usage - - - - - true to deactivate an entry (won't be queried) - true - 25 - - Kniebeugen - - - - - - - - - - - 1 - regular - - ich - du - - er - sie - es - - - - wir - ihr - - sie - - - - - gut - besser - am besten - - - - - - - - - - 1 - 1 - 1 - 949757271 - - - - genuflect - - 0.8 - 6 - 1 - 949757271 - - - - - - - Lesson with grades example - true - true - 0 - - -
- diff --git a/keduvocdocument/tests/CMakeLists.txt b/keduvocdocument/tests/CMakeLists.txt deleted file mode 100644 index f05b787..0000000 --- a/keduvocdocument/tests/CMakeLists.txt +++ /dev/null @@ -1,28 +0,0 @@ -set( EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR} ) - - -kde4_add_unit_test(keduvocdocumentvalidatortest keduvocdocumentvalidatortest.cpp) -target_link_libraries(keduvocdocumentvalidatortest keduvocdocument - ${KDE4_KDECORE_LIBS} ${QT_QTGUI_LIBRARY} ${QT_QTTEST_LIBRARY} ${QT_QTXML_LIBRARY}) - - -# CONVERTER: - - -include_directories( .. ) - - -########### next target ############### - -set(converter_SRCS - converter.cpp ) - - -kde4_add_executable(converter ${converter_SRCS}) - -target_link_libraries(converter keduvocdocument ${KDE4_KDECORE_LIBS}) - - - - - diff --git a/keduvocdocument/tests/converter.cpp b/keduvocdocument/tests/converter.cpp deleted file mode 100644 index d7730fd..0000000 --- a/keduvocdocument/tests/converter.cpp +++ /dev/null @@ -1,81 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2007 by Jeremy Whiting * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - ***************************************************************************/ - -/** @file - * \brief kvtml document reader/writer - * partly to test the document class, partly to convert - * old kvtml files to the new format - * @author Jeremy Whiting - */ - -#include "keduvocdocument.h" - -#include - -#include -#include -#include -#include -#include - -int main( int argc, char ** argv ) -{ - KAboutData about( "kvtml-converter", 0, ki18n( "Kvtml-Converter" ), "0.1", ki18n( "kvtml file converter" ), KAboutData::License_GPL, ki18n( "© 2007 Jeremy Whiting" ) ); - KCmdLineOptions options; - options.add( "f ", ki18n("file format to write out (kvtml1, kvtml2, or csv)")); - options.add( "+infile", ki18n( "file to read in" ) ); - options.add( "+outfile", ki18n( "file to write to" ) ); - - KCmdLineArgs::init( argc, argv, &about ); - KCmdLineArgs::addCmdLineOptions( options ); - QCoreApplication app( KCmdLineArgs::qtArgc(), KCmdLineArgs::qtArgv() ); - - KCmdLineArgs * arguments = KCmdLineArgs::parsedArgs(); - if ( arguments != NULL && arguments->count() > 0 ) { - KUrl infile( arguments->url( 0 ) ); - if ( arguments->count() > 1 ) { - KUrl outfile( arguments->url( 1 ) ); - - KEduVocDocument document; - kDebug() << "Reading " << infile; - document.open( infile ); - kDebug() << "Writing to " << outfile; - if (arguments->getOption("f") == "kvtml1") - { - document.saveAs( outfile, KEduVocDocument::Kvtml1, "converter" ); - } - else if (arguments->getOption("f") == "csv") - { - document.saveAs( outfile, KEduVocDocument::Csv, "converter" ); - } - else - { - document.saveAs( outfile, KEduVocDocument::Kvtml, "converter" ); - } - } - } - else - { - arguments->usage(); - } - - arguments->clear(); - - return 0; -} diff --git a/keduvocdocument/tests/keduvocdocumentvalidatortest.cpp b/keduvocdocument/tests/keduvocdocumentvalidatortest.cpp deleted file mode 100644 index 834564c..0000000 --- a/keduvocdocument/tests/keduvocdocumentvalidatortest.cpp +++ /dev/null @@ -1,253 +0,0 @@ -/* - Copyright 2007-2008 Frederik Gladhorn - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - USA -*/ - -#include "keduvocdocument.h" -#include "keduvoclesson.h" -#include "keduvocexpression.h" -#include "keduvoctranslation.h" -#include "keduvocconjugation.h" -#include "keduvocdeclension.h" -#include "keduvocwordtype.h" - - -#include - -#include - -#include -#include -#include - -class KEduVocDocumentValidatorTest - : public QObject -{ - Q_OBJECT - -private slots: - void testDocumentAboutInfo(); - void testLessons(); - void testWordTypes(); - void testTranslations(); - void testConjugations(); - void testDeclensions(); - void testAddRemoveLanguage(); - -}; - -void KEduVocDocumentValidatorTest::testDocumentAboutInfo() -{ - KTemporaryFile temp; - temp.setSuffix(".kvtml"); - temp.open(); - KUrl fileName = KUrl(temp.fileName()); - temp.close(); - - const QString generator = QString::fromLatin1( "Validator Unit Tests" ); - const QString author = QString::fromLatin1( "Validator Test" ); - const QString license = QString::fromLatin1( "test license" ); - const QString comment = QString::fromLatin1( "comment" ); - const QString category = QString::fromLatin1( "test document" ); - const QString title = QString::fromLatin1( "Validator Test Title" ); - - KEduVocDocument doc; - doc.setAuthor( author ); - doc.setLicense( license ); - doc.setDocumentComment( comment ); - doc.setCategory( category ); - doc.setTitle( title ); - - doc.saveAs(fileName, KEduVocDocument::Kvtml, generator); - - KEduVocDocument docRead; - docRead.open(fileName); - - QCOMPARE( docRead.generator(), generator ); - QCOMPARE( docRead.author(), author ); - QCOMPARE( docRead.license(), license ); - QCOMPARE( docRead.documentComment(), comment ); - QCOMPARE( docRead.category(), category ); - QCOMPARE( docRead.title(), title ); -} - -void KEduVocDocumentValidatorTest::testLessons() -{ - QString lesson1 = QString::fromLatin1( "Lesson 1" ); - QString lesson1child1 = QString::fromLatin1( "Lesson 1.1" ); - QString lesson1child2 = QString::fromLatin1( "Lesson 1.2" ); - QString lesson2 = QString::fromLatin1( "Lesson 2" ); - QString lesson3 = QString::fromLatin1( "Lesson 3" ); - - KEduVocDocument doc; - doc.lesson()->appendChildContainer(new KEduVocLesson(lesson1, doc.lesson())); - QCOMPARE(doc.lesson()->childContainerCount(), 1); - QCOMPARE(doc.lesson()->childContainer(0)->containerType(), KEduVocContainer::Lesson); - QCOMPARE(doc.lesson()->childContainer(0)->parent(), doc.lesson()); - QCOMPARE(doc.lesson()->childContainer(0)->name(), lesson1); - - doc.lesson()->appendChildContainer(new KEduVocLesson(lesson2, doc.lesson())); - doc.lesson()->appendChildContainer(new KEduVocLesson(lesson3, doc.lesson())); - QCOMPARE(doc.lesson()->childContainerCount(), 3); - - doc.lesson()->childContainer(0)->appendChildContainer(new KEduVocLesson(lesson1child1, doc.lesson()->childContainer(0))); - doc.lesson()->childContainer(0)->appendChildContainer(new KEduVocLesson(lesson1child2, doc.lesson()->childContainer(0))); - QCOMPARE(doc.lesson()->childContainer(0)->childContainerCount(), 2); - - -} - - -void KEduVocDocumentValidatorTest::testWordTypes() -{ - KEduVocDocument doc; - // create doc - has no word types yet - QCOMPARE(doc.wordTypeContainer()->childContainerCount(), 0); - - KEduVocWordType *noun; - KEduVocWordType *nounMale; - KEduVocWordType *nounFemale; - KEduVocWordType *verb; - - noun = new KEduVocWordType("Noun", doc.wordTypeContainer()); - doc.wordTypeContainer()->appendChildContainer(noun); - QCOMPARE(doc.wordTypeContainer()->childContainerCount(), 1); - nounMale = new KEduVocWordType("Male", noun); - noun->appendChildContainer(nounMale); - nounFemale = new KEduVocWordType("Female", noun); - noun->appendChildContainer(nounFemale); - verb = new KEduVocWordType("Verb", doc.wordTypeContainer()); - doc.wordTypeContainer()->appendChildContainer(verb); - QCOMPARE(doc.wordTypeContainer()->childContainerCount(), 2); - QCOMPARE(doc.wordTypeContainer()->childContainer(0)->childContainerCount(), 2); - - // create some entries - for(int i = 0; i < 20; i++) { - KEduVocExpression *e = - new KEduVocExpression(QStringList() << QString("lang1 %1").arg(i) << QString("lang2 %1").arg(i)); - doc.lesson()->appendEntry(e); - e->translation(0)->setWordType(noun); - e->translation(1)->setWordType(noun); - } - QCOMPARE(doc.lesson()->entryCount(), 20); - QCOMPARE(noun->entryCount(), 20); - QCOMPARE(verb->entryCount(), 0); - doc.lesson()->entry(0)->translation(0)->setWordType(verb); - // translation 1 is still noun, so it needs to be in both now - QCOMPARE(noun->entryCount(), 20); - QCOMPARE(verb->entryCount(), 1); - doc.lesson()->entry(0)->translation(1)->setWordType(verb); - QCOMPARE(noun->entryCount(), 19); - QCOMPARE(verb->entryCount(), 1); - - // delete word type - doc.wordTypeContainer()->deleteChildContainer(1); - // the word type is set to 0 when removed - QVERIFY(doc.lesson()->entry(0)->translation(0)->wordType() == 0); - QVERIFY(doc.lesson()->entry(0)->translation(1)->wordType() == 0); - QCOMPARE(doc.wordTypeContainer()->childContainerCount(), 1); -} - -void KEduVocDocumentValidatorTest::testTranslations() -{ - KEduVocTranslation *trans1 = new KEduVocTranslation(0, QString("My word")); - QCOMPARE(trans1->text(), QString("My word")); - - // copy ctor - KEduVocTranslation *trans2 = new KEduVocTranslation(*trans1); - QCOMPARE(trans2->text(), QString("My word")); - - // operator = - KEduVocTranslation *trans3 = new KEduVocTranslation(0); - trans3 = new KEduVocTranslation(*trans1); - QCOMPARE(trans3->text(), QString("My word")); - - QCOMPARE((int)trans1->grade(), 0); - trans1->incGrade(); - QCOMPARE((int)trans1->grade(), 1); - QCOMPARE((int)trans3->grade(), 0); -} - -void KEduVocDocumentValidatorTest::testDeclensions() -{ - KEduVocTranslation translation(0); - QVERIFY(translation.declension() == 0); - KEduVocDeclension* declension = new KEduVocDeclension; - translation.setDeclension(declension); - QCOMPARE(translation.declension(), declension); -} - -void KEduVocDocumentValidatorTest::testConjugations() -{ - KEduVocConjugation conjugation; - conjugation.setConjugation(KEduVocText("first-singular"), KEduVocWordFlag::First | KEduVocWordFlag::Singular); - QCOMPARE(conjugation.conjugation(KEduVocWordFlag::First | KEduVocWordFlag::Singular).text(), QString("first-singular")); - - QDomDocument doc = QDomDocument("test doc"); - QDomElement root = doc.createElement( "kvtml" ); - doc.appendChild(root); - conjugation.toKVTML2(root, "tense"); - - qDebug() << root.text(); - - KEduVocConjugation *con2 = KEduVocConjugation::fromKVTML2(root); - - QCOMPARE(conjugation.conjugation(KEduVocWordFlag::First | KEduVocWordFlag::Singular).text(), con2->conjugation(KEduVocWordFlag::First | KEduVocWordFlag::Singular).text()); - delete con2; -} - -void KEduVocDocumentValidatorTest::testAddRemoveLanguage() -{ - KEduVocDocument doc; - // create some initial languages - doc.appendIdentifier(); - doc.appendIdentifier(); - doc.appendIdentifier(); - doc.appendIdentifier(); - doc.identifier(0).setName("0"); - doc.identifier(1).setName("1"); - doc.identifier(2).setName("2"); - doc.identifier(3).setName("3"); - - QCOMPARE(doc.identifierCount(), 4); - KEduVocLesson* lesson = new KEduVocLesson("lesson", doc.lesson()); - doc.lesson()->appendChildContainer(lesson); - lesson->appendEntry(new KEduVocExpression); - lesson->entry(0)->setTranslation(0, "0"); - lesson->entry(0)->setTranslation(1, "1"); - lesson->entry(0)->setTranslation(2, "2"); - lesson->entry(0)->setTranslation(3, "3"); - QCOMPARE(lesson->entry(0)->translationIndices().size(), 4); - - // throw away the second language - doc.removeIdentifier(1); - - QCOMPARE(doc.identifierCount(), 3); - QCOMPARE(doc.identifier(0).name(), QString("0")); - QCOMPARE(doc.identifier(1).name(), QString("2")); - QCOMPARE(doc.identifier(2).name(), QString("3")); - - QCOMPARE(lesson->entry(0)->translationIndices().size(), 3); - QCOMPARE(lesson->entry(0)->translation(0)->text(), QString("0")); - QCOMPARE(lesson->entry(0)->translation(1)->text(), QString("2")); - QCOMPARE(lesson->entry(0)->translation(2)->text(), QString("3")); -} - - -QTEST_KDEMAIN_CORE( KEduVocDocumentValidatorTest ) - -#include "keduvocdocumentvalidatortest.moc" diff --git a/keduvocdocument/tests/loader.cpp b/keduvocdocument/tests/loader.cpp deleted file mode 100644 index 4f18664..0000000 --- a/keduvocdocument/tests/loader.cpp +++ /dev/null @@ -1,18 +0,0 @@ -/*************************************************************************** - Copyright 2002 Ewald Arnold - Copyright 2007 Frederik Gladhorn - ***************************************************************************/ - -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - -int main( void ) -{ - return 0; -} diff --git a/keduvocdocument/keduvocexpression.cpp b/keduvocexpression.cpp similarity index 100% rename from keduvocdocument/keduvocexpression.cpp rename to keduvocexpression.cpp diff --git a/keduvocdocument/keduvocexpression.h b/keduvocexpression.h similarity index 100% rename from keduvocdocument/keduvocexpression.h rename to keduvocexpression.h diff --git a/keduvocdocument/keduvocidentifier.cpp b/keduvocidentifier.cpp similarity index 100% rename from keduvocdocument/keduvocidentifier.cpp rename to keduvocidentifier.cpp diff --git a/keduvocdocument/keduvocidentifier.h b/keduvocidentifier.h similarity index 100% rename from keduvocdocument/keduvocidentifier.h rename to keduvocidentifier.h diff --git a/keduvocdocument/keduvockvtml2reader.cpp b/keduvockvtml2reader.cpp similarity index 100% rename from keduvocdocument/keduvockvtml2reader.cpp rename to keduvockvtml2reader.cpp diff --git a/keduvocdocument/keduvockvtml2reader.h b/keduvockvtml2reader.h similarity index 100% rename from keduvocdocument/keduvockvtml2reader.h rename to keduvockvtml2reader.h diff --git a/keduvocdocument/keduvockvtml2writer.cpp b/keduvockvtml2writer.cpp similarity index 100% rename from keduvocdocument/keduvockvtml2writer.cpp rename to keduvockvtml2writer.cpp diff --git a/keduvocdocument/keduvockvtml2writer.h b/keduvockvtml2writer.h similarity index 100% rename from keduvocdocument/keduvockvtml2writer.h rename to keduvockvtml2writer.h diff --git a/keduvocdocument/keduvockvtmlcompability.cpp b/keduvockvtmlcompability.cpp similarity index 100% rename from keduvocdocument/keduvockvtmlcompability.cpp rename to keduvockvtmlcompability.cpp diff --git a/keduvocdocument/keduvockvtmlcompability.h b/keduvockvtmlcompability.h similarity index 100% rename from keduvocdocument/keduvockvtmlcompability.h rename to keduvockvtmlcompability.h diff --git a/keduvocdocument/keduvockvtmlreader.cpp b/keduvockvtmlreader.cpp similarity index 100% rename from keduvocdocument/keduvockvtmlreader.cpp rename to keduvockvtmlreader.cpp diff --git a/keduvocdocument/keduvockvtmlreader.h b/keduvockvtmlreader.h similarity index 100% rename from keduvocdocument/keduvockvtmlreader.h rename to keduvockvtmlreader.h diff --git a/keduvocdocument/keduvockvtmlwriter.cpp b/keduvockvtmlwriter.cpp similarity index 100% rename from keduvocdocument/keduvockvtmlwriter.cpp rename to keduvockvtmlwriter.cpp diff --git a/keduvocdocument/keduvockvtmlwriter.h b/keduvockvtmlwriter.h similarity index 100% rename from keduvocdocument/keduvockvtmlwriter.h rename to keduvockvtmlwriter.h diff --git a/keduvocdocument/keduvocleitnerbox.cpp b/keduvocleitnerbox.cpp similarity index 100% rename from keduvocdocument/keduvocleitnerbox.cpp rename to keduvocleitnerbox.cpp diff --git a/keduvocdocument/keduvocleitnerbox.h b/keduvocleitnerbox.h similarity index 100% rename from keduvocdocument/keduvocleitnerbox.h rename to keduvocleitnerbox.h diff --git a/keduvocdocument/keduvoclesson.cpp b/keduvoclesson.cpp similarity index 100% rename from keduvocdocument/keduvoclesson.cpp rename to keduvoclesson.cpp diff --git a/keduvocdocument/keduvoclesson.h b/keduvoclesson.h similarity index 100% rename from keduvocdocument/keduvoclesson.h rename to keduvoclesson.h diff --git a/keduvocdocument/keduvocmultiplechoice.cpp b/keduvocmultiplechoice.cpp similarity index 100% rename from keduvocdocument/keduvocmultiplechoice.cpp rename to keduvocmultiplechoice.cpp diff --git a/keduvocdocument/keduvocmultiplechoice.h b/keduvocmultiplechoice.h similarity index 100% rename from keduvocdocument/keduvocmultiplechoice.h rename to keduvocmultiplechoice.h diff --git a/keduvocdocument/keduvocpaukerreader.cpp b/keduvocpaukerreader.cpp similarity index 100% rename from keduvocdocument/keduvocpaukerreader.cpp rename to keduvocpaukerreader.cpp diff --git a/keduvocdocument/keduvocpaukerreader.h b/keduvocpaukerreader.h similarity index 100% rename from keduvocdocument/keduvocpaukerreader.h rename to keduvocpaukerreader.h diff --git a/keduvocdocument/keduvocpersonalpronoun.cpp b/keduvocpersonalpronoun.cpp similarity index 100% rename from keduvocdocument/keduvocpersonalpronoun.cpp rename to keduvocpersonalpronoun.cpp diff --git a/keduvocdocument/keduvocpersonalpronoun.h b/keduvocpersonalpronoun.h similarity index 100% rename from keduvocdocument/keduvocpersonalpronoun.h rename to keduvocpersonalpronoun.h diff --git a/keduvocdocument/keduvoctext.cpp b/keduvoctext.cpp similarity index 100% rename from keduvocdocument/keduvoctext.cpp rename to keduvoctext.cpp diff --git a/keduvocdocument/keduvoctext.h b/keduvoctext.h similarity index 100% rename from keduvocdocument/keduvoctext.h rename to keduvoctext.h diff --git a/keduvocdocument/keduvoctranslation.cpp b/keduvoctranslation.cpp similarity index 100% rename from keduvocdocument/keduvoctranslation.cpp rename to keduvoctranslation.cpp diff --git a/keduvocdocument/keduvoctranslation.h b/keduvoctranslation.h similarity index 100% rename from keduvocdocument/keduvoctranslation.h rename to keduvoctranslation.h diff --git a/keduvocdocument/keduvocvokabelnreader.cpp b/keduvocvokabelnreader.cpp similarity index 100% rename from keduvocdocument/keduvocvokabelnreader.cpp rename to keduvocvokabelnreader.cpp diff --git a/keduvocdocument/keduvocvokabelnreader.h b/keduvocvokabelnreader.h similarity index 100% rename from keduvocdocument/keduvocvokabelnreader.h rename to keduvocvokabelnreader.h diff --git a/keduvocdocument/keduvocwordflags.h b/keduvocwordflags.h similarity index 100% rename from keduvocdocument/keduvocwordflags.h rename to keduvocwordflags.h diff --git a/keduvocdocument/keduvocwordtype.cpp b/keduvocwordtype.cpp similarity index 100% rename from keduvocdocument/keduvocwordtype.cpp rename to keduvocwordtype.cpp diff --git a/keduvocdocument/keduvocwordtype.h b/keduvocwordtype.h similarity index 100% rename from keduvocdocument/keduvocwordtype.h rename to keduvocwordtype.h diff --git a/keduvocdocument/keduvocwqlreader.cpp b/keduvocwqlreader.cpp similarity index 100% rename from keduvocdocument/keduvocwqlreader.cpp rename to keduvocwqlreader.cpp diff --git a/keduvocdocument/keduvocwqlreader.h b/keduvocwqlreader.h similarity index 100% rename from keduvocdocument/keduvocwqlreader.h rename to keduvocwqlreader.h diff --git a/keduvocdocument/keduvocxdxfreader.cpp b/keduvocxdxfreader.cpp similarity index 100% rename from keduvocdocument/keduvocxdxfreader.cpp rename to keduvocxdxfreader.cpp diff --git a/keduvocdocument/keduvocxdxfreader.h b/keduvocxdxfreader.h similarity index 100% rename from keduvocdocument/keduvocxdxfreader.h rename to keduvocxdxfreader.h diff --git a/keduvocdocument/kvtml2.dtd b/kvtml2.dtd similarity index 100% rename from keduvocdocument/kvtml2.dtd rename to kvtml2.dtd diff --git a/keduvocdocument/kvtml2.xsd b/kvtml2.xsd similarity index 100% rename from keduvocdocument/kvtml2.xsd rename to kvtml2.xsd diff --git a/keduvocdocument/kvtml2defs.h b/kvtml2defs.h similarity index 100% rename from keduvocdocument/kvtml2defs.h rename to kvtml2defs.h diff --git a/keduvocdocument/kvtml2todo b/kvtml2todo similarity index 100% rename from keduvocdocument/kvtml2todo rename to kvtml2todo diff --git a/keduvocdocument/kvtmldefs.h b/kvtmldefs.h similarity index 100% rename from keduvocdocument/kvtmldefs.h rename to kvtmldefs.h diff --git a/keduvocdocument/libkeduvocdocument_export.h b/libkeduvocdocument_export.h similarity index 100% rename from keduvocdocument/libkeduvocdocument_export.h rename to libkeduvocdocument_export.h diff --git a/qtmmlwidget/CMakeLists.txt b/qtmmlwidget/CMakeLists.txt deleted file mode 100644 index a6e4eda..0000000 --- a/qtmmlwidget/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -set(qtmmlwidget_LIB_SRCS - qtmmlwidget.cpp -) - -kde4_add_library(qtmmlwidget STATIC ${qtmmlwidget_LIB_SRCS}) - -target_link_libraries(qtmmlwidget ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTXML_LIBRARY}) - -install(TARGETS qtmmlwidget ${INSTALL_TARGETS_DEFAULT_ARGS}) -install(FILES QtMmlDocument QtMmlWidget qtmmlwidget.h DESTINATION ${INCLUDE_INSTALL_DIR}/libkdeedu/qtmml/ COMPONENT Devel) - diff --git a/qtmmlwidget/LICENSE.GPL b/qtmmlwidget/LICENSE.GPL deleted file mode 100644 index 94a9ed0..0000000 --- a/qtmmlwidget/LICENSE.GPL +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/qtmmlwidget/LICENSE.LGPL b/qtmmlwidget/LICENSE.LGPL deleted file mode 100644 index 4362b49..0000000 --- a/qtmmlwidget/LICENSE.LGPL +++ /dev/null @@ -1,502 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! diff --git a/qtmmlwidget/QtMmlDocument b/qtmmlwidget/QtMmlDocument deleted file mode 100644 index ef69b7f..0000000 --- a/qtmmlwidget/QtMmlDocument +++ /dev/null @@ -1 +0,0 @@ -#include "qtmmlwidget.h" diff --git a/qtmmlwidget/QtMmlWidget b/qtmmlwidget/QtMmlWidget deleted file mode 100644 index ef69b7f..0000000 --- a/qtmmlwidget/QtMmlWidget +++ /dev/null @@ -1 +0,0 @@ -#include "qtmmlwidget.h" diff --git a/qtmmlwidget/qtmmlwidget.cpp b/qtmmlwidget/qtmmlwidget.cpp deleted file mode 100644 index 7469708..0000000 --- a/qtmmlwidget/qtmmlwidget.cpp +++ /dev/null @@ -1,6372 +0,0 @@ -/**************************************************************************** -** -** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of a Qt Solutions component. -** -** Commercial Usage -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Solutions Commercial License Agreement provided -** with the Software or, alternatively, in accordance with the terms -** contained in a written agreement between you and Nokia. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain -** additional rights. These rights are described in the Nokia Qt LGPL -** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this -** package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** Please note Third Party Software included with Qt Solutions may impose -** additional restrictions and it is the user's responsibility to ensure -** that they have met the licensing requirements of the GPL, LGPL, or Qt -** Solutions Commercial license and the relevant license of the Third -** Party Software they are using. -** -** If you are unsure which license is appropriate for your use, please -** contact Nokia at qt-info@nokia.com. -** -****************************************************************************/ - -#include -#include -#include -#include -#include -#include - -#include "qtmmlwidget.h" - -// ******************************************************************* -// Declarations -// ******************************************************************* - -#define ROUND(a) (int)((a)+.5) - -static bool g_draw_frames = false; -static const double g_mfrac_spacing = 0.1; -static const double g_mroot_base_margin = 0.1; -static const double g_script_size_multiplier = 0.7071; // sqrt(1/2) -static const int g_min_font_point_size = 8; -static const QChar g_radical_char = QChar(0x1A, 0x22); -static const unsigned g_oper_spec_rows = 9; - -struct Mml -{ - enum NodeType { - NoNode = 0, MiNode, MnNode, MfracNode, MrowNode, MsqrtNode, - MrootNode, MsupNode, MsubNode, MsubsupNode, MoNode, - MstyleNode, TextNode, MphantomNode, MfencedNode, - MtableNode, MtrNode, MtdNode, MoverNode, MunderNode, - MunderoverNode, MerrorNode, MtextNode, MpaddedNode, - MspaceNode, MalignMarkNode, UnknownNode - }; - - enum MathVariant { - NormalMV = 0x0000, - BoldMV = 0x0001, - ItalicMV = 0x0002, - DoubleStruckMV = 0x0004, - ScriptMV = 0x0008, - FrakturMV = 0x0010, - SansSerifMV = 0x0020, - MonospaceMV = 0x0040 - }; - - enum FormType { PrefixForm, InfixForm, PostfixForm }; - enum ColAlign { ColAlignLeft, ColAlignCenter, ColAlignRight }; - enum RowAlign { RowAlignTop, RowAlignCenter, RowAlignBottom, - RowAlignAxis, RowAlignBaseline }; - enum FrameType { FrameNone, FrameSolid, FrameDashed }; - - struct FrameSpacing { - FrameSpacing(int hor = 0, int ver = 0) - : m_hor(hor), m_ver(ver) {} - int m_hor, m_ver; - }; -}; - -struct OperSpec { - enum StretchDir { NoStretch, HStretch, VStretch, HVStretch }; - - const char *name; - Mml::FormType form; - const char *attributes[g_oper_spec_rows]; - StretchDir stretch_dir; -}; - -struct NodeSpec -{ - Mml::NodeType type; - const char *tag; - const char *type_str; - int child_spec; - const char *child_types; - const char *attributes; - - enum ChildSpec { - ChildAny = -1, // any number of children allowed - ChildIgnore = -2, // do not build subexpression of children - ImplicitMrow = -3 // if more than one child, build mrow - }; -}; - -struct EntitySpec -{ - const char *name; - const char *value; -}; - -typedef QMap MmlAttributeMap; -class MmlNode; - -class MmlDocument : public Mml -{ - public: - MmlDocument(); - ~MmlDocument(); - void clear(); - - bool setContent(QString text, QString *errorMsg = 0, - int *errorLine = 0, int *errorColumn = 0); - void paint(QPainter *p, const QPoint &pos) const; - void dump() const; - QSize size() const; - void layout(); - - QString fontName(QtMmlWidget::MmlFont type) const; - void setFontName(QtMmlWidget::MmlFont type, const QString &name); - - int baseFontPointSize() const - { return m_base_font_point_size; } - void setBaseFontPointSize(int size) - { m_base_font_point_size = size; } - QColor foregroundColor() const - { return m_foreground_color; } - void setForegroundColor(const QColor &color) - { m_foreground_color = color; } - QColor backgroundColor() const - { return m_background_color; } - void setBackgroundColor(const QColor &color) - { m_background_color = color; } - - private: - void _dump(const MmlNode *node, QString &indent) const; - bool insertChild(MmlNode *parent, MmlNode *new_node, QString *errorMsg); - - MmlNode *domToMml(const QDomNode &dom_node, bool *ok, QString *errorMsg); - MmlNode *createNode(NodeType type, const MmlAttributeMap &mml_attr, - const QString &mml_value, QString *errorMsg); - MmlNode *createImplicitMrowNode(const QDomNode &dom_node, bool *ok, - QString *errorMsg); - - void insertOperator(MmlNode *node, const QString &text); - - MmlNode *m_root_node; - - QString m_normal_font_name; - QString m_fraktur_font_name; - QString m_sans_serif_font_name; - QString m_script_font_name; - QString m_monospace_font_name; - QString m_doublestruck_font_name; - int m_base_font_point_size; - QColor m_foreground_color; - QColor m_background_color; -}; - -class MmlNode : public Mml -{ - friend class MmlDocument; - - public: - MmlNode(NodeType type, MmlDocument *document, const MmlAttributeMap &attribute_map); - virtual ~MmlNode(); - - // Mml stuff - NodeType nodeType() const - { return m_node_type; } - - virtual QString toStr() const; - - void setRelOrigin(const QPoint &rel_origin); - QPoint relOrigin() const - { return m_rel_origin; } - void stretchTo(const QRect &rect); - bool isStretched() const - { return m_stretched; } - QPoint devicePoint(const QPoint &p) const; - - QRect myRect() const - { return m_my_rect; } - QRect parentRect() const; - virtual QRect deviceRect() const; - void updateMyRect(); - virtual void setMyRect(const QRect &rect) - { m_my_rect = rect; } - - virtual void stretch(); - virtual void layout(); - virtual void paint(QPainter *p); - - int basePos() const; - int overlinePos() const; - int underlinePos() const; - int em() const; - int ex() const; - - QString explicitAttribute(const QString &name, const QString &def = QString::null) const; - QString inheritAttributeFromMrow(const QString &name, const QString &def = QString::null) const; - - virtual QFont font() const; - virtual QColor color() const; - virtual QColor background() const; - virtual int scriptlevel(const MmlNode *child = 0) const; - - - // Node stuff - MmlDocument *document() const - { return m_document; } - MmlNode *parent() const - { return m_parent; } - MmlNode *firstChild() const - { return m_first_child; } - MmlNode *nextSibling() const - { return m_next_sibling; } - MmlNode *previousSibling() const - { return m_previous_sibling; } - MmlNode *lastSibling() const; - MmlNode *firstSibling() const; - bool isLastSibling() const - { return m_next_sibling == 0; } - bool isFirstSibling() const - { return m_previous_sibling == 0; } - bool hasChildNodes() const - { return m_first_child != 0; } - - protected: - virtual void layoutSymbol(); - virtual void paintSymbol(QPainter *p) const; - virtual QRect symbolRect() const - { return QRect(0, 0, 0, 0); } - - MmlNode *parentWithExplicitAttribute(const QString &name, NodeType type = NoNode); - int interpretSpacing(const QString &value, bool *ok) const; - - private: - MmlAttributeMap m_attribute_map; - bool m_stretched; - QRect m_my_rect, m_parent_rect; - QPoint m_rel_origin; - - NodeType m_node_type; - MmlDocument *m_document; - - MmlNode *m_parent, - *m_first_child, - *m_next_sibling, - *m_previous_sibling; -}; - -class MmlTokenNode : public MmlNode -{ - public: - MmlTokenNode(NodeType type, MmlDocument *document, - const MmlAttributeMap &attribute_map) - : MmlNode(type, document, attribute_map) {} - - QString text() const; -}; - -class MmlMphantomNode : public MmlNode -{ - public: - MmlMphantomNode(MmlDocument *document, - const MmlAttributeMap &attribute_map) - : MmlNode(MphantomNode, document, attribute_map) {} - - virtual void paint(QPainter *) {} -}; - -class MmlUnknownNode : public MmlNode -{ - public: - MmlUnknownNode(MmlDocument *document, - const MmlAttributeMap &attribute_map) - : MmlNode(UnknownNode, document, attribute_map) {} -}; - -class MmlMfencedNode : public MmlNode -{ - public: - MmlMfencedNode(MmlDocument *document, - const MmlAttributeMap &attribute_map) - : MmlNode(MfencedNode, document, attribute_map) {} -}; - -class MmlMalignMarkNode : public MmlNode -{ - public: - MmlMalignMarkNode(MmlDocument *document) - : MmlNode(MalignMarkNode, document, MmlAttributeMap()) {} -}; - -class MmlMfracNode : public MmlNode -{ - public: - MmlMfracNode(MmlDocument *document, const MmlAttributeMap &attribute_map) - : MmlNode(MfracNode, document, attribute_map) {} - - MmlNode *numerator() const; - MmlNode *denominator() const; - - protected: - virtual void layoutSymbol(); - virtual void paintSymbol(QPainter *p) const; - virtual QRect symbolRect() const; -}; - -class MmlMrowNode : public MmlNode -{ - public: - MmlMrowNode(MmlDocument *document, const MmlAttributeMap &attribute_map) - : MmlNode(MrowNode, document, attribute_map) {} -}; - -class MmlRootBaseNode : public MmlNode -{ - public: - MmlRootBaseNode(NodeType type, MmlDocument *document, const MmlAttributeMap &attribute_map) - : MmlNode(type, document, attribute_map) {} - - MmlNode *base() const; - MmlNode *index() const; - - virtual int scriptlevel(const MmlNode *child = 0) const; - - protected: - virtual void layoutSymbol(); - virtual void paintSymbol(QPainter *p) const; - virtual QRect symbolRect() const; - int tailWidth() const; -}; - -class MmlMrootNode : public MmlRootBaseNode -{ - public: - MmlMrootNode(MmlDocument *document, const MmlAttributeMap &attribute_map) - : MmlRootBaseNode(MrootNode, document, attribute_map) {} -}; - -class MmlMsqrtNode : public MmlRootBaseNode -{ - public: - MmlMsqrtNode(MmlDocument *document, const MmlAttributeMap &attribute_map) - : MmlRootBaseNode(MsqrtNode, document, attribute_map) {} - -}; - - -class MmlTextNode : public MmlNode -{ - public: - MmlTextNode(const QString &text, MmlDocument *document); - - virtual QString toStr() const; - QString text() const - { return m_text; } - - // TextNodes are not xml elements, so they can't have attributes of - // their own. Everything is taken from the parent. - virtual QFont font() const - { return parent()->font(); } - virtual int scriptlevel(const MmlNode* = 0) const - { return parent()->scriptlevel(this); } - virtual QColor color() const - { return parent()->color(); } - virtual QColor background() const - { return parent()->background(); } - - protected: - virtual void paintSymbol(QPainter *p) const; - virtual QRect symbolRect() const; - - QString m_text; -}; - -class MmlMiNode : public MmlTokenNode -{ - public: - MmlMiNode(MmlDocument *document, const MmlAttributeMap &attribute_map) - : MmlTokenNode(MiNode, document, attribute_map) {} -}; - -class MmlMnNode : public MmlTokenNode -{ - public: - MmlMnNode(MmlDocument *document, const MmlAttributeMap &attribute_map) - : MmlTokenNode(MnNode, document, attribute_map) {} -}; - -class MmlSubsupBaseNode : public MmlNode -{ - public: - MmlSubsupBaseNode(NodeType type, MmlDocument *document, const MmlAttributeMap &attribute_map) - : MmlNode(type, document, attribute_map) {} - - MmlNode *base() const; - MmlNode *sscript() const; - - virtual int scriptlevel(const MmlNode *child = 0) const; -}; - -class MmlMsupNode : public MmlSubsupBaseNode -{ - public: - MmlMsupNode(MmlDocument *document, const MmlAttributeMap &attribute_map) - : MmlSubsupBaseNode(MsupNode, document, attribute_map) {} - - protected: - virtual void layoutSymbol(); -}; - -class MmlMsubNode : public MmlSubsupBaseNode -{ - public: - MmlMsubNode(MmlDocument *document, const MmlAttributeMap &attribute_map) - : MmlSubsupBaseNode(MsubNode, document, attribute_map) {} - - protected: - virtual void layoutSymbol(); -}; - -class MmlMsubsupNode : public MmlNode -{ - public: - MmlMsubsupNode(MmlDocument *document, const MmlAttributeMap &attribute_map) - : MmlNode(MsubsupNode, document, attribute_map) {} - - MmlNode *base() const; - MmlNode *superscript() const; - MmlNode *subscript() const; - - virtual int scriptlevel(const MmlNode *child = 0) const; - - protected: - virtual void layoutSymbol(); -}; - -class MmlMoNode : public MmlTokenNode -{ - public: - MmlMoNode(MmlDocument *document, const MmlAttributeMap &attribute_map); - - QString dictionaryAttribute(const QString &name) const; - virtual void stretch(); - virtual int lspace() const; - virtual int rspace() const; - - virtual QString toStr() const; - - protected: - virtual void layoutSymbol(); - virtual QRect symbolRect() const; - - virtual FormType form() const; - - private: - const OperSpec *m_oper_spec; -}; - -class MmlMstyleNode : public MmlNode -{ - public: - MmlMstyleNode(MmlDocument *document, const MmlAttributeMap &attribute_map) - : MmlNode(MstyleNode, document, attribute_map) {} -}; - -class MmlTableBaseNode : public MmlNode -{ - public: - MmlTableBaseNode(NodeType type, MmlDocument *document, const MmlAttributeMap &attribute_map) - : MmlNode(type, document, attribute_map) {} -}; - -class MmlMtableNode : public MmlTableBaseNode -{ - public: - MmlMtableNode(MmlDocument *document, const MmlAttributeMap &attribute_map) - : MmlTableBaseNode(MtableNode, document, attribute_map) {} - - int rowspacing() const; - int columnspacing() const; - int framespacing_hor() const; - int framespacing_ver() const; - FrameType frame() const; - FrameType columnlines(int idx) const; - FrameType rowlines(int idx) const; - - protected: - virtual void layoutSymbol(); - virtual QRect symbolRect() const; - virtual void paintSymbol(QPainter *p) const; - - private: - struct CellSizeData - { - void init(const MmlNode *first_row); - QList col_widths, row_heights; - int numCols() const { return col_widths.count(); } - int numRows() const { return row_heights.count(); } - uint colWidthSum() const; - uint rowHeightSum() const; - }; - - CellSizeData m_cell_size_data; - int m_content_width, m_content_height; -}; - -class MmlMtrNode : public MmlTableBaseNode -{ - public: - MmlMtrNode(MmlDocument *document, const MmlAttributeMap &attribute_map) - : MmlTableBaseNode(MtrNode, document, attribute_map) {} - void layoutCells(const QList &col_widths, int col_spc); -}; - -class MmlMtdNode : public MmlTableBaseNode -{ - public: - MmlMtdNode(MmlDocument *document, const MmlAttributeMap &attribute_map) - : MmlTableBaseNode(MtdNode, document, attribute_map) - { m_scriptlevel_adjust = 0; } - virtual void setMyRect(const QRect &rect); - - ColAlign columnalign(); - RowAlign rowalign(); - uint colNum(); - uint rowNum(); - virtual int scriptlevel(const MmlNode *child = 0) const; - - private: - int m_scriptlevel_adjust; // added or subtracted to scriptlevel to - // make contents fit the cell -}; - -class MmlMoverNode : public MmlNode -{ - public: - MmlMoverNode(MmlDocument *document, const MmlAttributeMap &attribute_map) - : MmlNode(MoverNode, document, attribute_map) {} - virtual int scriptlevel(const MmlNode *node = 0) const; - - protected: - virtual void layoutSymbol(); -}; - -class MmlMunderNode : public MmlNode -{ - public: - MmlMunderNode(MmlDocument *document, const MmlAttributeMap &attribute_map) - : MmlNode(MunderNode, document, attribute_map) {} - virtual int scriptlevel(const MmlNode *node = 0) const; - - protected: - virtual void layoutSymbol(); -}; - -class MmlMunderoverNode : public MmlNode -{ - public: - MmlMunderoverNode(MmlDocument *document, const MmlAttributeMap &attribute_map) - : MmlNode(MunderoverNode, document, attribute_map) {} - virtual int scriptlevel(const MmlNode *node = 0) const; - - protected: - virtual void layoutSymbol(); -}; - -class MmlMerrorNode : public MmlNode -{ - public: - MmlMerrorNode(MmlDocument *document, const MmlAttributeMap &attribute_map) - : MmlNode(MerrorNode, document, attribute_map) {} -}; - -class MmlMtextNode : public MmlNode -{ - public: - MmlMtextNode(MmlDocument *document, const MmlAttributeMap &attribute_map) - : MmlNode(MtextNode, document, attribute_map) {} -}; - -class MmlMpaddedNode : public MmlNode -{ - public: - MmlMpaddedNode(MmlDocument *document, const MmlAttributeMap &attribute_map) - : MmlNode(MpaddedNode, document, attribute_map) {} - - public: - int lspace() const; - int width() const; - int height() const; - int depth() const; - - protected: - int interpretSpacing(QString value, int base_value, bool *ok) const; - virtual void layoutSymbol(); - virtual QRect symbolRect() const; -}; - -class MmlMspaceNode : public MmlNode -{ - public: - MmlMspaceNode(MmlDocument *document, const MmlAttributeMap &attribute_map) - : MmlNode(MspaceNode, document, attribute_map) {} -}; - -static const NodeSpec *mmlFindNodeSpec(Mml::NodeType type); -static const NodeSpec *mmlFindNodeSpec(const QString &tag); -static bool mmlCheckChildType(Mml::NodeType parent_type, - Mml::NodeType child_type, QString *error_str); -static bool mmlCheckAttributes(Mml::NodeType child_type, - const MmlAttributeMap &attr, QString *error_str); -static QString mmlDictAttribute(const QString &name, const OperSpec *spec); -static const OperSpec *mmlFindOperSpec(const QString &name, Mml::FormType form); -static int interpretSpacing(QString name, int em, int ex, bool *ok); -static int interpretPercentSpacing(QString value, int base, bool *ok); -static uint interpretMathVariant(const QString &value, bool *ok); -static Mml::FormType interpretForm(const QString &value, bool *ok); -static Mml::FrameType interpretFrameType(const QString &value_list, uint idx, bool *ok); -static Mml::FrameSpacing interpretFrameSpacing(const QString &value_list, int em, int ex, bool *ok); -static Mml::ColAlign interpretColAlign(const QString &value_list, uint colnum, bool *ok); -static Mml::RowAlign interpretRowAlign(const QString &value_list, uint rownum, bool *ok); -static Mml::FrameType interpretFrameType(const QString &value_list, uint idx, bool *ok); -static QFont interpretDepreciatedFontAttr(const MmlAttributeMap &font_attr, QFont &fn, int em, int ex); -static QFont interpretMathSize(QString value, QFont &fn, int em, int ex, bool *ok); -static QString interpretListAttr(const QString &value_list, int idx, const QString &def); -static QString rectToStr(const QRect &rect); -static QString entityDeclarations(); - - -#define MML_ATT_COMMON " class style id xref actiontype " -#define MML_ATT_FONTSIZE " fontsize fontweight fontstyle fontfamily color " -#define MML_ATT_MATHVARIANT " mathvariant mathsize mathcolor mathbackground " -#define MML_ATT_FONTINFO MML_ATT_FONTSIZE MML_ATT_MATHVARIANT -#define MML_ATT_OPINFO " form fence separator lspace rspace stretchy symmetric " \ - " maxsize minsize largeop movablelimits accent " -#define MML_ATT_SIZEINFO " width height depth " -#define MML_ATT_TABLEINFO " align rowalign columnalign columnwidth groupalign " \ - " alignmentscope side rowspacing columnspacing rowlines " \ - " columnlines width frame framespacing equalrows " \ - " equalcolumns displaystyle " -#define MML_ATT_MFRAC " bevelled numalign denomalign linethickness " -#define MML_ATT_MSTYLE MML_ATT_FONTINFO MML_ATT_OPINFO \ - " scriptlevel lquote rquote linethickness displaystyle " \ - " scriptsizemultiplier scriptminsize background " \ - " veryverythinmathspace verythinmathspace thinmathspace " \ - " mediummathspace thickmathspace verythickmathspace " \ - " veryverythickmathspace open close separators " \ - " subscriptshift superscriptshift accentunder tableinfo " \ - " rowspan columnspan edge selection bevelled " -#define MML_ATT_MTABLE " align rowalign columnalign groupalign alignmentscope " \ - " columnwidth width rowspacing columnspacing rowlines columnlines " \ - " frame framespacing equalrows equalcolumns displaystyle side " \ - " minlabelspacing " - -static const NodeSpec g_node_spec_data[] = { - -// type tag type_str child_spec child_types attributes ""=none, 0=any -// ----------------------- --------------- ------------------- ----------------------- ------------------------ ------------------------------------ - { Mml::MiNode, "mi", "MiNode", NodeSpec::ChildAny, " TextNode MalignMark ", MML_ATT_COMMON MML_ATT_FONTINFO }, - { Mml::MnNode, "mn", "MnNode", NodeSpec::ChildAny, " TextNode MalignMark ", MML_ATT_COMMON MML_ATT_FONTINFO }, - { Mml::MfracNode, "mfrac", "MfracNode", 2, 0, MML_ATT_COMMON MML_ATT_MFRAC }, - { Mml::MrowNode, "mrow", "MrowNode", NodeSpec::ChildAny, 0, MML_ATT_COMMON " display mode " }, - { Mml::MsqrtNode, "msqrt", "MsqrtNode", NodeSpec::ImplicitMrow, 0, MML_ATT_COMMON }, - { Mml::MrootNode, "mroot", "MrootNode", 2, 0, MML_ATT_COMMON }, - { Mml::MsupNode, "msup", "MsupNode", 2, 0, MML_ATT_COMMON " subscriptshift " }, - { Mml::MsubNode, "msub", "MsubNode", 2, 0, MML_ATT_COMMON " superscriptshift " }, - { Mml::MsubsupNode, "msubsup", "MsubsupNode", 3, 0, MML_ATT_COMMON " subscriptshift superscriptshift " }, - { Mml::MoNode, "mo", "MoNode", NodeSpec::ChildAny, " TextNode MalignMark ", MML_ATT_COMMON MML_ATT_FONTINFO MML_ATT_OPINFO }, - { Mml::MstyleNode, "mstyle", "MstyleNode", NodeSpec::ImplicitMrow, 0, MML_ATT_COMMON MML_ATT_MSTYLE }, - { Mml::MphantomNode, "mphantom", "MphantomNode", NodeSpec::ImplicitMrow, 0, MML_ATT_COMMON }, - { Mml::MalignMarkNode, "malignmark", "MalignMarkNode", 0, 0, "" }, - { Mml::MfencedNode, "mfenced", "MfencedNode", NodeSpec::ChildAny, 0, MML_ATT_COMMON " open close separators " }, - { Mml::MtableNode, "mtable", "MtableNode", NodeSpec::ChildAny, " MtrNode ", MML_ATT_COMMON MML_ATT_MTABLE }, - { Mml::MtrNode, "mtr", "MtrNode", NodeSpec::ChildAny, " MtdNode ", MML_ATT_COMMON " rowalign columnalign groupalign " }, - { Mml::MtdNode, "mtd", "MtdNode", NodeSpec::ImplicitMrow, 0, MML_ATT_COMMON " rowspan columnspan rowalign columnalign groupalign " }, - { Mml::MoverNode, "mover", "MoverNode", 2, 0, MML_ATT_COMMON " accent " }, - { Mml::MunderNode, "munder", "MunderNode", 2, 0, MML_ATT_COMMON " accentunder " }, - { Mml::MunderoverNode, "munderover", "MunderoverNode", 3, 0, MML_ATT_COMMON " accentunder accent " }, - { Mml::MerrorNode, "merror", "MerrorNode", NodeSpec::ImplicitMrow, 0, MML_ATT_COMMON }, - { Mml::MtextNode, "mtext", "MtextNode", 1, " TextNode ", MML_ATT_COMMON " width height depth linebreak " }, - { Mml::MpaddedNode, "mpadded", "MpaddedNode", NodeSpec::ImplicitMrow, 0, MML_ATT_COMMON " width height depth lspace " }, - { Mml::MspaceNode, "mspace", "MspaceNode", NodeSpec::ImplicitMrow, 0, MML_ATT_COMMON " width height depth linebreak " }, - { Mml::TextNode, 0, "TextNode", NodeSpec::ChildIgnore, 0, "" }, - { Mml::UnknownNode, 0, "UnknownNode", NodeSpec::ChildAny, 0, 0 }, - { Mml::NoNode, 0, 0, 0, 0, 0 } -}; - -static const char *g_oper_spec_names[g_oper_spec_rows] = { "accent", "fence", "largeop", "lspace", "minsize", "movablelimits", "rspace", "separator", "stretchy" /* stretchdir */ }; -static const OperSpec g_oper_spec_data[] = { - - { "!!" , Mml::PostfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "0em", 0, 0 }, OperSpec::NoStretch }, // "!!" - { "!" , Mml::PostfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "0em", 0, 0 }, OperSpec::NoStretch }, // "!" - { "!=" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "!=" - { "⩓" , Mml::InfixForm, { 0, 0, 0, "mediummathspace", 0, 0, "mediummathspace", 0, "true" }, OperSpec::VStretch }, // "⩓" - { "⁡" , Mml::InfixForm, { 0, 0, 0, "0em", 0, 0, "0em", 0, 0 }, OperSpec::NoStretch }, // "⁡" - { "≔" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≔" - { "∖" , Mml::InfixForm, { 0, 0, 0, "thinmathspace", 0, 0, "thinmathspace", 0, "true" }, OperSpec::HVStretch }, // "∖" - { "∵" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "∵" - { "˘" , Mml::PostfixForm, { "true", 0, 0, "0em", 0, 0, "0em", 0, 0 }, OperSpec::NoStretch }, // "˘" - { "⋒" , Mml::InfixForm, { 0, 0, 0, "thinmathspace", 0, 0, "thinmathspace", 0, 0 }, OperSpec::NoStretch }, // "⋒" - { "ⅅ" , Mml::PrefixForm, { 0, 0, 0, "0em", 0, 0, "verythinmathspace", 0, 0 }, OperSpec::NoStretch }, // ⅅ" - { "¸" , Mml::PostfixForm, { "true", 0, 0, "0em", 0, 0, "0em", 0, 0 }, OperSpec::NoStretch }, // "¸" - { "·" , Mml::InfixForm, { 0, 0, 0, "thinmathspace", 0, 0, "thinmathspace", 0, 0 }, OperSpec::NoStretch }, // "·" - { "⊙" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, 0 }, OperSpec::NoStretch }, // "⊙" - { "⊖" , Mml::InfixForm, { 0, 0, 0, "thinmathspace", 0, 0, "thinmathspace", 0, 0 }, OperSpec::NoStretch }, // "⊖" - { "⊕" , Mml::InfixForm, { 0, 0, 0, "thinmathspace", 0, 0, "thinmathspace", 0, 0 }, OperSpec::NoStretch }, // "⊕" - { "⊗" , Mml::InfixForm, { 0, 0, 0, "thinmathspace", 0, 0, "thinmathspace", 0, 0 }, OperSpec::NoStretch }, // "⊗" - { "∲" , Mml::PrefixForm, { 0, 0, "true", "0em", 0, 0, "0em", 0, "true"}, OperSpec::VStretch }, // ∲" - { "”" , Mml::PostfixForm, { 0, "true", 0, "0em", 0, 0, "0em", 0, 0 }, OperSpec::NoStretch }, // ”" - { "’" , Mml::PostfixForm, { 0, "true", 0, "0em", 0, 0, "0em", 0, 0 }, OperSpec::NoStretch }, // "’" - { "∷" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "∷" - { "≡" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≡" - { "∮" , Mml::PrefixForm, { 0, 0, "true", "0em", 0, 0, "0em", 0, "true" }, OperSpec::VStretch }, // "∮" - { "∐" , Mml::InfixForm, { 0, 0, 0, "thinmathspace", 0, 0, "thinmathspace", 0, 0 }, OperSpec::NoStretch }, // "∐" - { "∳", Mml::PrefixForm, { 0, 0, "true", "0em", 0, 0, "0em", 0, "true" }, OperSpec::VStretch }, // &CounterClockwiseContourInteg - { "⨯" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, 0 }, OperSpec::NoStretch }, // "⨯" - { "⋓" , Mml::InfixForm, { 0, 0, 0, "thinmathspace", 0, 0, "thinmathspace", 0, 0 }, OperSpec::NoStretch }, // "⋓" - { "≍" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≍" - { "∇" , Mml::PrefixForm, { 0, 0, 0, "0em", 0, 0, "verythinmathspace", 0, 0 }, OperSpec::NoStretch }, // "∇" - { "´" , Mml::PostfixForm, { "true", 0, 0, "0em", 0, 0, "0em", 0, 0 }, OperSpec::NoStretch }, // "´" - { "˙" , Mml::PostfixForm, { "true", 0, 0, "0em", 0, 0, "0em", 0, 0 }, OperSpec::NoStretch }, // "˙" - { "˝" , Mml::PostfixForm, { "true", 0, 0, "0em", 0, 0, "0em", 0, 0 }, OperSpec::NoStretch }, // ˝" - { "`" , Mml::PostfixForm, { "true", 0, 0, "0em", 0, 0, "0em", 0, 0 }, OperSpec::NoStretch }, // "`" - { "&DiacriticalLeftArrow;" , Mml::PostfixForm, { "true", 0, 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::HStretch }, // &DiacriticalLeftArrow;" - { "&DiacriticalLeftRightArrow;" , Mml::PostfixForm, { "true", 0, 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::HStretch }, // &DiacriticalLeftRightArrow;" - { "&DiacriticalLeftRightVector;" , Mml::PostfixForm, { "true", 0, 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::HStretch }, // &DiacriticalLeftRightVector;" - { "&DiacriticalLeftVector;" , Mml::PostfixForm, { "true", 0, 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::HStretch }, // &DiacriticalLeftVector;" - { "&DiacriticalRightArrow;" , Mml::PostfixForm, { "true", 0, 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::HStretch }, // &DiacriticalRightArrow;" - { "&DiacriticalRightVector;" , Mml::PostfixForm, { "true", 0, 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::HStretch }, // &DiacriticalRightVector;" - { "˜" , Mml::PostfixForm, { "true", 0, 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::NoStretch }, // "˜" - { "⋄" , Mml::InfixForm, { 0, 0, 0, "thinmathspace", 0, 0, "thinmathspace", 0, 0 }, OperSpec::NoStretch }, // "⋄" - { "ⅆ" , Mml::PrefixForm, { 0, 0, 0, "0em", 0, 0, "verythinmathspace", 0, 0 }, OperSpec::NoStretch }, // "ⅆ" - { "≐" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≐" - { "∯" , Mml::PrefixForm, { 0, 0, "true", "0em", 0, 0, "0em", 0, "true" }, OperSpec::VStretch }, // ∯" - { "¨" , Mml::PostfixForm, { "true", 0, 0, "0em", 0, 0, "0em", 0, 0 }, OperSpec::NoStretch }, // "¨" - { "⇓" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::VStretch }, // "⇓" - { "⇐" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HStretch }, // "⇐" - { "⇔" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HStretch }, // ⇔" - { "⫤" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⫤" - { "⟸" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::HStretch }, // "⟸" - { "⟺" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::HStretch }, // ⟺" - { "⟹" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::HStretch }, // ⟹" - { "⇒" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HStretch }, // "⇒" - { "⊨" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⊨" - { "⇑" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::VStretch }, // "⇑" - { "⇕" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::VStretch }, // "⇕" - { "∥" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "∥" - { "↓" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::VStretch }, // "↓" - { "⤓" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::VStretch }, // "⤓" - { "⇵" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::VStretch }, // "⇵" - { "̑" , Mml::PostfixForm, { "true", 0, 0, "0em", 0, 0, "0em", 0, 0 }, OperSpec::NoStretch }, // "̑" - { "⥐" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HVStretch }, // "⥐" - { "⥞" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HVStretch }, // "⥞" - { "↽" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HVStretch }, // "↽" - { "⥖" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HVStretch }, // "⥖" - { "⥟" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HVStretch }, // "⥟" - { "⇁" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HVStretch }, // "⇁" - { "⥗" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HVStretch }, // "⥗" - { "⊤" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⊤" - { "↧" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::VStretch }, // "↧" - { "∈" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "∈" - { "⩵" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⩵" - { "≂" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≂" - { "⇌" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HStretch }, // "⇌" - { "∃" , Mml::PrefixForm, { 0, 0, 0, "0em", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "∃" - { "∀" , Mml::PrefixForm, { 0, 0, 0, "0em", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "∀" - { "≥" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≥" - { "⋛" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⋛" - { "≧" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≧" - { "⪢" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⪢" - { "≷" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≷" - { "⩾" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⩾" - { "≳" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≳" - { "ˇ" , Mml::PostfixForm, { "true", 0, 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::NoStretch }, // "ˇ" - { "^" , Mml::PostfixForm, { "true", 0, 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::HStretch }, // "^" - { "─" , Mml::InfixForm, { 0, 0, 0, "0em", "0", 0, "0em", 0, "true" }, OperSpec::HStretch }, // "─" - { "≎" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≎" - { "≏" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≏" - { "⇒" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HStretch }, // "⇒" - { "∫" , Mml::PrefixForm, { 0, 0, "true", "0em", 0, 0, "0em", 0, 0 }, OperSpec::NoStretch }, // "∫" - { "⋂" , Mml::PrefixForm, { 0, 0, "true", "0em", 0, "true", "thinmathspace", 0, "true" }, OperSpec::HVStretch }, // "⋂" - { "⁣" , Mml::InfixForm, { 0, 0, 0, "0em", 0, 0, "0em", "true", 0 }, OperSpec::NoStretch }, // "⁣" - { "⁢" , Mml::InfixForm, { 0, 0, 0, "0em", 0, 0, "0em", 0, 0 }, OperSpec::NoStretch }, // "⁢" - { "⟨" , Mml::PrefixForm, { 0, "true", 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::VStretch }, // "⟨" - { "←" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HStretch }, // "←" - { "⇤" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HStretch }, // "⇤" - { "⇆" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HStretch }, // "⇆" - { "&LeftBracketingBar;" , Mml::PrefixForm, { 0, "true", 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::VStretch }, // "&LeftBracketingBar;" - { "⌈" , Mml::PrefixForm, { 0, "true", 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::VStretch }, // "⌈" - { "⟦" , Mml::PrefixForm, { 0, "true", 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::HStretch }, // "⟦" - { "&LeftDoubleBracketingBar;" , Mml::PrefixForm, { 0, "true", 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::HStretch }, // &LeftDoubleBracketingBar;" - { "⥡" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::HVStretch }, // "⥡" - { "⇃" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::HVStretch }, // "⇃" - { "⥙" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::HVStretch }, // "⥙" - { "⌊" , Mml::PrefixForm, { 0, "true", 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::VStretch }, // "⌊" - { "↔" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HStretch }, // "↔" - { "⥎" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HStretch }, // "⥎" - { "&LeftSkeleton;" , Mml::PrefixForm, { 0, "true", 0, "0em", 0, 0, "0em", 0, 0 }, OperSpec::NoStretch }, // "&LeftSkeleton;" - { "⊣" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⊣" - { "↤" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HStretch }, // "↤" - { "⥚" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HStretch }, // "⥚" - { "⊲" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⊲" - { "⧏" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⧏" - { "⊴" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⊴" - { "⥑" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::HVStretch }, // "⥑" - { "⥠" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::HVStretch }, // "⥠" - { "↿" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::HVStretch }, // "↿" - { "⥘" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::HVStretch }, // "⥘" - { "↼" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HStretch }, // "↼" - { "⥒" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::VStretch }, // "⥒" - { "⋚" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⋚" - { "≦" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≦" - { "≶" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≶" - { "⪡" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⪡" - { "⩽" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⩽" - { "≲" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≲" - { "⟵" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::HStretch }, // "⟵" - { "⟷" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::HStretch }, // "⟷" - { "⟶" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::HStretch }, // "⟶" - { "↙" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HVStretch }, // "↙" - { "↘" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HVStretch }, // "↘" - { "∓" , Mml::PrefixForm, { 0, 0, 0, "0em", 0, 0, "veryverythinmathspace", 0, 0 }, OperSpec::NoStretch }, // "∓" - { "≫" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // ≫" - { "≪" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≪" - { "⫬" , Mml::PrefixForm, { 0, 0, 0, "0em", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⫬" - { "≢" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≢" - { "≭" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≭" - { "∦" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // ∦" - { "∉" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "∉" - { "≠" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≠" - { "≂̸" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≂̸" - { "∄" , Mml::PrefixForm, { 0, 0, 0, "0em", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "∄" - { "≯" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≯" - { "≱" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≱" - { "≧̸" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≧̸" - { "≫̸" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≫̸" - { "≹" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≹" - { "⩾̸" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // ⩾̸" - { "≵" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≵" - { "≎̸" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≎̸" - { "≏̸" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≏̸" - { "⋪" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⋪" - { "⧏̸" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⧏̸" - { "⋬" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // ⋬" - { "≮" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≮" - { "≰" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≰" - { "&NotLessFullEqual;" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "&NotLessFullEqual;" - { "≸" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≸" - { "≪̸" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≪̸" - { "⩽̸" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⩽̸" - { "≴" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≴" - { "⪢̸" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // ⪢̸" - { "⪡̸" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⪡̸" - { "⊀" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⊀" - { "⪯̸" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⪯̸" - { "⋠" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // ⋠" - { "&NotPrecedesTilde;" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "&NotPrecedesTilde;" - { "∌" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "∌" - { "⋫" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⋫" - { "⧐̸" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⧐̸" - { "⋭" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // ⋭" - { "⊏̸" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⊏̸" - { "⋢" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // ⋢" - { "⊐̸" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⊐̸" - { "⋣" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // ⋣" - { "⊂⃒" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⊂⃒" - { "⊈" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⊈" - { "⊁" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⊁" - { "⪰̸" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⪰̸" - { "⋡" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // ⋡" - { "≿̸" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≿̸" - { "⊃⃒" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⊃⃒" - { "⊉" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⊉" - { "≁" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≁" - { "≄" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≄" - { "≇" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≇" - { "≉" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≉" - { "∤" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "∤" - { "“" , Mml::PrefixForm, { 0, "true", 0, "0em", 0, 0, "0em", 0, 0 }, OperSpec::NoStretch }, // “" - { "‘" , Mml::PrefixForm, { 0, "true", 0, "0em", 0, 0, "0em", 0, 0 }, OperSpec::NoStretch }, // "‘" - { "⩔" , Mml::InfixForm, { 0, 0, 0, "mediummathspace", 0, 0, "mediummathspace", 0, "true" }, OperSpec::VStretch }, // "⩔" - { "‾" , Mml::PostfixForm, { "true", 0, 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::HStretch }, // "‾" - { "⏞" , Mml::PostfixForm, { "true", 0, 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::HStretch }, // "⏞" - { "⎴" , Mml::PostfixForm, { "true", 0, 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::HStretch }, // "⎴" - { "⏜" , Mml::PostfixForm, { "true", 0, 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::VStretch }, // "⏜" - { "∂" , Mml::PrefixForm, { 0, 0, 0, "0em", 0, 0, "verythinmathspace", 0, 0 }, OperSpec::NoStretch }, // "∂" - { "±" , Mml::PrefixForm, { 0, 0, 0, "0em", 0, 0, "veryverythinmathspace", 0, 0 }, OperSpec::NoStretch }, // "±" - { "≺" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≺" - { "⪯" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⪯" - { "≼" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≼" - { "≾" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≾" - { "∏" , Mml::PrefixForm, { 0, 0, "true", "0em", 0, "true", "thinmathspace", 0, 0 }, OperSpec::NoStretch }, // "∏" - { "∷" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "∷" - { "∝" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "∝" - { "∋" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "∋" - { "⇋" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HStretch }, // "⇋" - { "⥯" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::HStretch }, // ⥯" - { "⟩" , Mml::PostfixForm, { 0, "true", 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::VStretch }, // "⟩" - { "→" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HStretch }, // "→" - { "⇥" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HStretch }, // "⇥" - { "⇄" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HStretch }, // "⇄" - { "&RightBracketingBar;" , Mml::PostfixForm, { 0, "true", 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::VStretch }, // "&RightBracketingBar;" - { "⌉" , Mml::PostfixForm, { 0, "true", 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::VStretch }, // "⌉" - { "⟧" , Mml::PostfixForm, { 0, "true", 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::VStretch }, // "⟧" - { "&RightDoubleBracketingBar;" , Mml::PostfixForm, { 0, "true", 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::HStretch }, // &RightDoubleBracketingBar;" - { "⥝" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::HVStretch }, // "⥝" - { "⇂" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::HVStretch }, // "⇂" - { "⥕" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::HVStretch }, // "⥕" - { "⌋" , Mml::PostfixForm, { 0, "true", 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::VStretch }, // "⌋" - { "&RightSkeleton;" , Mml::PostfixForm, { 0, "true", 0, "0em", 0, 0, "0em", 0, 0 }, OperSpec::NoStretch }, // "&RightSkeleton;" - { "⊢" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⊢" - { "↦" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HStretch }, // "↦" - { "⥛" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HStretch }, // "⥛" - { "⊳" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⊳" - { "⧐" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⧐" - { "⊵" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⊵" - { "⥏" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::VStretch }, // "⥏" - { "⥜" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::HVStretch }, // "⥜" - { "↾" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::HVStretch }, // "↾" - { "⥔" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::HVStretch }, // "⥔" - { "⇀" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HStretch }, // "⇀" - { "⥓" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HStretch }, // "⥓" - { "⥰" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⥰" - { "↓" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, 0 }, OperSpec::NoStretch }, // "↓" - { "←" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::HStretch }, // "←" - { "→" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::HStretch }, // "→" - { "↑" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, 0 }, OperSpec::VStretch }, // "↑" - { "∘" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, 0 }, OperSpec::NoStretch }, // "∘" - { "√" , Mml::PrefixForm, { 0, 0, 0, "0em", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::VStretch }, // "√" - { "□" , Mml::PrefixForm, { 0, 0, 0, "0em", 0, 0, "verythinmathspace", 0, 0 }, OperSpec::NoStretch }, // "□" - { "⊓" , Mml::InfixForm, { 0, 0, 0, "mediummathspace", 0, 0, "mediummathspace", 0, "true" }, OperSpec::HVStretch }, // "⊓" - { "⊏" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⊏" - { "⊑" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⊑" - { "⊐" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⊐" - { "⊒" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⊒" - { "⊔" , Mml::InfixForm, { 0, 0, 0, "mediummathspace", 0, 0, "mediummathspace", 0, "true" }, OperSpec::HVStretch }, // "⊔" - { "⋆" , Mml::InfixForm, { 0, 0, 0, "thinmathspace", 0, 0, "thinmathspace", 0, 0 }, OperSpec::NoStretch }, // "⋆" - { "⋐" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⋐" - { "⊆" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⊆" - { "≻" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≻" - { "⪰" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⪰" - { "≽" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≽" - { "≿" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≿" - { "∋" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "∋" - { "∑" , Mml::PrefixForm, { 0, 0, "true", "0em", 0, "true", "thinmathspace", 0, 0 }, OperSpec::NoStretch }, // "∑" - { "⊃" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⊃" - { "⊇" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⊇" - { "∴" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "∴" - { "∼" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "∼" - { "≃" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≃" - { "≅" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≅" - { "≈" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≈" - { "⃛" , Mml::PostfixForm, { "true", 0, 0, "0em", 0, 0, "0em", 0, 0 }, OperSpec::NoStretch }, // "⃛" - { "_" , Mml::PostfixForm, { "true", 0, 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::HStretch }, // "_" - { "⏟" , Mml::PostfixForm, { "true", 0, 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::HStretch }, // "⏟" - { "⎵" , Mml::PostfixForm, { "true", 0, 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::HStretch }, // "⎵" - { "⏝" , Mml::PostfixForm, { "true", 0, 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::HStretch }, // "⏝" - { "⋃" , Mml::PrefixForm, { 0, 0, "true", "0em", 0, "true", "thinmathspace", 0, "true" }, OperSpec::HVStretch }, // "⋃" - { "⊎" , Mml::PrefixForm, { 0, 0, "true", "0em", 0, "true", "thinmathspace", 0, "true" }, OperSpec::HVStretch }, // "⊎" - { "↑" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::VStretch }, // "↑" - { "⤒" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::VStretch }, // "⤒" - { "⇅" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::VStretch }, // "⇅" - { "↕" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::VStretch }, // "↕" - { "⥮" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::VStretch }, // "⥮" - { "⊥" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "⊥" - { "↥" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, "true" }, OperSpec::VStretch }, // "↥" - { "↖" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HVStretch }, // "↖" - { "↗" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::HVStretch }, // "↗" - { "⋁" , Mml::InfixForm, { 0, 0, 0, "thinmathspace", 0, 0, "thinmathspace", 0, 0 }, OperSpec::NoStretch }, // "⋁" - { "∣" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "∣" - { "|" , Mml::InfixForm, { 0, 0, 0, "0em", "0", 0, "0em", 0, "true" }, OperSpec::VStretch }, // "|" - { "❘" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::VStretch }, // "❘" - { "≀" , Mml::InfixForm, { 0, 0, 0, "thinmathspace", 0, 0, "thinmathspace", 0, 0 }, OperSpec::NoStretch }, // "≀" - { "⋀" , Mml::InfixForm, { 0, 0, 0, "thinmathspace", 0, 0, "thinmathspace", 0, 0 }, OperSpec::NoStretch }, // "⋀" - { "&" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "&" - { "&&" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "&&" - { "≤" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "≤" - { "<" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "<" - { "<=" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "<=" - { "<>" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, 0 }, OperSpec::NoStretch }, // "<>" - { "'" , Mml::PostfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "0em", 0, 0 }, OperSpec::NoStretch }, // "'" - { "(" , Mml::PrefixForm, { 0, "true", 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::VStretch }, // "(" - { ")" , Mml::PostfixForm, { 0, "true", 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::VStretch }, // ")" - { "*" , Mml::InfixForm, { 0, 0, 0, "thinmathspace", 0, 0, "thinmathspace", 0, 0 }, OperSpec::NoStretch }, // "*" - { "**" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, 0 }, OperSpec::NoStretch }, // "**" - { "*=" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "*=" - { "+" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "+" - { "+" , Mml::PrefixForm, { 0, 0, 0, "0em", 0, 0, "veryverythinmathspace", 0, 0 }, OperSpec::NoStretch }, // "+" - { "++" , Mml::PrefixForm, { 0, 0, 0, "0em", 0, 0, "verythinmathspace", 0, 0 }, OperSpec::NoStretch }, // "++" - { "+=" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "+=" - { "," , Mml::InfixForm, { 0, 0, 0, "0em", 0, 0, "verythickmathspace", "true", 0 }, OperSpec::NoStretch }, // "," - { "-" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "-" - { "-" , Mml::PrefixForm, { 0, 0, 0, "0em", 0, 0, "veryverythinmathspace", 0, 0 }, OperSpec::NoStretch }, // "-" - { "--" , Mml::PrefixForm, { 0, 0, 0, "0em", 0, 0, "verythinmathspace", 0, 0 }, OperSpec::NoStretch }, // "--" - { "-=" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "-=" - { "->" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "->" - { "." , Mml::InfixForm, { 0, 0, 0, "0em", 0, 0, "0em", 0, 0 }, OperSpec::NoStretch }, // "." - { ".." , Mml::PostfixForm, { 0, 0, 0, "mediummathspace", 0, 0, "0em", 0, 0 }, OperSpec::NoStretch }, // ".." - { "..." , Mml::PostfixForm, { 0, 0, 0, "mediummathspace", 0, 0, "0em", 0, 0 }, OperSpec::NoStretch }, // "..." - { "/" , Mml::InfixForm, { 0, 0, 0, "thinmathspace", 0, 0, "thinmathspace", 0, "true" }, OperSpec::VStretch }, // "/" - { "//" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "//" - { "/=" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "/=" - { ":" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // ":" - { ":=" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // ":=" - { ";" , Mml::InfixForm, { 0, 0, 0, "0em", 0, 0, "verythickmathspace", "true", 0 }, OperSpec::NoStretch }, // ";" - { ";" , Mml::PostfixForm, { 0, 0, 0, "0em", 0, 0, "0em", "true", 0 }, OperSpec::NoStretch }, // ";" - { "=" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "=" - { "==" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // "==" - { ">" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // ">" - { ">=" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, 0 }, OperSpec::NoStretch }, // ">=" - { "?" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, 0 }, OperSpec::NoStretch }, // "?" - { "@" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, 0 }, OperSpec::NoStretch }, // "@" - { "[" , Mml::PrefixForm, { 0, "true", 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::VStretch }, // "[" - { "]" , Mml::PostfixForm, { 0, "true", 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::VStretch }, // "]" - { "^" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, 0 }, OperSpec::NoStretch }, // "^" - { "_" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, 0 }, OperSpec::NoStretch }, // "_" - { "lim" , Mml::PrefixForm, { 0, 0, 0, "0em", 0, "true", "thinmathspace", 0, 0 }, OperSpec::NoStretch }, // "lim" - { "max" , Mml::PrefixForm, { 0, 0, 0, "0em", 0, "true", "thinmathspace", 0, 0 }, OperSpec::NoStretch }, // "max" - { "min" , Mml::PrefixForm, { 0, 0, 0, "0em", 0, "true", "thinmathspace", 0, 0 }, OperSpec::NoStretch }, // "min" - { "{" , Mml::PrefixForm, { 0, "true", 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::VStretch }, // "{" - { "|" , Mml::InfixForm, { 0, 0, 0, "thickmathspace", 0, 0, "thickmathspace", 0, "true" }, OperSpec::VStretch }, // "|" - { "||" , Mml::InfixForm, { 0, 0, 0, "mediummathspace", 0, 0, "mediummathspace", 0, 0 }, OperSpec::NoStretch }, // "||" - { "}" , Mml::PostfixForm, { 0, "true", 0, "0em", 0, 0, "0em", 0, "true" }, OperSpec::VStretch }, // "}" - { "~" , Mml::InfixForm, { 0, 0, 0, "verythinmathspace", 0, 0, "verythinmathspace", 0, 0 }, OperSpec::NoStretch }, // "~" - - { 0 , Mml::InfixForm, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, OperSpec::NoStretch } -}; - -static const OperSpec g_oper_spec_defaults = - { 0 , Mml::InfixForm, { "false", "false", "false", "thickmathspace", "1", "false", "thickmathspace", "false", "false" }, OperSpec::NoStretch }; - -static const uint g_oper_spec_count = sizeof(g_oper_spec_data)/sizeof(OperSpec) - 1; - -static const EntitySpec g_xml_entity_data[] = { - { "angzarr", "⍼" }, - { "cirmid", "⫯" }, - { "cudarrl", "⤸" }, - { "cudarrr", "⤵" }, - { "cularr", "↶" }, - { "cularrp", "⤽" }, - { "curarr", "↷" }, - { "curarrm", "⤼" }, - { "Darr", "↡" }, - { "dArr", "⇓" }, - { "ddarr", "⇊" }, - { "DDotrahd", "⤑" }, - { "dfisht", "⥿" }, - { "dHar", "⥥" }, - { "dharl", "⇃" }, - { "dharr", "⇂" }, - { "duarr", "⇵" }, - { "duhar", "⥯" }, - { "dzigrarr", "⟿" }, - { "erarr", "⥱" }, - { "hArr", "⇔" }, - { "harr", "↔" }, - { "harrcir", "⥈" }, - { "harrw", "↭" }, - { "hoarr", "⇿" }, - { "imof", "⊷" }, - { "lAarr", "⇚" }, - { "Larr", "↞" }, - { "larrbfs", "⤟" }, - { "larrfs", "⤝" }, - { "larrhk", "↩" }, - { "larrlp", "↫" }, - { "larrpl", "⤹" }, - { "larrsim", "⥳" }, - { "larrtl", "↢" }, - { "lAtail", "⤛" }, - { "latail", "⤙" }, - { "lBarr", "⤎" }, - { "lbarr", "⤌" }, - { "ldca", "⤶" }, - { "ldrdhar", "⥧" }, - { "ldrushar", "⥋" }, - { "ldsh", "↲" }, - { "lfisht", "⥼" }, - { "lHar", "⥢" }, - { "lhard", "↽" }, - { "lharu", "↼" }, - { "lharul", "⥪" }, - { "llarr", "⇇" }, - { "llhard", "⥫" }, - { "loarr", "⇽" }, - { "lrarr", "⇆" }, - { "lrhar", "⇋" }, - { "lrhard", "⥭" }, - { "lsh", "↰" }, - { "lurdshar", "⥊" }, - { "luruhar", "⥦" }, - { "Map", "⤅" }, - { "map", "↦" }, - { "midcir", "⫰" }, - { "mumap", "⊸" }, - { "nearhk", "⤤" }, - { "neArr", "⇗" }, - { "nearr", "↗" }, - { "nesear", "⤨" }, - { "nhArr", "⇎" }, - { "nharr", "↮" }, - { "nlArr", "⇍" }, - { "nlarr", "↚" }, - { "nrArr", "⇏" }, - { "nrarr", "↛" }, - { "nrarrc", "⤳̸" }, - { "nrarrw", "↝̸" }, - { "nvHarr", "⤄" }, - { "nvlArr", "⤂" }, - { "nvrArr", "⤃" }, - { "nwarhk", "⤣" }, - { "nwArr", "⇖" }, - { "nwarr", "↖" }, - { "nwnear", "⤧" }, - { "olarr", "↺" }, - { "orarr", "↻" }, - { "origof", "⊶" }, - { "rAarr", "⇛" }, - { "Rarr", "↠" }, - { "rarrap", "⥵" }, - { "rarrbfs", "⤠" }, - { "rarrc", "⤳" }, - { "rarrfs", "⤞" }, - { "rarrhk", "↪" }, - { "rarrlp", "↬" }, - { "rarrpl", "⥅" }, - { "rarrsim", "⥴" }, - { "Rarrtl", "⤖" }, - { "rarrtl", "↣" }, - { "rarrw", "↝" }, - { "rAtail", "⤜" }, - { "ratail", "⤚" }, - { "RBarr", "⤐" }, - { "rBarr", "⤏" }, - { "rbarr", "⤍" }, - { "rdca", "⤷" }, - { "rdldhar", "⥩" }, - { "rdsh", "↳" }, - { "rfisht", "⥽" }, - { "rHar", "⥤" }, - { "rhard", "⇁" }, - { "rharu", "⇀" }, - { "rharul", "⥬" }, - { "rlarr", "⇄" }, - { "rlhar", "⇌" }, - { "roarr", "⇾" }, - { "rrarr", "⇉" }, - { "rsh", "↱" }, - { "ruluhar", "⥨" }, - { "searhk", "⤥" }, - { "seArr", "⇘" }, - { "searr", "↘" }, - { "seswar", "⤩" }, - { "simrarr", "⥲" }, - { "slarr", "←" }, - { "srarr", "→" }, - { "swarhk", "⤦" }, - { "swArr", "⇙" }, - { "swarr", "↙" }, - { "swnwar", "⤪" }, - { "Uarr", "↟" }, - { "uArr", "⇑" }, - { "Uarrocir", "⥉" }, - { "udarr", "⇅" }, - { "udhar", "⥮" }, - { "ufisht", "⥾" }, - { "uHar", "⥣" }, - { "uharl", "↿" }, - { "uharr", "↾" }, - { "uuarr", "⇈" }, - { "vArr", "⇕" }, - { "varr", "↕" }, - { "xhArr", "⟺" }, - { "xharr", "⟷" }, - { "xlArr", "⟸" }, - { "xlarr", "⟵" }, - { "xmap", "⟼" }, - { "xrArr", "⟹" }, - { "xrarr", "⟶" }, - { "zigrarr", "⇝" }, - { "ac", "∾" }, - { "acE", "∾̳" }, - { "amalg", "⨿" }, - { "barvee", "⊽" }, - { "Barwed", "⌆" }, - { "barwed", "⌅" }, - { "bsolb", "⧅" }, - { "Cap", "⋒" }, - { "capand", "⩄" }, - { "capbrcup", "⩉" }, - { "capcap", "⩋" }, - { "capcup", "⩇" }, - { "capdot", "⩀" }, - { "caps", "∩︀" }, - { "ccaps", "⩍" }, - { "ccups", "⩌" }, - { "ccupssm", "⩐" }, - { "coprod", "∐" }, - { "Cup", "⋓" }, - { "cupbrcap", "⩈" }, - { "cupcap", "⩆" }, - { "cupcup", "⩊" }, - { "cupdot", "⊍" }, - { "cupor", "⩅" }, - { "cups", "∪︀" }, - { "cuvee", "⋎" }, - { "cuwed", "⋏" }, - { "Dagger", "‡" }, - { "dagger", "†" }, - { "diam", "⋄" }, - { "divonx", "⋇" }, - { "eplus", "⩱" }, - { "hercon", "⊹" }, - { "intcal", "⊺" }, - { "iprod", "⨼" }, - { "loplus", "⨭" }, - { "lotimes", "⨴" }, - { "lthree", "⋋" }, - { "ltimes", "⋉" }, - { "midast", "*" }, - { "minusb", "⊟" }, - { "minusd", "∸" }, - { "minusdu", "⨪" }, - { "ncap", "⩃" }, - { "ncup", "⩂" }, - { "oast", "⊛" }, - { "ocir", "⊚" }, - { "odash", "⊝" }, - { "odiv", "⨸" }, - { "odot", "⊙" }, - { "odsold", "⦼" }, - { "ofcir", "⦿" }, - { "ogt", "⧁" }, - { "ohbar", "⦵" }, - { "olcir", "⦾" }, - { "olt", "⧀" }, - { "omid", "⦶" }, - { "ominus", "⊖" }, - { "opar", "⦷" }, - { "operp", "⦹" }, - { "oplus", "⊕" }, - { "osol", "⊘" }, - { "Otimes", "⨷" }, - { "otimes", "⊗" }, - { "otimesas", "⨶" }, - { "ovbar", "⌽" }, - { "plusacir", "⨣" }, - { "plusb", "⊞" }, - { "pluscir", "⨢" }, - { "plusdo", "∔" }, - { "plusdu", "⨥" }, - { "pluse", "⩲" }, - { "plussim", "⨦" }, - { "plustwo", "⨧" }, - { "prod", "∏" }, - { "race", "⧚" }, - { "roplus", "⨮" }, - { "rotimes", "⨵" }, - { "rthree", "⋌" }, - { "rtimes", "⋊" }, - { "sdot", "⋅" }, - { "sdotb", "⊡" }, - { "setmn", "∖" }, - { "simplus", "⨤" }, - { "smashp", "⨳" }, - { "solb", "⧄" }, - { "sqcap", "⊓" }, - { "sqcaps", "⊓︀" }, - { "sqcup", "⊔" }, - { "sqcups", "⊔︀" }, - { "ssetmn", "∖" }, - { "sstarf", "⋆" }, - { "subdot", "⪽" }, - { "sum", "∑" }, - { "supdot", "⪾" }, - { "timesb", "⊠" }, - { "timesbar", "⨱" }, - { "timesd", "⨰" }, - { "tridot", "◬" }, - { "triminus", "⨺" }, - { "triplus", "⨹" }, - { "trisb", "⧍" }, - { "tritime", "⨻" }, - { "uplus", "⊎" }, - { "veebar", "⊻" }, - { "wedbar", "⩟" }, - { "wreath", "≀" }, - { "xcap", "⋂" }, - { "xcirc", "◯" }, - { "xcup", "⋃" }, - { "xdtri", "▽" }, - { "xodot", "⨀" }, - { "xoplus", "⨁" }, - { "xotime", "⨂" }, - { "xsqcup", "⨆" }, - { "xuplus", "⨄" }, - { "xutri", "△" }, - { "xvee", "⋁" }, - { "xwedge", "⋀" }, - { "dlcorn", "⌞" }, - { "drcorn", "⌟" }, - { "gtlPar", "⦕" }, - { "langd", "⦑" }, - { "lbrke", "⦋" }, - { "lbrksld", "⦏" }, - { "lbrkslu", "⦍" }, - { "lceil", "⌈" }, - { "lfloor", "⌊" }, - { "lmoust", "⎰" }, - { "lparlt", "⦓" }, - { "ltrPar", "⦖" }, - { "rangd", "⦒" }, - { "rbrke", "⦌" }, - { "rbrksld", "⦎" }, - { "rbrkslu", "⦐" }, - { "rceil", "⌉" }, - { "rfloor", "⌋" }, - { "rmoust", "⎱" }, - { "rpargt", "⦔" }, - { "ulcorn", "⌜" }, - { "urcorn", "⌝" }, - { "gnap", "⪊" }, - { "gnE", "≩" }, - { "gne", "⪈" }, - { "gnsim", "⋧" }, - { "gvnE", "≩︀" }, - { "lnap", "⪉" }, - { "lnE", "≨" }, - { "lne", "⪇" }, - { "lnsim", "⋦" }, - { "lvnE", "≨︀" }, - { "nap", "≉" }, - { "napE", "⩰̸" }, - { "napid", "≋̸" }, - { "ncong", "≇" }, - { "ncongdot", "⩭̸" }, - { "nequiv", "≢" }, - { "ngE", "≧̸" }, - { "nge", "≱" }, - { "nges", "⩾̸" }, - { "nGg", "⋙̸" }, - { "ngsim", "≵" }, - { "nGt", "≫⃒" }, - { "ngt", "≯" }, - { "nGtv", "≫̸" }, - { "nlE", "≦̸" }, - { "nle", "≰" }, - { "nles", "⩽̸" }, - { "nLl", "⋘̸" }, - { "nlsim", "≴" }, - { "nLt", "≪⃒" }, - { "nlt", "≮" }, - { "nltri", "⋪" }, - { "nltrie", "⋬" }, - { "nLtv", "≪̸" }, - { "nmid", "∤" }, - { "npar", "∦" }, - { "npr", "⊀" }, - { "nprcue", "⋠" }, - { "npre", "⪯̸" }, - { "nrtri", "⋫" }, - { "nrtrie", "⋭" }, - { "nsc", "⊁" }, - { "nsccue", "⋡" }, - { "nsce", "⪰̸" }, - { "nsim", "≁" }, - { "nsime", "≄" }, - { "nsmid", "∤" }, - { "nspar", "∦" }, - { "nsqsube", "⋢" }, - { "nsqsupe", "⋣" }, - { "nsub", "⊄" }, - { "nsubE", "⫅̸" }, - { "nsube", "⊈" }, - { "nsup", "⊅" }, - { "nsupE", "⫆̸" }, - { "nsupe", "⊉" }, - { "ntgl", "≹" }, - { "ntlg", "≸" }, - { "nvap", "≍⃒" }, - { "nVDash", "⊯" }, - { "nVdash", "⊮" }, - { "nvDash", "⊭" }, - { "nvdash", "⊬" }, - { "nvge", "≥⃒" }, - { "nvgt", ">⃒" }, - { "nvle", "≤⃒" }, - { "nvlt", "<⃒" }, - { "nvltrie", "⊴⃒" }, - { "nvrtrie", "⊵⃒" }, - { "nvsim", "∼⃒" }, - { "parsim", "⫳" }, - { "prnap", "⪹" }, - { "prnE", "⪵" }, - { "prnsim", "⋨" }, - { "rnmid", "⫮" }, - { "scnap", "⪺" }, - { "scnE", "⪶" }, - { "scnsim", "⋩" }, - { "simne", "≆" }, - { "solbar", "⌿" }, - { "subnE", "⫋" }, - { "subne", "⊊" }, - { "supnE", "⫌" }, - { "supne", "⊋" }, - { "vnsub", "⊂⃒" }, - { "vnsup", "⊃⃒" }, - { "vsubnE", "⫋︀" }, - { "vsubne", "⊊︀" }, - { "vsupnE", "⫌︀" }, - { "vsupne", "⊋︀" }, - { "ang", "∠" }, - { "ange", "⦤" }, - { "angmsd", "∡" }, - { "angmsdaa", "⦨" }, - { "angmsdab", "⦩" }, - { "angmsdac", "⦪" }, - { "angmsdad", "⦫" }, - { "angmsdae", "⦬" }, - { "angmsdaf", "⦭" }, - { "angmsdag", "⦮" }, - { "angmsdah", "⦯" }, - { "angrtvb", "⊾" }, - { "angrtvbd", "⦝" }, - { "bbrk", "⎵" }, - { "bemptyv", "⦰" }, - { "beth", "ℶ" }, - { "boxbox", "⧉" }, - { "bprime", "‵" }, - { "bsemi", "⁏" }, - { "cemptyv", "⦲" }, - { "cirE", "⧃" }, - { "cirscir", "⧂" }, - { "comp", "∁" }, - { "daleth", "ℸ" }, - { "demptyv", "⦱" }, - { "ell", "ℓ" }, - { "empty", "∅" }, - { "emptyv", "∅" }, - { "gimel", "ℷ" }, - { "iiota", "℩" }, - { "image", "ℑ" }, - { "imath", "ı" }, - { "jmath", "j" }, - { "laemptyv", "⦴" }, - { "lltri", "◺" }, - { "lrtri", "⊿" }, - { "mho", "℧" }, - { "nang", "∠⃒" }, - { "nexist", "∄" }, - { "oS", "Ⓢ" }, - { "planck", "ℏ" }, - { "plankv", "ℏ" }, - { "raemptyv", "⦳" }, - { "range", "⦥" }, - { "real", "ℜ" }, - { "tbrk", "⎴" }, - { "ultri", "◸" }, - { "urtri", "◹" }, - { "vzigzag", "⦚" }, - { "weierp", "℘" }, - { "apE", "⩰" }, - { "ape", "≊" }, - { "apid", "≋" }, - { "asymp", "≈" }, - { "Barv", "⫧" }, - { "bcong", "≌" }, - { "bepsi", "϶" }, - { "bowtie", "⋈" }, - { "bsim", "∽" }, - { "bsime", "⋍" }, - { "bsolhsub", "\⊂" }, - { "bump", "≎" }, - { "bumpE", "⪮" }, - { "bumpe", "≏" }, - { "cire", "≗" }, - { "Colon", "∷" }, - { "Colone", "⩴" }, - { "colone", "≔" }, - { "congdot", "⩭" }, - { "csub", "⫏" }, - { "csube", "⫑" }, - { "csup", "⫐" }, - { "csupe", "⫒" }, - { "cuepr", "⋞" }, - { "cuesc", "⋟" }, - { "Dashv", "⫤" }, - { "dashv", "⊣" }, - { "easter", "⩮" }, - { "ecir", "≖" }, - { "ecolon", "≕" }, - { "eDDot", "⩷" }, - { "eDot", "≑" }, - { "efDot", "≒" }, - { "eg", "⪚" }, - { "egs", "⪖" }, - { "egsdot", "⪘" }, - { "el", "⪙" }, - { "els", "⪕" }, - { "elsdot", "⪗" }, - { "equest", "≟" }, - { "equivDD", "⩸" }, - { "erDot", "≓" }, - { "esdot", "≐" }, - { "Esim", "⩳" }, - { "esim", "≂" }, - { "fork", "⋔" }, - { "forkv", "⫙" }, - { "frown", "⌢" }, - { "gap", "⪆" }, - { "gE", "≧" }, - { "gEl", "⪌" }, - { "gel", "⋛" }, - { "ges", "⩾" }, - { "gescc", "⪩" }, - { "gesdot", "⪀" }, - { "gesdoto", "⪂" }, - { "gesdotol", "⪄" }, - { "gesl", "⋛︀" }, - { "gesles", "⪔" }, - { "Gg", "⋙" }, - { "gl", "≷" }, - { "gla", "⪥" }, - { "glE", "⪒" }, - { "glj", "⪤" }, - { "gsim", "≳" }, - { "gsime", "⪎" }, - { "gsiml", "⪐" }, - { "Gt", "≫" }, - { "gtcc", "⪧" }, - { "gtcir", "⩺" }, - { "gtdot", "⋗" }, - { "gtquest", "⩼" }, - { "gtrarr", "⥸" }, - { "homtht", "∻" }, - { "lap", "⪅" }, - { "lat", "⪫" }, - { "late", "⪭" }, - { "lates", "⪭︀" }, - { "lE", "≦" }, - { "lEg", "⪋" }, - { "leg", "⋚" }, - { "les", "⩽" }, - { "lescc", "⪨" }, - { "lesdot", "⩿" }, - { "lesdoto", "⪁" }, - { "lesdotor", "⪃" }, - { "lesg", "⋚︀" }, - { "lesges", "⪓" }, - { "lg", "≶" }, - { "lgE", "⪑" }, - { "Ll", "⋘" }, - { "lsim", "≲" }, - { "lsime", "⪍" }, - { "lsimg", "⪏" }, - { "Lt", "≪" }, - { "ltcc", "⪦" }, - { "ltcir", "⩹" }, - { "ltdot", "⋖" }, - { "ltlarr", "⥶" }, - { "ltquest", "⩻" }, - { "ltrie", "⊴" }, - { "mcomma", "⨩" }, - { "mDDot", "∺" }, - { "mid", "∣" }, - { "mlcp", "⫛" }, - { "models", "⊧" }, - { "mstpos", "∾" }, - { "Pr", "⪻" }, - { "pr", "≺" }, - { "prap", "⪷" }, - { "prcue", "≼" }, - { "prE", "⪳" }, - { "pre", "⪯" }, - { "prsim", "≾" }, - { "prurel", "⊰" }, - { "ratio", "∶" }, - { "rtrie", "⊵" }, - { "rtriltri", "⧎" }, - { "Sc", "⪼" }, - { "sc", "≻" }, - { "scap", "⪸" }, - { "sccue", "≽" }, - { "scE", "⪴" }, - { "sce", "⪰" }, - { "scsim", "≿" }, - { "sdote", "⩦" }, - { "simg", "⪞" }, - { "simgE", "⪠" }, - { "siml", "⪝" }, - { "simlE", "⪟" }, - { "smid", "∣" }, - { "smile", "⌣" }, - { "smt", "⪪" }, - { "smte", "⪬" }, - { "smtes", "⪬︀" }, - { "spar", "∥" }, - { "sqsub", "⊏" }, - { "sqsube", "⊑" }, - { "sqsup", "⊐" }, - { "sqsupe", "⊒" }, - { "Sub", "⋐" }, - { "subE", "⫅" }, - { "subedot", "⫃" }, - { "submult", "⫁" }, - { "subplus", "⪿" }, - { "subrarr", "⥹" }, - { "subsim", "⫇" }, - { "subsub", "⫕" }, - { "subsup", "⫓" }, - { "Sup", "⋑" }, - { "supdsub", "⫘" }, - { "supE", "⫆" }, - { "supedot", "⫄" }, - { "suphsol", "⊅" }, - { "suphsub", "⫗" }, - { "suplarr", "⥻" }, - { "supmult", "⫂" }, - { "supplus", "⫀" }, - { "supsim", "⫈" }, - { "supsub", "⫔" }, - { "supsup", "⫖" }, - { "thkap", "≈" }, - { "topfork", "⫚" }, - { "trie", "≜" }, - { "twixt", "≬" }, - { "Vbar", "⫫" }, - { "vBar", "⫨" }, - { "vBarv", "⫩" }, - { "VDash", "⊫" }, - { "Vdash", "⊩" }, - { "vDash", "⊨" }, - { "vdash", "⊢" }, - { "Vdashl", "⫦" }, - { "vltri", "⊲" }, - { "vprop", "∝" }, - { "vrtri", "⊳" }, - { "Vvdash", "⊪" }, - { "alpha", "α" }, - { "beta", "β" }, - { "chi", "χ" }, - { "Delta", "Δ" }, - { "delta", "δ" }, - { "epsi", "ε" }, - { "epsiv", "ɛ" }, - { "eta", "η" }, - { "Gamma", "Γ" }, - { "gamma", "γ" }, - { "Gammad", "Ϝ" }, - { "gammad", "ϝ" }, - { "iota", "ι" }, - { "kappa", "κ" }, - { "kappav", "ϰ" }, - { "Lambda", "Λ" }, - { "lambda", "λ" }, - { "mu", "μ" }, - { "nu", "ν" }, - { "Omega", "Ω" }, - { "omega", "ω" }, - { "Phi", "Φ" }, - { "phi", "ϕ" }, - { "phiv", "φ" }, - { "Pi", "Π" }, - { "pi", "π" }, - { "piv", "ϖ" }, - { "Psi", "Ψ" }, - { "psi", "ψ" }, - { "rho", "ρ" }, - { "rhov", "ϱ" }, - { "Sigma", "Σ" }, - { "sigma", "σ" }, - { "sigmav", "ς" }, - { "tau", "τ" }, - { "Theta", "Θ" }, - { "theta", "θ" }, - { "thetav", "ϑ" }, - { "Upsi", "ϒ" }, - { "upsi", "υ" }, - { "Xi", "Ξ" }, - { "xi", "ξ" }, - { "zeta", "ζ" }, - { "Cfr", "ℭ" }, - { "Hfr", "ℌ" }, - { "Ifr", "ℑ" }, - { "Rfr", "ℜ" }, - { "Zfr", "ℨ" }, - { "Copf", "ℂ" }, - { "Hopf", "ℍ" }, - { "Nopf", "ℕ" }, - { "Popf", "ℙ" }, - { "Qopf", "ℚ" }, - { "Ropf", "ℝ" }, - { "Zopf", "ℤ" }, - { "Bscr", "ℬ" }, - { "Escr", "ℰ" }, - { "escr", "ℯ" }, - { "Fscr", "ℱ" }, - { "gscr", "ℊ" }, - { "Hscr", "ℋ" }, - { "Iscr", "ℐ" }, - { "Lscr", "ℒ" }, - { "Mscr", "ℳ" }, - { "oscr", "ℴ" }, - { "pscr", "𝓅" }, - { "Rscr", "ℛ" }, - { "acd", "∿" }, - { "aleph", "ℵ" }, - { "And", "⩓" }, - { "and", "∧" }, - { "andand", "⩕" }, - { "andd", "⩜" }, - { "andslope", "⩘" }, - { "andv", "⩚" }, - { "angrt", "∟" }, - { "angsph", "∢" }, - { "angst", "Å" }, - { "ap", "≈" }, - { "apacir", "⩯" }, - { "awconint", "∳" }, - { "awint", "⨑" }, - { "becaus", "∵" }, - { "bernou", "ℬ" }, - { "bne", "=⃥" }, - { "bnequiv", "≡⃥" }, - { "bNot", "⫭" }, - { "bnot", "⌐" }, - { "bottom", "⊥" }, - { "cap", "∩" }, - { "Cconint", "∰" }, - { "cirfnint", "⨐" }, - { "compfn", "∘" }, - { "cong", "≅" }, - { "Conint", "∯" }, - { "conint", "∮" }, - { "ctdot", "⋯" }, - { "cup", "∪" }, - { "cwconint", "∲" }, - { "cwint", "∱" }, - { "cylcty", "⌭" }, - { "disin", "⋲" }, - { "Dot", "¨" }, - { "DotDot", "⃜" }, - { "dsol", "⧶" }, - { "dtdot", "⋱" }, - { "dwangle", "⦦" }, - { "epar", "⋕" }, - { "eparsl", "⧣" }, - { "equiv", "≡" }, - { "eqvparsl", "⧥" }, - { "exist", "∃" }, - { "fnof", "ƒ" }, - { "forall", "∀" }, - { "fpartint", "⨍" }, - { "ge", "≥" }, - { "hamilt", "ℋ" }, - { "iff", "⇔" }, - { "iinfin", "⧜" }, - { "infin", "∞" }, - { "Int", "∬" }, - { "int", "∫" }, - { "intlarhk", "⨗" }, - { "isin", "∈" }, - { "isindot", "⋵" }, - { "isinE", "⋹" }, - { "isins", "⋴" }, - { "isinsv", "⋳" }, - { "isinv", "∈" }, - { "lagran", "ℒ" }, - { "Lang", "《" }, - { "lang", "〈" }, - { "lArr", "⇐" }, - { "lbbrk", "〔" }, - { "le", "≤" }, - { "loang", "〘" }, - { "lobrk", "〚" }, - { "lopar", "⦅" }, - { "lowast", "∗" }, - { "minus", "−" }, - { "mnplus", "∓" }, - { "nabla", "∇" }, - { "ne", "≠" }, - { "nedot", "≐̸" }, - { "nhpar", "⫲" }, - { "ni", "∋" }, - { "nis", "⋼" }, - { "nisd", "⋺" }, - { "niv", "∋" }, - { "Not", "⫬" }, - { "notin", "∉" }, - { "notindot", "⋵̸" }, - { "notinva", "∉" }, - { "notinvb", "⋷" }, - { "notinvc", "⋶" }, - { "notni", "∌" }, - { "notniva", "∌" }, - { "notnivb", "⋾" }, - { "notnivc", "⋽" }, - { "nparsl", "⫽⃥" }, - { "npart", "∂̸" }, - { "npolint", "⨔" }, - { "nvinfin", "⧞" }, - { "olcross", "⦻" }, - { "Or", "⩔" }, - { "or", "∨" }, - { "ord", "⩝" }, - { "order", "ℴ" }, - { "oror", "⩖" }, - { "orslope", "⩗" }, - { "orv", "⩛" }, - { "par", "∥" }, - { "parsl", "⫽" }, - { "part", "∂" }, - { "permil", "‰" }, - { "perp", "⊥" }, - { "pertenk", "‱" }, - { "phmmat", "ℳ" }, - { "pointint", "⨕" }, - { "Prime", "″" }, - { "prime", "′" }, - { "profalar", "⌮" }, - { "profline", "⌒" }, - { "profsurf", "⌓" }, - { "prop", "∝" }, - { "qint", "⨌" }, - { "qprime", "⁗" }, - { "quatint", "⨖" }, - { "radic", "√" }, - { "Rang", "》" }, - { "rang", "〉" }, - { "rArr", "⇒" }, - { "rbbrk", "〕" }, - { "roang", "〙" }, - { "robrk", "〛" }, - { "ropar", "⦆" }, - { "rppolint", "⨒" }, - { "scpolint", "⨓" }, - { "sim", "∼" }, - { "simdot", "⩪" }, - { "sime", "≃" }, - { "smeparsl", "⧤" }, - { "square", "□" }, - { "squarf", "▪" }, - { "sub", "⊂" }, - { "sube", "⊆" }, - { "sup", "⊃" }, - { "supe", "⊇" }, - { "tdot", "⃛" }, - { "there4", "∴" }, - { "tint", "∭" }, - { "top", "⊤" }, - { "topbot", "⌶" }, - { "topcir", "⫱" }, - { "tprime", "‴" }, - { "utdot", "⋰" }, - { "uwangle", "⦧" }, - { "vangrt", "⦜" }, - { "veeeq", "≚" }, - { "Verbar", "‖" }, - { "wedgeq", "≙" }, - { "xnis", "⋻" }, - { "boxDL", "╗" }, - { "boxDl", "╖" }, - { "boxdL", "╕" }, - { "boxdl", "┐" }, - { "boxDR", "╔" }, - { "boxDr", "╓" }, - { "boxdR", "╒" }, - { "boxdr", "┌" }, - { "boxH", "═" }, - { "boxh", "─" }, - { "boxHD", "╦" }, - { "boxHd", "╤" }, - { "boxhD", "╥" }, - { "boxhd", "┬" }, - { "boxHU", "╩" }, - { "boxHu", "╧" }, - { "boxhU", "╨" }, - { "boxhu", "┴" }, - { "boxUL", "╝" }, - { "boxUl", "╜" }, - { "boxuL", "╛" }, - { "boxul", "┘" }, - { "boxUR", "╚" }, - { "boxUr", "╙" }, - { "boxuR", "╘" }, - { "boxur", "└" }, - { "boxV", "║" }, - { "boxv", "│" }, - { "boxVH", "╬" }, - { "boxVh", "╫" }, - { "boxvH", "╪" }, - { "boxvh", "┼" }, - { "boxVL", "╣" }, - { "boxVl", "╢" }, - { "boxvL", "╡" }, - { "boxvl", "┤" }, - { "boxVR", "╠" }, - { "boxVr", "╟" }, - { "boxvR", "╞" }, - { "boxvr", "├" }, - { "Acy", "А" }, - { "acy", "а" }, - { "Bcy", "Б" }, - { "bcy", "б" }, - { "CHcy", "Ч" }, - { "chcy", "ч" }, - { "Dcy", "Д" }, - { "dcy", "д" }, - { "Ecy", "Э" }, - { "ecy", "э" }, - { "Fcy", "Ф" }, - { "fcy", "ф" }, - { "Gcy", "Г" }, - { "gcy", "г" }, - { "HARDcy", "Ъ" }, - { "hardcy", "ъ" }, - { "Icy", "И" }, - { "icy", "и" }, - { "IEcy", "Е" }, - { "iecy", "е" }, - { "IOcy", "Ё" }, - { "iocy", "ё" }, - { "Jcy", "Й" }, - { "jcy", "й" }, - { "Kcy", "К" }, - { "kcy", "к" }, - { "KHcy", "Х" }, - { "khcy", "х" }, - { "Lcy", "Л" }, - { "lcy", "л" }, - { "Mcy", "М" }, - { "mcy", "м" }, - { "Ncy", "Н" }, - { "ncy", "н" }, - { "numero", "№" }, - { "Ocy", "О" }, - { "ocy", "о" }, - { "Pcy", "П" }, - { "pcy", "п" }, - { "Rcy", "Р" }, - { "rcy", "р" }, - { "Scy", "С" }, - { "scy", "с" }, - { "SHCHcy", "Щ" }, - { "shchcy", "щ" }, - { "SHcy", "Ш" }, - { "shcy", "ш" }, - { "SOFTcy", "Ь" }, - { "softcy", "ь" }, - { "Tcy", "Т" }, - { "tcy", "т" }, - { "TScy", "Ц" }, - { "tscy", "ц" }, - { "Ucy", "У" }, - { "ucy", "у" }, - { "Vcy", "В" }, - { "vcy", "в" }, - { "YAcy", "Я" }, - { "yacy", "я" }, - { "Ycy", "Ы" }, - { "ycy", "ы" }, - { "YUcy", "Ю" }, - { "yucy", "ю" }, - { "Zcy", "З" }, - { "zcy", "з" }, - { "ZHcy", "Ж" }, - { "zhcy", "ж" }, - { "DJcy", "Ђ" }, - { "djcy", "ђ" }, - { "DScy", "Ѕ" }, - { "dscy", "ѕ" }, - { "DZcy", "Џ" }, - { "dzcy", "џ" }, - { "GJcy", "Ѓ" }, - { "gjcy", "ѓ" }, - { "Iukcy", "І" }, - { "iukcy", "і" }, - { "Jsercy", "Ј" }, - { "jsercy", "ј" }, - { "Jukcy", "Є" }, - { "jukcy", "є" }, - { "KJcy", "Ќ" }, - { "kjcy", "ќ" }, - { "LJcy", "Љ" }, - { "ljcy", "љ" }, - { "NJcy", "Њ" }, - { "njcy", "њ" }, - { "TSHcy", "Ћ" }, - { "tshcy", "ћ" }, - { "Ubrcy", "Ў" }, - { "ubrcy", "ў" }, - { "YIcy", "Ї" }, - { "yicy", "ї" }, - { "acute", "´" }, - { "breve", "˘" }, - { "caron", "ˇ" }, - { "cedil", "¸" }, - { "circ", "ˆ" }, - { "dblac", "˝" }, - { "die", "¨" }, - { "dot", "˙" }, - { "grave", "`" }, - { "macr", "¯" }, - { "ogon", "˛" }, - { "ring", "˚" }, - { "tilde", "˜" }, - { "uml", "¨" }, - { "Aacute", "Á" }, - { "aacute", "á" }, - { "Acirc", "Â" }, - { "acirc", "â" }, - { "AElig", "Æ" }, - { "aelig", "æ" }, - { "Agrave", "À" }, - { "agrave", "à" }, - { "Aring", "Å" }, - { "aring", "å" }, - { "Atilde", "Ã" }, - { "atilde", "ã" }, - { "Auml", "Ä" }, - { "auml", "ä" }, - { "Ccedil", "Ç" }, - { "ccedil", "ç" }, - { "Eacute", "É" }, - { "eacute", "é" }, - { "Ecirc", "Ê" }, - { "ecirc", "ê" }, - { "Egrave", "È" }, - { "egrave", "è" }, - { "ETH", "Ð" }, - { "eth", "ð" }, - { "Euml", "Ë" }, - { "euml", "ë" }, - { "Iacute", "Í" }, - { "iacute", "í" }, - { "Icirc", "Î" }, - { "icirc", "î" }, - { "Igrave", "Ì" }, - { "igrave", "ì" }, - { "Iuml", "Ï" }, - { "iuml", "ï" }, - { "Ntilde", "Ñ" }, - { "ntilde", "ñ" }, - { "Oacute", "Ó" }, - { "oacute", "ó" }, - { "Ocirc", "Ô" }, - { "ocirc", "ô" }, - { "Ograve", "Ò" }, - { "ograve", "ò" }, - { "Oslash", "Ø" }, - { "oslash", "ø" }, - { "Otilde", "Õ" }, - { "otilde", "õ" }, - { "Ouml", "Ö" }, - { "ouml", "ö" }, - { "szlig", "ß" }, - { "THORN", "Þ" }, - { "thorn", "þ" }, - { "Uacute", "Ú" }, - { "uacute", "ú" }, - { "Ucirc", "Û" }, - { "ucirc", "û" }, - { "Ugrave", "Ù" }, - { "ugrave", "ù" }, - { "Uuml", "Ü" }, - { "uuml", "ü" }, - { "Yacute", "Ý" }, - { "yacute", "ý" }, - { "yuml", "ÿ" }, - { "Abreve", "Ă" }, - { "abreve", "ă" }, - { "Amacr", "Ā" }, - { "amacr", "ā" }, - { "Aogon", "Ą" }, - { "aogon", "ą" }, - { "Cacute", "Ć" }, - { "cacute", "ć" }, - { "Ccaron", "Č" }, - { "ccaron", "č" }, - { "Ccirc", "Ĉ" }, - { "ccirc", "ĉ" }, - { "Cdot", "Ċ" }, - { "cdot", "ċ" }, - { "Dcaron", "Ď" }, - { "dcaron", "ď" }, - { "Dstrok", "Đ" }, - { "dstrok", "đ" }, - { "Ecaron", "Ě" }, - { "ecaron", "ě" }, - { "Edot", "Ė" }, - { "edot", "ė" }, - { "Emacr", "Ē" }, - { "emacr", "ē" }, - { "ENG", "Ŋ" }, - { "eng", "ŋ" }, - { "Eogon", "Ę" }, - { "eogon", "ę" }, - { "gacute", "ǵ" }, - { "Gbreve", "Ğ" }, - { "gbreve", "ğ" }, - { "Gcedil", "Ģ" }, - { "Gcirc", "Ĝ" }, - { "gcirc", "ĝ" }, - { "Gdot", "Ġ" }, - { "gdot", "ġ" }, - { "Hcirc", "Ĥ" }, - { "hcirc", "ĥ" }, - { "Hstrok", "Ħ" }, - { "hstrok", "ħ" }, - { "Idot", "İ" }, - { "IJlig", "IJ" }, - { "ijlig", "ij" }, - { "Imacr", "Ī" }, - { "imacr", "ī" }, - { "inodot", "ı" }, - { "Iogon", "Į" }, - { "iogon", "į" }, - { "Itilde", "Ĩ" }, - { "itilde", "ĩ" }, - { "Jcirc", "Ĵ" }, - { "jcirc", "ĵ" }, - { "Kcedil", "Ķ" }, - { "kcedil", "ķ" }, - { "kgreen", "ĸ" }, - { "Lacute", "Ĺ" }, - { "lacute", "ĺ" }, - { "Lcaron", "Ľ" }, - { "lcaron", "ľ" }, - { "Lcedil", "Ļ" }, - { "lcedil", "ļ" }, - { "Lmidot", "Ŀ" }, - { "lmidot", "ŀ" }, - { "Lstrok", "Ł" }, - { "lstrok", "ł" }, - { "Nacute", "Ń" }, - { "nacute", "ń" }, - { "napos", "ʼn" }, - { "Ncaron", "Ň" }, - { "ncaron", "ň" }, - { "Ncedil", "Ņ" }, - { "ncedil", "ņ" }, - { "Odblac", "Ő" }, - { "odblac", "ő" }, - { "OElig", "Œ" }, - { "oelig", "œ" }, - { "Omacr", "Ō" }, - { "omacr", "ō" }, - { "Racute", "Ŕ" }, - { "racute", "ŕ" }, - { "Rcaron", "Ř" }, - { "rcaron", "ř" }, - { "Rcedil", "Ŗ" }, - { "rcedil", "ŗ" }, - { "Sacute", "Ś" }, - { "sacute", "ś" }, - { "Scaron", "Š" }, - { "scaron", "š" }, - { "Scedil", "Ş" }, - { "scedil", "ş" }, - { "Scirc", "Ŝ" }, - { "scirc", "ŝ" }, - { "Tcaron", "Ť" }, - { "tcaron", "ť" }, - { "Tcedil", "Ţ" }, - { "tcedil", "ţ" }, - { "Tstrok", "Ŧ" }, - { "tstrok", "ŧ" }, - { "Ubreve", "Ŭ" }, - { "ubreve", "ŭ" }, - { "Udblac", "Ű" }, - { "udblac", "ű" }, - { "Umacr", "Ū" }, - { "umacr", "ū" }, - { "Uogon", "Ų" }, - { "uogon", "ų" }, - { "Uring", "Ů" }, - { "uring", "ů" }, - { "Utilde", "Ũ" }, - { "utilde", "ũ" }, - { "Wcirc", "Ŵ" }, - { "wcirc", "ŵ" }, - { "Ycirc", "Ŷ" }, - { "ycirc", "ŷ" }, - { "Yuml", "Ÿ" }, - { "Zacute", "Ź" }, - { "zacute", "ź" }, - { "Zcaron", "Ž" }, - { "zcaron", "ž" }, - { "Zdot", "Ż" }, - { "zdot", "ż" }, - { "apos", "'" }, - { "ast", "*" }, - { "brvbar", "¦" }, - { "bsol", "\" }, - { "cent", "¢" }, - { "colon", ":" }, - { "comma", "," }, - { "commat", "@" }, - { "copy", "©" }, - { "curren", "¤" }, - { "darr", "↓" }, - { "deg", "°" }, - { "divide", "÷" }, - { "dollar", "$" }, - { "equals", "=" }, - { "excl", "!" }, - { "frac12", "½" }, - { "frac14", "¼" }, - { "frac18", "⅛" }, - { "frac34", "¾" }, - { "frac38", "⅜" }, - { "frac58", "⅝" }, - { "frac78", "⅞" }, - { "gt", ">" }, - { "half", "½" }, - { "horbar", "―" }, - { "hyphen", "‐" }, - { "iexcl", "¡" }, - { "iquest", "¿" }, - { "laquo", "«" }, - { "larr", "←" }, - { "lcub", "{" }, - { "ldquo", "“" }, - { "lowbar", "_" }, - { "lpar", "(" }, - { "lsqb", "[" }, - { "lsquo", "‘" }, - { "lt", "<" }, - { "micro", "µ" }, - { "middot", "·" }, - { "nbsp", " " }, - { "not", "¬" }, - { "num", "#" }, - { "ohm", "Ω" }, - { "ordf", "ª" }, - { "ordm", "º" }, - { "para", "¶" }, - { "percnt", "%" }, - { "period", "." }, - { "plus", "+" }, - { "plusmn", "±" }, - { "pound", "£" }, - { "quest", "?" }, - { "quot", """ }, - { "raquo", "»" }, - { "rarr", "→" }, - { "rcub", "}" }, - { "rdquo", "”" }, - { "reg", "®" }, - { "rpar", ")" }, - { "rsqb", "]" }, - { "rsquo", "’" }, - { "sect", "§" }, - { "semi", ";" }, - { "shy", "­" }, - { "sol", "/" }, - { "sung", "♪" }, - { "sup1", "¹" }, - { "sup2", "²" }, - { "sup3", "³" }, - { "times", "×" }, - { "trade", "™" }, - { "uarr", "↑" }, - { "verbar", "|" }, - { "yen", "¥" }, - { "blank", "␣" }, - { "blk12", "▒" }, - { "blk14", "░" }, - { "blk34", "▓" }, - { "block", "█" }, - { "bull", "•" }, - { "caret", "⁁" }, - { "check", "✓" }, - { "cir", "○" }, - { "clubs", "♣" }, - { "copysr", "℗" }, - { "cross", "✗" }, - { "Dagger", "‡" }, - { "dagger", "†" }, - { "dash", "‐" }, - { "diams", "♦" }, - { "dlcrop", "⌍" }, - { "drcrop", "⌌" }, - { "dtri", "▿" }, - { "dtrif", "▾" }, - { "emsp", " " }, - { "emsp13", " " }, - { "emsp14", " " }, - { "ensp", " " }, - { "female", "♀" }, - { "ffilig", "ffi" }, - { "fflig", "ff" }, - { "ffllig", "ffl" }, - { "filig", "fi" }, - { "flat", "♭" }, - { "fllig", "fl" }, - { "frac13", "⅓" }, - { "frac15", "⅕" }, - { "frac16", "⅙" }, - { "frac23", "⅔" }, - { "frac25", "⅖" }, - { "frac35", "⅗" }, - { "frac45", "⅘" }, - { "frac56", "⅚" }, - { "hairsp", " " }, - { "hearts", "♥" }, - { "hellip", "…" }, - { "hybull", "⁃" }, - { "incare", "℅" }, - { "ldquor", "„" }, - { "lhblk", "▄" }, - { "loz", "◊" }, - { "lozf", "⧫" }, - { "lsquor", "‚" }, - { "ltri", "◃" }, - { "ltrif", "◂" }, - { "male", "♂" }, - { "malt", "✠" }, - { "marker", "▮" }, - { "mdash", "—" }, - { "mldr", "…" }, - { "natur", "♮" }, - { "ndash", "–" }, - { "nldr", "‥" }, - { "numsp", " " }, - { "phone", "☎" }, - { "puncsp", " " }, - { "rdquor", "”" }, - { "rect", "▭" }, - { "rsquor", "’" }, - { "rtri", "▹" }, - { "rtrif", "▸" }, - { "rx", "℞" }, - { "sext", "✶" }, - { "sharp", "♯" }, - { "spades", "♠" }, - { "squ", "□" }, - { "squf", "▪" }, - { "star", "☆" }, - { "starf", "★" }, - { "target", "⌖" }, - { "telrec", "⌕" }, - { "thinsp", " " }, - { "uhblk", "▀" }, - { "ulcrop", "⌏" }, - { "urcrop", "⌎" }, - { "utri", "▵" }, - { "utrif", "▴" }, - { "vellip", "⋮" }, - { "af", "⁡" }, - { "asympeq", "≍" }, - { "Cross", "⨯" }, - { "DD", "ⅅ" }, - { "dd", "ⅆ" }, - { "DownArrowBar", "⤓" }, - { "DownBreve", "̑" }, - { "DownLeftRightVector", "⥐" }, - { "DownLeftTeeVector", "⥞" }, - { "DownLeftVectorBar", "⥖" }, - { "DownRightTeeVector", "⥟" }, - { "DownRightVectorBar", "⥗" }, - { "ee", "ⅇ" }, - { "EmptySmallSquare", "◻" }, - { "EmptyVerySmallSquare", "▫" }, - { "Equal", "⩵" }, - { "FilledSmallSquare", "◼" }, - { "FilledVerySmallSquare", "▪" }, - { "GreaterGreater", "⪢" }, - { "Hat", "^" }, - { "HorizontalLine", "─" }, - { "ic", "⁣" }, - { "ii", "ⅈ" }, - { "it", "⁢" }, - { "larrb", "⇤" }, - { "LeftDownTeeVector", "⥡" }, - { "LeftDownVectorBar", "⥙" }, - { "LeftRightVector", "⥎" }, - { "LeftTeeVector", "⥚" }, - { "LeftTriangleBar", "⧏" }, - { "LeftUpDownVector", "⥑" }, - { "LeftUpTeeVector", "⥠" }, - { "LeftUpVectorBar", "⥘" }, - { "LeftVectorBar", "⥒" }, - { "LessLess", "⪡" }, - { "mapstodown", "↧" }, - { "mapstoleft", "↤" }, - { "mapstoup", "↥" }, - { "MediumSpace", " " }, - { "nbump", "≎̸" }, - { "nbumpe", "≏̸" }, - { "nesim", "≂̸" }, - { "NewLine", " " }, - { "NoBreak", "⁠" }, - { "NotCupCap", "≭" }, - { "NotHumpEqual", "≏̸" }, - { "NotLeftTriangleBar", "⧏̸" }, - { "NotNestedGreaterGreater", "⪢̸" }, - { "NotNestedLessLess", "⪡̸" }, - { "NotRightTriangleBar", "⧐̸" }, - { "NotSquareSubset", "⊏̸" }, - { "NotSquareSuperset", "⊐̸" }, - { "NotSucceedsTilde", "≿̸" }, - { "OverBar", "¯" }, - { "OverBrace", "︷" }, - { "OverBracket", "⎴" }, - { "OverParenthesis", "︵" }, - { "planckh", "ℎ" }, - { "Product", "∏" }, - { "rarrb", "⇥" }, - { "RightDownTeeVector", "⥝" }, - { "RightDownVectorBar", "⥕" }, - { "RightTeeVector", "⥛" }, - { "RightTriangleBar", "⧐" }, - { "RightUpDownVector", "⥏" }, - { "RightUpTeeVector", "⥜" }, - { "RightUpVectorBar", "⥔" }, - { "RightVectorBar", "⥓" }, - { "RoundImplies", "⥰" }, - { "RuleDelayed", "⧴" }, - { "Tab", " " }, - { "ThickSpace", "   " }, - { "UnderBar", "̲" }, - { "UnderBrace", "︸" }, - { "UnderBracket", "⎵" }, - { "UnderParenthesis", "︶" }, - { "UpArrowBar", "⤒" }, - { "Upsilon", "Υ" }, - { "VerticalLine", "|" }, - { "VerticalSeparator", "❘" }, - { "ZeroWidthSpace", "​" }, - { "angle", "∠" }, - { "ApplyFunction", "⁡" }, - { "approx", "≈" }, - { "approxeq", "≊" }, - { "Assign", "≔" }, - { "backcong", "≌" }, - { "backepsilon", "϶" }, - { "backprime", "‵" }, - { "backsim", "∽" }, - { "backsimeq", "⋍" }, - { "Backslash", "∖" }, - { "barwedge", "⌅" }, - { "Because", "∵" }, - { "because", "∵" }, - { "Bernoullis", "ℬ" }, - { "between", "≬" }, - { "bigcap", "⋂" }, - { "bigcirc", "◯" }, - { "bigcup", "⋃" }, - { "bigodot", "⨀" }, - { "bigoplus", "⨁" }, - { "bigotimes", "⨂" }, - { "bigsqcup", "⨆" }, - { "bigstar", "★" }, - { "bigtriangledown", "▽" }, - { "bigtriangleup", "△" }, - { "biguplus", "⨄" }, - { "bigvee", "⋁" }, - { "bigwedge", "⋀" }, - { "bkarow", "⤍" }, - { "blacklozenge", "⧫" }, - { "blacksquare", "▪" }, - { "blacktriangle", "▴" }, - { "blacktriangledown", "▾" }, - { "blacktriangleleft", "◂" }, - { "blacktriangleright", "▸" }, - { "bot", "⊥" }, - { "boxminus", "⊟" }, - { "boxplus", "⊞" }, - { "boxtimes", "⊠" }, - { "Breve", "˘" }, - { "bullet", "•" }, - { "Bumpeq", "≎" }, - { "bumpeq", "≏" }, - { "CapitalDifferentialD", "ⅅ" }, - { "Cayleys", "ℭ" }, - { "Cedilla", "¸" }, - { "CenterDot", "·" }, - { "centerdot", "·" }, - { "checkmark", "✓" }, - { "circeq", "≗" }, - { "circlearrowleft", "↺" }, - { "circlearrowright", "↻" }, - { "circledast", "⊛" }, - { "circledcirc", "⊚" }, - { "circleddash", "⊝" }, - { "CircleDot", "⊙" }, - { "circledR", "®" }, - { "circledS", "Ⓢ" }, - { "CircleMinus", "⊖" }, - { "CirclePlus", "⊕" }, - { "CircleTimes", "⊗" }, - { "ClockwiseContourIntegral", "∲" }, - { "CloseCurlyDoubleQuote", "”" }, - { "CloseCurlyQuote", "’" }, - { "clubsuit", "♣" }, - { "coloneq", "≔" }, - { "complement", "∁" }, - { "complexes", "ℂ" }, - { "Congruent", "≡" }, - { "ContourIntegral", "∮" }, - { "Coproduct", "∐" }, - { "CounterClockwiseContourIntegral", "∳" }, - { "CupCap", "≍" }, - { "curlyeqprec", "⋞" }, - { "curlyeqsucc", "⋟" }, - { "curlyvee", "⋎" }, - { "curlywedge", "⋏" }, - { "curvearrowleft", "↶" }, - { "curvearrowright", "↷" }, - { "dbkarow", "⤏" }, - { "ddagger", "‡" }, - { "ddotseq", "⩷" }, - { "Del", "∇" }, - { "DiacriticalAcute", "´" }, - { "DiacriticalDot", "˙" }, - { "DiacriticalDoubleAcute", "˝" }, - { "DiacriticalGrave", "`" }, - { "DiacriticalTilde", "˜" }, - { "Diamond", "⋄" }, - { "diamond", "⋄" }, - { "diamondsuit", "♦" }, - { "DifferentialD", "ⅆ" }, - { "digamma", "ϝ" }, - { "div", "÷" }, - { "divideontimes", "⋇" }, - { "doteq", "≐" }, - { "doteqdot", "≑" }, - { "DotEqual", "≐" }, - { "dotminus", "∸" }, - { "dotplus", "∔" }, - { "dotsquare", "⊡" }, - { "doublebarwedge", "⌆" }, - { "DoubleContourIntegral", "∯" }, - { "DoubleDot", "¨" }, - { "DoubleDownArrow", "⇓" }, - { "DoubleLeftArrow", "⇐" }, - { "DoubleLeftRightArrow", "⇔" }, - { "DoubleLeftTee", "⫤" }, - { "DoubleLongLeftArrow", "⟸" }, - { "DoubleLongLeftRightArrow", "⟺" }, - { "DoubleLongRightArrow", "⟹" }, - { "DoubleRightArrow", "⇒" }, - { "DoubleRightTee", "⊨" }, - { "DoubleUpArrow", "⇑" }, - { "DoubleUpDownArrow", "⇕" }, - { "DoubleVerticalBar", "∥" }, - { "DownArrow", "↓" }, - { "Downarrow", "⇓" }, - { "downarrow", "↓" }, - { "DownArrowUpArrow", "⇵" }, - { "downdownarrows", "⇊" }, - { "downharpoonleft", "⇃" }, - { "downharpoonright", "⇂" }, - { "DownLeftVector", "↽" }, - { "DownRightVector", "⇁" }, - { "DownTee", "⊤" }, - { "DownTeeArrow", "↧" }, - { "drbkarow", "⤐" }, - { "Element", "∈" }, - { "emptyset", "∅" }, - { "eqcirc", "≖" }, - { "eqcolon", "≕" }, - { "eqsim", "≂" }, - { "eqslantgtr", "⪖" }, - { "eqslantless", "⪕" }, - { "EqualTilde", "≂" }, - { "Equilibrium", "⇌" }, - { "Exists", "∃" }, - { "expectation", "ℰ" }, - { "ExponentialE", "ⅇ" }, - { "exponentiale", "ⅇ" }, - { "fallingdotseq", "≒" }, - { "ForAll", "∀" }, - { "Fouriertrf", "ℱ" }, - { "geq", "≥" }, - { "geqq", "≧" }, - { "geqslant", "⩾" }, - { "gg", "≫" }, - { "ggg", "⋙" }, - { "gnapprox", "⪊" }, - { "gneq", "⪈" }, - { "gneqq", "≩" }, - { "GreaterEqual", "≥" }, - { "GreaterEqualLess", "⋛" }, - { "GreaterFullEqual", "≧" }, - { "GreaterLess", "≷" }, - { "GreaterSlantEqual", "⩾" }, - { "GreaterTilde", "≳" }, - { "gtrapprox", "⪆" }, - { "gtrdot", "⋗" }, - { "gtreqless", "⋛" }, - { "gtreqqless", "⪌" }, - { "gtrless", "≷" }, - { "gtrsim", "≳" }, - { "gvertneqq", "≩︀" }, - { "Hacek", "ˇ" }, - { "hbar", "ℏ" }, - { "heartsuit", "♥" }, - { "HilbertSpace", "ℋ" }, - { "hksearow", "⤥" }, - { "hkswarow", "⤦" }, - { "hookleftarrow", "↩" }, - { "hookrightarrow", "↪" }, - { "hslash", "ℏ" }, - { "HumpDownHump", "≎" }, - { "HumpEqual", "≏" }, - { "iiiint", "⨌" }, - { "iiint", "∭" }, - { "Im", "ℑ" }, - { "ImaginaryI", "ⅈ" }, - { "imagline", "ℐ" }, - { "imagpart", "ℑ" }, - { "Implies", "⇒" }, - { "in", "∈" }, - { "integers", "ℤ" }, - { "Integral", "∫" }, - { "intercal", "⊺" }, - { "Intersection", "⋂" }, - { "intprod", "⨼" }, - { "InvisibleComma", "⁣" }, - { "InvisibleTimes", "⁢" }, - { "langle", "〈" }, - { "Laplacetrf", "ℒ" }, - { "lbrace", "{" }, - { "lbrack", "[" }, - { "LeftAngleBracket", "〈" }, - { "LeftArrow", "←" }, - { "Leftarrow", "⇐" }, - { "leftarrow", "←" }, - { "LeftArrowBar", "⇤" }, - { "LeftArrowRightArrow", "⇆" }, - { "leftarrowtail", "↢" }, - { "LeftCeiling", "⌈" }, - { "LeftDoubleBracket", "〚" }, - { "LeftDownVector", "⇃" }, - { "LeftFloor", "⌊" }, - { "leftharpoondown", "↽" }, - { "leftharpoonup", "↼" }, - { "leftleftarrows", "⇇" }, - { "LeftRightArrow", "↔" }, - { "Leftrightarrow", "⇔" }, - { "leftrightarrow", "↔" }, - { "leftrightarrows", "⇆" }, - { "leftrightharpoons", "⇋" }, - { "leftrightsquigarrow", "↭" }, - { "LeftTee", "⊣" }, - { "LeftTeeArrow", "↤" }, - { "leftthreetimes", "⋋" }, - { "LeftTriangle", "⊲" }, - { "LeftTriangleEqual", "⊴" }, - { "LeftUpVector", "↿" }, - { "LeftVector", "↼" }, - { "leq", "≤" }, - { "leqq", "≦" }, - { "leqslant", "⩽" }, - { "lessapprox", "⪅" }, - { "lessdot", "⋖" }, - { "lesseqgtr", "⋚" }, - { "lesseqqgtr", "⪋" }, - { "LessEqualGreater", "⋚" }, - { "LessFullEqual", "≦" }, - { "LessGreater", "≶" }, - { "lessgtr", "≶" }, - { "lesssim", "≲" }, - { "LessSlantEqual", "⩽" }, - { "LessTilde", "≲" }, - { "ll", "≪" }, - { "llcorner", "⌞" }, - { "Lleftarrow", "⇚" }, - { "lmoustache", "⎰" }, - { "lnapprox", "⪉" }, - { "lneq", "⪇" }, - { "lneqq", "≨" }, - { "LongLeftArrow", "⟵" }, - { "Longleftarrow", "⟸" }, - { "longleftarrow", "⟵" }, - { "LongLeftRightArrow", "⟷" }, - { "Longleftrightarrow", "⟺" }, - { "longleftrightarrow", "⟷" }, - { "longmapsto", "⟼" }, - { "LongRightArrow", "⟶" }, - { "Longrightarrow", "⟹" }, - { "longrightarrow", "⟶" }, - { "looparrowleft", "↫" }, - { "looparrowright", "↬" }, - { "LowerLeftArrow", "↙" }, - { "LowerRightArrow", "↘" }, - { "lozenge", "◊" }, - { "lrcorner", "⌟" }, - { "Lsh", "↰" }, - { "lvertneqq", "≨︀" }, - { "maltese", "✠" }, - { "mapsto", "↦" }, - { "measuredangle", "∡" }, - { "Mellintrf", "ℳ" }, - { "MinusPlus", "∓" }, - { "mp", "∓" }, - { "multimap", "⊸" }, - { "napprox", "≉" }, - { "natural", "♮" }, - { "naturals", "ℕ" }, - { "nearrow", "↗" }, - { "NegativeMediumSpace", "​" }, - { "NegativeThickSpace", "​" }, - { "NegativeThinSpace", "​" }, - { "NegativeVeryThinSpace", "​" }, - { "NestedGreaterGreater", "≫" }, - { "NestedLessLess", "≪" }, - { "nexists", "∄" }, - { "ngeq", "≱" }, - { "ngeqq", "≧̸" }, - { "ngeqslant", "⩾̸" }, - { "ngtr", "≯" }, - { "nLeftarrow", "⇍" }, - { "nleftarrow", "↚" }, - { "nLeftrightarrow", "⇎" }, - { "nleftrightarrow", "↮" }, - { "nleq", "≰" }, - { "nleqq", "≦̸" }, - { "nleqslant", "⩽̸" }, - { "nless", "≮" }, - { "NonBreakingSpace", " " }, - { "NotCongruent", "≢" }, - { "NotDoubleVerticalBar", "∦" }, - { "NotElement", "∉" }, - { "NotEqual", "≠" }, - { "NotEqualTilde", "≂̸" }, - { "NotExists", "∄" }, - { "NotGreater", "≯" }, - { "NotGreaterEqual", "≱" }, - { "NotGreaterFullEqual", "≦̸" }, - { "NotGreaterGreater", "≫̸" }, - { "NotGreaterLess", "≹" }, - { "NotGreaterSlantEqual", "⩾̸" }, - { "NotGreaterTilde", "≵" }, - { "NotHumpDownHump", "≎̸" }, - { "NotLeftTriangle", "⋪" }, - { "NotLeftTriangleEqual", "⋬" }, - { "NotLess", "≮" }, - { "NotLessEqual", "≰" }, - { "NotLessGreater", "≸" }, - { "NotLessLess", "≪̸" }, - { "NotLessSlantEqual", "⩽̸" }, - { "NotLessTilde", "≴" }, - { "NotPrecedes", "⊀" }, - { "NotPrecedesEqual", "⪯̸" }, - { "NotPrecedesSlantEqual", "⋠" }, - { "NotReverseElement", "∌" }, - { "NotRightTriangle", "⋫" }, - { "NotRightTriangleEqual", "⋭" }, - { "NotSquareSubsetEqual", "⋢" }, - { "NotSquareSupersetEqual", "⋣" }, - { "NotSubset", "⊂⃒" }, - { "NotSubsetEqual", "⊈" }, - { "NotSucceeds", "⊁" }, - { "NotSucceedsEqual", "⪰̸" }, - { "NotSucceedsSlantEqual", "⋡" }, - { "NotSuperset", "⊃⃒" }, - { "NotSupersetEqual", "⊉" }, - { "NotTilde", "≁" }, - { "NotTildeEqual", "≄" }, - { "NotTildeFullEqual", "≇" }, - { "NotTildeTilde", "≉" }, - { "NotVerticalBar", "∤" }, - { "nparallel", "∦" }, - { "nprec", "⊀" }, - { "npreceq", "⪯̸" }, - { "nRightarrow", "⇏" }, - { "nrightarrow", "↛" }, - { "nshortmid", "∤" }, - { "nshortparallel", "∦" }, - { "nsimeq", "≄" }, - { "nsubset", "⊂⃒" }, - { "nsubseteq", "⊈" }, - { "nsubseteqq", "⫅̸" }, - { "nsucc", "⊁" }, - { "nsucceq", "⪰̸" }, - { "nsupset", "⊃⃒" }, - { "nsupseteq", "⊉" }, - { "nsupseteqq", "⫆̸" }, - { "ntriangleleft", "⋪" }, - { "ntrianglelefteq", "⋬" }, - { "ntriangleright", "⋫" }, - { "ntrianglerighteq", "⋭" }, - { "nwarrow", "↖" }, - { "oint", "∮" }, - { "OpenCurlyDoubleQuote", "“" }, - { "OpenCurlyQuote", "‘" }, - { "orderof", "ℴ" }, - { "parallel", "∥" }, - { "PartialD", "∂" }, - { "pitchfork", "⋔" }, - { "PlusMinus", "±" }, - { "pm", "±" }, - { "Poincareplane", "ℌ" }, - { "prec", "≺" }, - { "precapprox", "⪷" }, - { "preccurlyeq", "≼" }, - { "Precedes", "≺" }, - { "PrecedesEqual", "⪯" }, - { "PrecedesSlantEqual", "≼" }, - { "PrecedesTilde", "≾" }, - { "preceq", "⪯" }, - { "precnapprox", "⪹" }, - { "precneqq", "⪵" }, - { "precnsim", "⋨" }, - { "precsim", "≾" }, - { "primes", "ℙ" }, - { "Proportion", "∷" }, - { "Proportional", "∝" }, - { "propto", "∝" }, - { "quaternions", "ℍ" }, - { "questeq", "≟" }, - { "rangle", "〉" }, - { "rationals", "ℚ" }, - { "rbrace", "}" }, - { "rbrack", "]" }, - { "Re", "ℜ" }, - { "realine", "ℛ" }, - { "realpart", "ℜ" }, - { "reals", "ℝ" }, - { "ReverseElement", "∋" }, - { "ReverseEquilibrium", "⇋" }, - { "ReverseUpEquilibrium", "⥯" }, - { "RightAngleBracket", "〉" }, - { "RightArrow", "→" }, - { "Rightarrow", "⇒" }, - { "rightarrow", "→" }, - { "RightArrowBar", "⇥" }, - { "RightArrowLeftArrow", "⇄" }, - { "rightarrowtail", "↣" }, - { "RightCeiling", "⌉" }, - { "RightDoubleBracket", "〛" }, - { "RightDownVector", "⇂" }, - { "RightFloor", "⌋" }, - { "rightharpoondown", "⇁" }, - { "rightharpoonup", "⇀" }, - { "rightleftarrows", "⇄" }, - { "rightleftharpoons", "⇌" }, - { "rightrightarrows", "⇉" }, - { "rightsquigarrow", "↝" }, - { "RightTee", "⊢" }, - { "RightTeeArrow", "↦" }, - { "rightthreetimes", "⋌" }, - { "RightTriangle", "⊳" }, - { "RightTriangleEqual", "⊵" }, - { "RightUpVector", "↾" }, - { "RightVector", "⇀" }, - { "risingdotseq", "≓" }, - { "rmoustache", "⎱" }, - { "Rrightarrow", "⇛" }, - { "Rsh", "↱" }, - { "searrow", "↘" }, - { "setminus", "∖" }, - { "ShortDownArrow", "↓" }, - { "ShortLeftArrow", "←" }, - { "shortmid", "∣" }, - { "shortparallel", "∥" }, - { "ShortRightArrow", "→" }, - { "ShortUpArrow", "↑" }, - { "simeq", "≃" }, - { "SmallCircle", "∘" }, - { "smallsetminus", "∖" }, - { "spadesuit", "♠" }, - { "Sqrt", "√" }, - { "sqsubset", "⊏" }, - { "sqsubseteq", "⊑" }, - { "sqsupset", "⊐" }, - { "sqsupseteq", "⊒" }, - { "Square", "□" }, - { "SquareIntersection", "⊓" }, - { "SquareSubset", "⊏" }, - { "SquareSubsetEqual", "⊑" }, - { "SquareSuperset", "⊐" }, - { "SquareSupersetEqual", "⊒" }, - { "SquareUnion", "⊔" }, - { "Star", "⋆" }, - { "straightepsilon", "ε" }, - { "straightphi", "ϕ" }, - { "Subset", "⋐" }, - { "subset", "⊂" }, - { "subseteq", "⊆" }, - { "subseteqq", "⫅" }, - { "SubsetEqual", "⊆" }, - { "subsetneq", "⊊" }, - { "subsetneqq", "⫋" }, - { "succ", "≻" }, - { "succapprox", "⪸" }, - { "succcurlyeq", "≽" }, - { "Succeeds", "≻" }, - { "SucceedsEqual", "⪰" }, - { "SucceedsSlantEqual", "≽" }, - { "SucceedsTilde", "≿" }, - { "succeq", "⪰" }, - { "succnapprox", "⪺" }, - { "succneqq", "⪶" }, - { "succnsim", "⋩" }, - { "succsim", "≿" }, - { "SuchThat", "∋" }, - { "Sum", "∑" }, - { "Superset", "⊃" }, - { "SupersetEqual", "⊇" }, - { "Supset", "⋑" }, - { "supset", "⊃" }, - { "supseteq", "⊇" }, - { "supseteqq", "⫆" }, - { "supsetneq", "⊋" }, - { "supsetneqq", "⫌" }, - { "swarrow", "↙" }, - { "Therefore", "∴" }, - { "therefore", "∴" }, - { "thickapprox", "≈" }, - { "thicksim", "∼" }, - { "ThinSpace", " " }, - { "Tilde", "∼" }, - { "TildeEqual", "≃" }, - { "TildeFullEqual", "≅" }, - { "TildeTilde", "≈" }, - { "toea", "⤨" }, - { "tosa", "⤩" }, - { "triangle", "▵" }, - { "triangledown", "▿" }, - { "triangleleft", "◃" }, - { "trianglelefteq", "⊴" }, - { "triangleq", "≜" }, - { "triangleright", "▹" }, - { "trianglerighteq", "⊵" }, - { "TripleDot", "⃛" }, - { "twoheadleftarrow", "↞" }, - { "twoheadrightarrow", "↠" }, - { "ulcorner", "⌜" }, - { "Union", "⋃" }, - { "UnionPlus", "⊎" }, - { "UpArrow", "↑" }, - { "Uparrow", "⇑" }, - { "uparrow", "↑" }, - { "UpArrowDownArrow", "⇅" }, - { "UpDownArrow", "↕" }, - { "Updownarrow", "⇕" }, - { "updownarrow", "↕" }, - { "UpEquilibrium", "⥮" }, - { "upharpoonleft", "↿" }, - { "upharpoonright", "↾" }, - { "UpperLeftArrow", "↖" }, - { "UpperRightArrow", "↗" }, - { "upsilon", "υ" }, - { "UpTee", "⊥" }, - { "UpTeeArrow", "↥" }, - { "upuparrows", "⇈" }, - { "urcorner", "⌝" }, - { "varepsilon", "ɛ" }, - { "varkappa", "ϰ" }, - { "varnothing", "∅" }, - { "varphi", "φ" }, - { "varpi", "ϖ" }, - { "varpropto", "∝" }, - { "varrho", "ϱ" }, - { "varsigma", "ς" }, - { "varsubsetneq", "⊊︀" }, - { "varsubsetneqq", "⫋︀" }, - { "varsupsetneq", "⊋︀" }, - { "varsupsetneqq", "⫌︀" }, - { "vartheta", "ϑ" }, - { "vartriangleleft", "⊲" }, - { "vartriangleright", "⊳" }, - { "Vee", "⋁" }, - { "vee", "∨" }, - { "Vert", "‖" }, - { "vert", "|" }, - { "VerticalBar", "∣" }, - { "VerticalTilde", "≀" }, - { "VeryThinSpace", " " }, - { "Wedge", "⋀" }, - { "wedge", "∧" }, - { "wp", "℘" }, - { "wr", "≀" }, - { "zeetrf", "ℨ" }, - { 0, 0 } -}; - -// ******************************************************************* -// MmlDocument -// ******************************************************************* - -QString MmlDocument::fontName(QtMmlWidget::MmlFont type) const -{ - switch (type) { - case QtMmlWidget::NormalFont: - return m_normal_font_name; - case QtMmlWidget::FrakturFont: - return m_fraktur_font_name; - case QtMmlWidget::SansSerifFont: - return m_sans_serif_font_name; - case QtMmlWidget::ScriptFont: - return m_script_font_name; - case QtMmlWidget::MonospaceFont: - return m_monospace_font_name; - case QtMmlWidget::DoublestruckFont: - return m_doublestruck_font_name; - }; - - return QString::null; -} - -void MmlDocument::setFontName(QtMmlWidget::MmlFont type, const QString &name) -{ - switch (type) { - case QtMmlWidget::NormalFont: - m_normal_font_name = name; - break; - case QtMmlWidget::FrakturFont: - m_fraktur_font_name = name; - break; - case QtMmlWidget::SansSerifFont: - m_sans_serif_font_name = name; - break; - case QtMmlWidget::ScriptFont: - m_script_font_name = name; - break; - case QtMmlWidget::MonospaceFont: - m_monospace_font_name = name; - break; - case QtMmlWidget::DoublestruckFont: - m_doublestruck_font_name = name; - break; - }; -} - -Mml::NodeType domToMmlNodeType(const QDomNode &dom_node) -{ - Mml::NodeType mml_type = Mml::NoNode; - - switch (dom_node.nodeType()) { - case QDomNode::ElementNode: { - QString tag = dom_node.nodeName(); - const NodeSpec *spec = mmlFindNodeSpec(tag); - - // treat urecognised tags as mrow - if (spec == 0) - mml_type = Mml::UnknownNode; - else - mml_type = spec->type; - - break; - } - case QDomNode::TextNode: - mml_type = Mml::TextNode; - break; - - case QDomNode::DocumentNode: - mml_type = Mml::MrowNode; - break; - - case QDomNode::EntityReferenceNode: -// qWarning("EntityReferenceNode: name=\"" + dom_node.nodeName() + "\" value=\"" + dom_node.nodeValue() + "\""); - break; - - case QDomNode::AttributeNode: - case QDomNode::CDATASectionNode: - case QDomNode::EntityNode: - case QDomNode::ProcessingInstructionNode: - case QDomNode::CommentNode: - case QDomNode::DocumentTypeNode: - case QDomNode::DocumentFragmentNode: - case QDomNode::NotationNode: - case QDomNode::BaseNode: - case QDomNode::CharacterDataNode: - break; - } - - return mml_type; -} - - -MmlDocument::MmlDocument() -{ - m_root_node = 0; - - // Some defaults which happen to work on my computer, - // but probably won't work on other's -#if defined(Q_WS_WIN) - m_normal_font_name = "Times New Roman"; -#else - m_normal_font_name = "Century Schoolbook L"; -#endif - m_fraktur_font_name = "Fraktur"; - m_sans_serif_font_name = "Luxi Sans"; - m_script_font_name = "Urw Chancery L"; - m_monospace_font_name = "Luxi Mono"; - m_doublestruck_font_name = "Doublestruck"; - m_base_font_point_size = 16; - m_foreground_color = Qt::black; - m_background_color = Qt::white; -} - -MmlDocument::~MmlDocument() -{ - clear(); -} - -void MmlDocument::clear() -{ - delete m_root_node; - m_root_node = 0; -} - -void MmlDocument::dump() const -{ - if (m_root_node == 0) - return; - - QString indent; - _dump(m_root_node, indent); -} - -void MmlDocument::_dump(const MmlNode *node, QString &indent) const -{ - if (node == 0) return; - - qWarning("%s", qPrintable(QString(indent + node->toStr()))); - - indent += " "; - const MmlNode *child = node->firstChild(); - for (; child != 0; child = child->nextSibling()) - _dump(child, indent); - indent.truncate(indent.length() - 2); -} - -bool MmlDocument::setContent(QString text, QString *errorMsg, - int *errorLine, int *errorColumn) -{ - clear(); - - QString prefix = "\n"; - prefix.append(entityDeclarations()); - - uint prefix_lines = 0; - for (int i = 0; i < prefix.length(); ++i) { - if (prefix.at(i) == '\n') - ++prefix_lines; - } - - QDomDocument dom; - if (!dom.setContent(prefix + text, false, errorMsg, errorLine, errorColumn)) { - if (errorLine != 0) - *errorLine -= prefix_lines; - return false; - } - - // we don't have access to line info from now on - if (errorLine != 0) *errorLine = -1; - if (errorColumn != 0) *errorColumn = -1; - - bool ok; - MmlNode *root_node = domToMml(dom, &ok, errorMsg); - if (!ok) - return false; - - if (root_node == 0) { - if (errorMsg != 0) - *errorMsg = "empty document"; - return false; - } - - insertChild(0, root_node, 0); - layout(); - -/* QFile of("/tmp/dump.xml"); - of.open(IO_WriteOnly); - QTextStream os(&of); - os.setEncoding(QTextStream::UnicodeUTF8); - os << dom.toString(); */ - - return true; -} - -void MmlDocument::layout() -{ - if (m_root_node == 0) - return; - - m_root_node->layout(); - m_root_node->stretch(); -// dump(); -} - -bool MmlDocument::insertChild(MmlNode *parent, MmlNode *new_node, - QString *errorMsg) -{ - if (new_node == 0) - return true; - - Q_ASSERT(new_node->parent() == 0 - && new_node->nextSibling() == 0 - && new_node->previousSibling() == 0); - - if (parent != 0) { - if (!mmlCheckChildType(parent->nodeType(), new_node->nodeType(), errorMsg)) - return false; - } - - if (parent == 0) { - if (m_root_node == 0) - m_root_node = new_node; - else { - MmlNode *n = m_root_node->lastSibling(); - n->m_next_sibling = new_node; - new_node->m_previous_sibling = n; - } - } - else { - new_node->m_parent = parent; - if (parent->hasChildNodes()) { - MmlNode *n = parent->firstChild()->lastSibling(); - n->m_next_sibling = new_node; - new_node->m_previous_sibling = n; - } - else parent->m_first_child = new_node; - } - - return true; -} - -MmlNode *MmlDocument::createNode(NodeType type, - const MmlAttributeMap &mml_attr, - const QString &mml_value, - QString *errorMsg) -{ - Q_ASSERT(type != NoNode); - - MmlNode *mml_node = 0; - - if (!mmlCheckAttributes(type, mml_attr, errorMsg)) - return 0; - - switch (type) { - case MiNode: - mml_node = new MmlMiNode(this, mml_attr); - break; - case MnNode: - mml_node = new MmlMnNode(this, mml_attr); - break; - case MfracNode: - mml_node = new MmlMfracNode(this, mml_attr); - break; - case MrowNode: - mml_node = new MmlMrowNode(this, mml_attr); - break; - case MsqrtNode: - mml_node = new MmlMsqrtNode(this, mml_attr); - break; - case MrootNode: - mml_node = new MmlMrootNode(this, mml_attr); - break; - case MsupNode: - mml_node = new MmlMsupNode(this, mml_attr); - break; - case MsubNode: - mml_node = new MmlMsubNode(this, mml_attr); - break; - case MsubsupNode: - mml_node = new MmlMsubsupNode(this, mml_attr); - break; - case MoNode: - mml_node = new MmlMoNode(this, mml_attr); - break; - case MstyleNode: - mml_node = new MmlMstyleNode(this, mml_attr); - break; - case TextNode: - mml_node = new MmlTextNode(mml_value, this); - break; - case MphantomNode: - mml_node = new MmlMphantomNode(this, mml_attr); - break; - case MfencedNode: - mml_node = new MmlMfencedNode(this, mml_attr); - break; - case MtableNode: - mml_node = new MmlMtableNode(this, mml_attr); - break; - case MtrNode: - mml_node = new MmlMtrNode(this, mml_attr); - break; - case MtdNode: - mml_node = new MmlMtdNode(this, mml_attr); - break; - case MoverNode: - mml_node = new MmlMoverNode(this, mml_attr); - break; - case MunderNode: - mml_node = new MmlMunderNode(this, mml_attr); - break; - case MunderoverNode: - mml_node = new MmlMunderoverNode(this, mml_attr); - break; - case MalignMarkNode: - mml_node = new MmlMalignMarkNode(this); - break; - case MerrorNode: - mml_node = new MmlMerrorNode(this, mml_attr); - break; - case MtextNode: - mml_node = new MmlMtextNode(this, mml_attr); - break; - case MpaddedNode: - mml_node = new MmlMpaddedNode(this, mml_attr); - break; - case MspaceNode: - mml_node = new MmlMspaceNode(this, mml_attr); - break; - case UnknownNode: - mml_node = new MmlUnknownNode(this, mml_attr); - break; - case NoNode: - mml_node = 0; - break; - } - - return mml_node; -} - -void MmlDocument::insertOperator(MmlNode *node, const QString &text) -{ - MmlNode *text_node = createNode(TextNode, MmlAttributeMap(), text, 0); - MmlNode *mo_node = createNode(MoNode, MmlAttributeMap(), QString::null, 0); - - bool ok = insertChild(node, mo_node, 0); - Q_ASSERT( ok ); - ok = insertChild(mo_node, text_node, 0); - Q_ASSERT( ok ); -} - -MmlNode *MmlDocument::domToMml(const QDomNode &dom_node, bool *ok, QString *errorMsg) -{ - // create the node - - Q_ASSERT(ok != 0); - - NodeType mml_type = domToMmlNodeType(dom_node); - - if (mml_type == NoNode) { - *ok = true; - return 0; - } - - QDomNamedNodeMap dom_attr = dom_node.attributes(); - MmlAttributeMap mml_attr; - for (unsigned i = 0; i < dom_attr.length(); ++i) { - QDomNode attr_node = dom_attr.item(i); - Q_ASSERT(!attr_node.nodeName().isNull()); - Q_ASSERT(!attr_node.nodeValue().isNull()); - mml_attr[attr_node.nodeName()] = attr_node.nodeValue(); - } - - QString mml_value; - if (mml_type == TextNode) - mml_value = dom_node.nodeValue(); - MmlNode *mml_node = createNode(mml_type, mml_attr, mml_value, errorMsg); - if (mml_node == 0) { - *ok = false; - return 0; - } - - // create the node's children according to the child_spec - - const NodeSpec *spec = mmlFindNodeSpec(mml_type); - QDomNodeList dom_child_list = dom_node.childNodes(); - int child_cnt = dom_child_list.count(); - MmlNode *mml_child = 0; - - QString separator_list; - if (mml_type == MfencedNode) - separator_list = mml_node->explicitAttribute("separators", ","); - - switch (spec->child_spec) { - case NodeSpec::ChildIgnore: - break; - - case NodeSpec::ImplicitMrow: - - if (child_cnt > 0) { - mml_child = createImplicitMrowNode(dom_node, ok, errorMsg); - if (!*ok) { - delete mml_node; - return 0; - } - - if (!insertChild(mml_node, mml_child, errorMsg)) { - delete mml_node; - delete mml_child; - *ok = false; - return 0; - } - } - - break; - - default: - // exact ammount of children specified - check... - if (spec->child_spec != child_cnt) { - if (errorMsg != 0) - *errorMsg = QString("element ") - + spec->tag - + " requires exactly " - + QString::number(spec->child_spec) - + " arguments, got " - + QString::number(child_cnt); - delete mml_node; - *ok = false; - return 0; - } - - // ...and continue just as in ChildAny - - case NodeSpec::ChildAny: - if (mml_type == MfencedNode) - insertOperator(mml_node, mml_node->explicitAttribute("open", "(")); - - for (int i = 0; i < child_cnt; ++i) { - QDomNode dom_child = dom_child_list.item(i); - - MmlNode *mml_child = domToMml(dom_child, ok, errorMsg); - if (!*ok) { - delete mml_node; - return 0; - } - - if (mml_type == MtableNode && mml_child->nodeType() != MtrNode) { - MmlNode *mtr_node = createNode(MtrNode, MmlAttributeMap(), QString::null, 0); - insertChild(mml_node, mtr_node, 0); - if (!insertChild(mtr_node, mml_child, errorMsg)) { - delete mml_node; - delete mml_child; - *ok = false; - return 0; - } - } - else if (mml_type == MtrNode && mml_child->nodeType() != MtdNode) { - MmlNode *mtd_node = createNode(MtdNode, MmlAttributeMap(), QString::null, 0); - insertChild(mml_node, mtd_node, 0); - if (!insertChild(mtd_node, mml_child, errorMsg)) { - delete mml_node; - delete mml_child; - *ok = false; - return 0; - } - } - else { - if (!insertChild(mml_node, mml_child, errorMsg)) { - delete mml_node; - delete mml_child; - *ok = false; - return 0; - } - } - - if (i < child_cnt - 1 && mml_type == MfencedNode && !separator_list.isEmpty()) { - QChar separator; - if (i >= (int)separator_list.length()) - separator = separator_list.at(separator_list.length() - 1); - else - separator = separator_list[i]; - insertOperator(mml_node, QString(separator)); - } - } - - if (mml_type == MfencedNode) - insertOperator(mml_node, mml_node->explicitAttribute("close", ")")); - - break; - } - - *ok = true; - return mml_node; -} - -MmlNode *MmlDocument::createImplicitMrowNode(const QDomNode &dom_node, bool *ok, - QString *errorMsg) -{ - QDomNodeList dom_child_list = dom_node.childNodes(); - int child_cnt = dom_child_list.count(); - - if (child_cnt == 0) { - *ok = true; - return 0; - } - - if (child_cnt == 1) - return domToMml(dom_child_list.item(0), ok, errorMsg); - - MmlNode *mml_node = createNode(MrowNode, MmlAttributeMap(), - QString::null, errorMsg); - Q_ASSERT(mml_node != 0); // there is no reason in heaven or hell for this to fail - - for (int i = 0; i < child_cnt; ++i) { - QDomNode dom_child = dom_child_list.item(i); - - MmlNode *mml_child = domToMml(dom_child, ok, errorMsg); - if (!*ok) { - delete mml_node; - return 0; - } - - if (!insertChild(mml_node, mml_child, errorMsg)) { - delete mml_node; - delete mml_child; - *ok = false; - return 0; - } - } - - return mml_node; -} - -void MmlDocument::paint(QPainter *p, const QPoint &pos) const -{ - if (m_root_node == 0) - return; - -/* p->save(); - p->setPen(Qt::blue); - p->drawLine(pos.x() - 5, pos.y(), pos.x() + 5, pos.y()); - p->drawLine(pos.x(), pos.y() - 5, pos.x(), pos.y() + 5); - p->restore(); */ - - QRect mr = m_root_node->myRect(); - m_root_node->setRelOrigin(pos - mr.topLeft()); - m_root_node->paint(p); -} - -QSize MmlDocument::size() const -{ - if (m_root_node == 0) - return QSize(0, 0); - return m_root_node->deviceRect().size(); -} - - - - -// ******************************************************************* -// MmlNode -// ******************************************************************* - - -MmlNode::MmlNode(NodeType type, MmlDocument *document, const MmlAttributeMap &attribute_map) -{ - m_parent = 0; - m_first_child = 0; - m_next_sibling = 0; - m_previous_sibling = 0; - - m_node_type = type; - m_document = document; - m_attribute_map = attribute_map; - - m_my_rect = m_parent_rect = QRect(0, 0, 0, 0); - m_rel_origin = QPoint(0, 0); - m_stretched = false; -} - -MmlNode::~MmlNode() -{ - MmlNode *n = firstChild(); - while (n != 0) { - MmlNode *tmp = n->nextSibling(); - delete n; - n = tmp; - } -} - -static QString rectToStr(const QRect &rect) -{ - return QString("[(%1, %2), %3x%4]") - .arg(rect.x()) - .arg(rect.y()) - .arg(rect.width()) - .arg(rect.height()); -} - -QString MmlNode::toStr() const -{ - const NodeSpec *spec = mmlFindNodeSpec(nodeType()); - Q_ASSERT(spec != 0); - - return QString("%1 %2 mr=%3 pr=%4 dr=%5 ro=(%7, %8) str=%9") - .arg(spec->type_str) - .arg((quintptr)this, 0, 16) - .arg(rectToStr(myRect())) - .arg(rectToStr(parentRect())) - .arg(rectToStr(deviceRect())) - .arg(m_rel_origin.x()) - .arg(m_rel_origin.y()) - .arg((int)isStretched()); -} - -int MmlNode::interpretSpacing(const QString &value, bool *ok) const -{ - return ::interpretSpacing(value, em(), ex(), ok); -} - -int MmlNode::basePos() const -{ - QFontMetrics fm(font()); - return fm.strikeOutPos(); -} - -int MmlNode::underlinePos() const -{ - QFontMetrics fm(font()); - return basePos() + fm.underlinePos(); -} -int MmlNode::overlinePos() const -{ - QFontMetrics fm(font()); - return basePos() - fm.overlinePos(); -} - -MmlNode *MmlNode::lastSibling() const -{ - const MmlNode *n = this; - while (!n->isLastSibling()) - n = n->nextSibling(); - return const_cast(n); -} - -MmlNode *MmlNode::firstSibling() const -{ - const MmlNode *n = this; - while (!n->isFirstSibling()) - n = n->previousSibling(); - return const_cast(n); -} - -int MmlNode::em() const -{ - return QFontMetrics(font()).boundingRect('m').width(); -} - -int MmlNode::ex() const -{ - return QFontMetrics(font()).boundingRect('x').height(); -} - -int MmlNode::scriptlevel(const MmlNode *) const -{ - int parent_sl; - const MmlNode *p = parent(); - if (p == 0) - parent_sl = 0; - else - parent_sl = p->scriptlevel(this); - - QString expl_sl_str = explicitAttribute("scriptlevel"); - if (expl_sl_str.isNull()) - return parent_sl; - - if (expl_sl_str.startsWith("+") || expl_sl_str.startsWith("-")) { - bool ok; - int expl_sl = expl_sl_str.toInt(&ok); - if (ok) { - return parent_sl + expl_sl; - } - else { - qWarning("MmlNode::scriptlevel(): bad value: %s", qPrintable(expl_sl_str)); - return parent_sl; - } - } - - bool ok; - int expl_sl = expl_sl_str.toInt(&ok); - if (ok) - return expl_sl; - - - if (expl_sl_str == "+") - return parent_sl + 1; - else if (expl_sl_str == "-") - return parent_sl - 1; - else { - qWarning("MmlNode::scriptlevel(): could not parse value: \"%s\"", qPrintable(expl_sl_str)); - return parent_sl; - } -} - -QPoint MmlNode::devicePoint(const QPoint &p) const -{ - QRect mr = myRect(); - QRect dr = deviceRect(); - - if (isStretched()) - return dr.topLeft() + QPoint((p.x() - mr.left())*dr.width()/mr.width(), - (p.y() - mr.top())*dr.height()/mr.height()); - else - return dr.topLeft() + p - mr.topLeft(); -} - -QString MmlNode::inheritAttributeFromMrow(const QString &name, - const QString &def) const -{ - const MmlNode *p = this; - for (; p != 0; p = p->parent()) { - if (p == this || p->nodeType() == MstyleNode) { - QString value = p->explicitAttribute(name); - if (!value.isNull()) - return value; - } - } - - return def; -} - -QColor MmlNode::color() const -{ - // If we are child of return red - const MmlNode *p = this; - for (; p != 0; p = p->parent()) { - if (p->nodeType() == MerrorNode) - return QColor("red"); - } - - QString value_str = inheritAttributeFromMrow("mathcolor"); - if (value_str.isNull()) - value_str = inheritAttributeFromMrow("color"); - if (value_str.isNull()) - return QColor(); - - return QColor(value_str); -} - -QColor MmlNode::background() const -{ - QString value_str = inheritAttributeFromMrow("mathbackground"); - if (value_str.isNull()) - value_str = inheritAttributeFromMrow("background"); - if (value_str.isNull()) - return QColor(); - - return QColor(value_str); -} - -static void updateFontAttr(MmlAttributeMap &font_attr, const MmlNode *n, - const QString &name, const QString &preferred_name = QString::null) -{ - if (font_attr.contains(preferred_name) || font_attr.contains(name)) - return; - QString value = n->explicitAttribute(name); - if (!value.isNull()) - font_attr[name] = value; -} - -static MmlAttributeMap collectFontAttributes(const MmlNode *node) -{ - MmlAttributeMap font_attr; - - for (const MmlNode *n = node; n != 0; n = n->parent()) { - if (n == node || n->nodeType() == Mml::MstyleNode) { - updateFontAttr(font_attr, n, "mathvariant"); - updateFontAttr(font_attr, n, "mathsize"); - - // depreciated attributes - updateFontAttr(font_attr, n, "fontsize", "mathsize"); - updateFontAttr(font_attr, n, "fontweight", "mathvariant"); - updateFontAttr(font_attr, n, "fontstyle", "mathvariant"); - updateFontAttr(font_attr, n, "fontfamily", "mathvariant"); - } - } - - return font_attr; -} - -QFont MmlNode::font() const -{ - QFont fn(document()->fontName(QtMmlWidget::NormalFont), - document()->baseFontPointSize()); - - int ps = fn.pointSize(); - int sl = scriptlevel(); - if (sl >= 0) { - for (int i = 0; i < sl; ++i) - ps = (int)(ps*g_script_size_multiplier); - } - else { - for (int i = 0; i > sl; --i) - ps = (int)(ps/g_script_size_multiplier); - } - if (ps < g_min_font_point_size) - ps = g_min_font_point_size; - fn.setPointSize(ps); - - int em = QFontMetrics(fn).boundingRect('m').width(); - int ex = QFontMetrics(fn).boundingRect('x').height(); - - MmlAttributeMap font_attr = collectFontAttributes(this); - - if (font_attr.contains("mathvariant")) { - QString value = font_attr["mathvariant"]; - - bool ok; - uint mv = interpretMathVariant(value, &ok); - - if (ok) { - if (mv & ScriptMV) - fn.setFamily(document()->fontName(QtMmlWidget::ScriptFont)); - - if (mv & FrakturMV) - fn.setFamily(document()->fontName(QtMmlWidget::FrakturFont)); - - if (mv & SansSerifMV) - fn.setFamily(document()->fontName(QtMmlWidget::SansSerifFont)); - - if (mv & MonospaceMV) - fn.setFamily(document()->fontName(QtMmlWidget::MonospaceFont)); - - if (mv & DoubleStruckMV) - fn.setFamily(document()->fontName(QtMmlWidget::DoublestruckFont)); - - if (mv & BoldMV) - fn.setBold(true); - - if (mv & ItalicMV) - fn.setItalic(true); - } - } - - if (font_attr.contains("mathsize")) { - QString value = font_attr["mathsize"]; - fn = interpretMathSize(value, fn, em, ex, 0); - } - - fn = interpretDepreciatedFontAttr(font_attr, fn, em, ex); - - if (nodeType() == MiNode - && !font_attr.contains("mathvariant") - && !font_attr.contains("fontstyle")) { - const MmlMiNode *mi_node = (const MmlMiNode*) this; - if (mi_node->text().length() == 1) - fn.setItalic(true); - } - - if (nodeType() == MoNode) { - fn.setItalic(false); - fn.setBold(false); - } - - return fn; -} - -QString MmlNode::explicitAttribute(const QString &name, const QString &def) const -{ - MmlAttributeMap::const_iterator it = m_attribute_map.find(name); - if (it != m_attribute_map.end()) - return *it; - return def; -} - - -QRect MmlNode::parentRect() const -{ - if (isStretched()) - return m_parent_rect; - - QRect mr = myRect(); - QPoint ro = relOrigin(); - - return QRect(ro + mr.topLeft(), mr.size()); -} - - -void MmlNode::stretchTo(const QRect &rect) -{ - m_parent_rect = rect; - m_stretched = true; -} - -void MmlNode::setRelOrigin(const QPoint &rel_origin) -{ - m_rel_origin = rel_origin + QPoint(-myRect().left(), 0); - m_stretched = false; -} - -void MmlNode::updateMyRect() -{ - m_my_rect = symbolRect(); - MmlNode *child = firstChild(); - for (; child != 0; child = child->nextSibling()) - m_my_rect |= child->parentRect(); -} - -void MmlNode::layout() -{ - m_parent_rect = QRect(0, 0, 0, 0); - m_stretched = false; - m_rel_origin = QPoint(0, 0); - - MmlNode *child = firstChild(); - for (; child != 0; child = child->nextSibling()) - child->layout(); - - layoutSymbol(); - - updateMyRect(); - - if (parent() == 0) - m_rel_origin = QPoint(0, 0); -} - - -QRect MmlNode::deviceRect() const -{ - if (parent() == 0) - return QRect(relOrigin() + myRect().topLeft(), myRect().size()); - -/* if (!isStretched()) { - QRect pdr = parent()->deviceRect(); - QRect pmr = parent()->myRect(); - QRect pr = parentRect(); - QRect mr = myRect(); - return QRect(pdr.left() + pr.left() - pmr.left(), - pdr.top() + pr.top() - pmr.top(), - mr.width(), mr.height()); - } -*/ - QRect pdr = parent()->deviceRect(); - QRect pr = parentRect(); - QRect pmr = parent()->myRect(); - - float scale_w = 0; - if (pmr.width() != 0) - scale_w = (float)pdr.width()/pmr.width(); - float scale_h = 0; - if (pmr.height() != 0) - scale_h = (float)pdr.height()/pmr.height(); - - return QRect(pdr.left() + ROUND((pr.left() - pmr.left())*scale_w), - pdr.top() + ROUND((pr.top() - pmr.top())*scale_h), - ROUND((pr.width()*scale_w)), - ROUND((pr.height()*scale_h))); -} - -void MmlNode::layoutSymbol() -{ - // default behaves like an mrow - - // now lay them out in a neat row, aligning their origins to my origin - int w = 0; - MmlNode *child = firstChild(); - for (; child != 0; child = child->nextSibling()) { - child->setRelOrigin(QPoint(w, 0)); - w += child->parentRect().width() + 1; - } -} - -void MmlNode::paint(QPainter *p) -{ - if (!myRect().isValid()) - return; - p->save(); - p->setViewport(deviceRect()); - p->setWindow(myRect()); - - - QColor fg = color(); - QColor bg = background(); - if (bg.isValid()) - p->fillRect(myRect(), bg); - if (fg.isValid()) - p->setPen(color()); - - MmlNode *child = firstChild(); - for (; child != 0; child = child->nextSibling()) - child->paint(p); - - paintSymbol(p); - - p->restore(); -} - -void MmlNode::paintSymbol(QPainter *p) const -{ - if (g_draw_frames && myRect().isValid()) { - p->save(); - p->setPen(Qt::red); - p->drawRect(m_my_rect); - QPen pen = p->pen(); - pen.setStyle(Qt::DotLine); - p->setPen(pen); - p->drawLine(myRect().left(), 0, myRect().right(), 0); - p->restore(); - } -} - -void MmlNode::stretch() -{ - MmlNode *child = firstChild(); - for (; child != 0; child = child->nextSibling()) - child->stretch(); -} - -QString MmlTokenNode::text() const -{ - QString result; - - const MmlNode *child = firstChild(); - for (; child != 0; child = child->nextSibling()) { - if (child->nodeType() != TextNode) continue; - if (!result.isEmpty()) - result += ' '; - result += ((MmlTextNode*)child)->text(); - } - - return result; -} - -MmlNode *MmlMfracNode::numerator() const -{ - MmlNode *node = firstChild(); - Q_ASSERT(node != 0); - return node; -} - -MmlNode *MmlMfracNode::denominator() const -{ - MmlNode *node = numerator()->nextSibling(); - Q_ASSERT(node != 0); - return node; -} - -QRect MmlMfracNode::symbolRect() const -{ - int num_width = numerator()->myRect().width(); - int denom_width = denominator()->myRect().width(); - int my_width = qMax(num_width, denom_width) + 4; - - return QRect(-my_width/2, 0, my_width, 1); -} - -void MmlMfracNode::layoutSymbol() -{ - MmlNode *num = numerator(); - MmlNode *denom = denominator(); - - QRect num_rect = num->myRect(); - QRect denom_rect = denom->myRect(); - - int spacing = (int)(g_mfrac_spacing*(num_rect.height() + denom_rect.height())); - - num->setRelOrigin(QPoint(-num_rect.width()/2, - spacing - num_rect.bottom())); - denom->setRelOrigin(QPoint(-denom_rect.width()/2, spacing - denom_rect.top())); -} - -static bool zeroLineThickness(const QString &s) -{ - if (s.length() == 0 || !s[0].isDigit()) - return false; - - for (int i = 0; i < s.length(); ++i) { - QChar c = s.at(i); - if (c.isDigit() && c != '0') - return false; - } - return true; -} - -void MmlMfracNode::paintSymbol(QPainter *p) const -{ - QString linethickness_str = inheritAttributeFromMrow("linethickness", "1"); - - /* InterpretSpacing returns an int, which might be 0 even if the thickness - is > 0, though very very small. That's ok, because the painter then paints - a line of thickness 1. However, we have to run this check if the line - thickness really is zero */ - if (!zeroLineThickness(linethickness_str)) { - bool ok; - int linethickness = interpretSpacing(linethickness_str, &ok); - if (!ok) - linethickness = 1; - - p->save(); - QPen pen = p->pen(); - pen.setWidth(linethickness); - p->setPen(pen); - QSize s = myRect().size(); - p->drawLine(-s.width()/2, 0, s.width()/2, 0); - p->restore(); - } -} - -MmlNode *MmlRootBaseNode::base() const -{ - MmlNode *node = firstChild(); -// Q_ASSERT(node != 0); - return node; -} - -MmlNode *MmlRootBaseNode::index() const -{ - MmlNode *b = base(); - if (b == 0) - return 0; - return b->nextSibling(); -} - -int MmlRootBaseNode::scriptlevel(const MmlNode *child) const -{ - int sl = MmlNode::scriptlevel(); - - MmlNode *i = index(); - if (child != 0 && child == i) - return sl + 1; - else - return sl; -} - - -QRect MmlRootBaseNode::symbolRect() const -{ - MmlNode *b = base(); - QRect base_rect; - if (b == 0) - base_rect = QRect(0, 0, 1, 1); - else - base_rect = base()->myRect(); - - int margin = (int)(g_mroot_base_margin*base_rect.height()); - int tw = tailWidth(); - - return QRect(-tw, base_rect.top() - margin, tw, - base_rect.height() + 2*margin); -} - -int MmlRootBaseNode::tailWidth() const -{ - QFontMetrics fm(font()); - return fm.boundingRect(g_radical_char).width(); -} - -void MmlRootBaseNode::layoutSymbol() -{ - MmlNode *b = base(); - QSize base_size; - if (b != 0) { - b->setRelOrigin(QPoint(0, 0)); - base_size = base()->myRect().size(); - } else - base_size = QSize(1, 1); - - MmlNode *i = index(); - if (i != 0) { - int tw = tailWidth(); - - QRect i_rect = i->myRect(); - i->setRelOrigin(QPoint(-tw/2 - i_rect.width(), - -i_rect.bottom() - 4)); - } -} - -void MmlRootBaseNode::paintSymbol(QPainter *p) const -{ - QFont fn = font(); - - p->save(); - - QRect sr = symbolRect(); - - QRect r = sr; - r.moveTopLeft(devicePoint(sr.topLeft())); - p->setViewport(r); - p->setWindow(QFontMetrics(fn).boundingRect(g_radical_char)); - p->setFont(font()); - p->drawText(0, 0, QString(g_radical_char)); - - p->restore(); - - p->drawLine(sr.right(), sr.top(), myRect().right(), sr.top()); -} - -MmlTextNode::MmlTextNode(const QString &text, MmlDocument *document) - : MmlNode(TextNode, document, MmlAttributeMap()) -{ - m_text = text; - // Trim whitespace from ends, but keep nbsp and thinsp - m_text.remove(QRegExp("^[^\\S\\x00a0\\x2009]+")); - m_text.remove(QRegExp("[^\\S\\x00a0\\x2009]+$")); - - if (m_text == QString(QChar(0x62, 0x20)) // ⁢ - || m_text == QString(QChar(0x63, 0x20)) // ⁣ - || m_text == QString(QChar(0x61, 0x20))) // ⁡ - m_text = ""; -} - -QString MmlTextNode::toStr() const -{ - return MmlNode::toStr() + ", text=\"" + m_text + "\""; -} - -void MmlTextNode::paintSymbol(QPainter *p) const -{ - MmlNode::paintSymbol(p); - - QFont fn = font(); - - QFontInfo fi(fn); -// qWarning("MmlTextNode::paintSymbol(): requested: %s, used: %s, size=%d, italic=%d, bold=%d, text=\"%s\" sl=%d", -// fn.family().latin1(), fi.family().latin1(), fi.pointSize(), (int)fi.italic(), (int)fi.bold(), m_text.latin1(), scriptlevel()); - - QFontMetrics fm(fn); - - p->save(); - p->setFont(fn); - - p->drawText(0, fm.strikeOutPos(), m_text); - p->restore(); -} - -QRect MmlTextNode::symbolRect() const -{ - QFontMetrics fm(font()); - - QRect br = fm.tightBoundingRect(m_text); - br.translate(0, fm.strikeOutPos()); - - return br; -} - -MmlNode *MmlSubsupBaseNode::base() const -{ - MmlNode *b = firstChild(); - Q_ASSERT(b != 0); - return b; -} - -MmlNode *MmlSubsupBaseNode::sscript() const -{ - MmlNode *s = base()->nextSibling(); - Q_ASSERT(s != 0); - return s; -} - -int MmlSubsupBaseNode::scriptlevel(const MmlNode *child) const -{ - int sl = MmlNode::scriptlevel(); - - MmlNode *s = sscript(); - if (child != 0 && child == s) - return sl + 1; - else - return sl; -} - -void MmlMsupNode::layoutSymbol() -{ - MmlNode *b = base(); - MmlNode *s = sscript(); - - b->setRelOrigin(QPoint(-b->myRect().width(), 0)); - s->setRelOrigin(QPoint(0, b->myRect().top())); -} - -void MmlMsubNode::layoutSymbol() -{ - MmlNode *b = base(); - MmlNode *s = sscript(); - - b->setRelOrigin(QPoint(-b->myRect().width(), 0)); - s->setRelOrigin(QPoint(0, b->myRect().bottom())); -} - -MmlNode *MmlMsubsupNode::base() const -{ - MmlNode *b = firstChild(); - Q_ASSERT(b != 0); - return b; -} - -MmlNode *MmlMsubsupNode::subscript() const -{ - MmlNode *sub = base()->nextSibling(); - Q_ASSERT(sub != 0); - return sub; -} - -MmlNode *MmlMsubsupNode::superscript() const -{ - MmlNode *sup = subscript()->nextSibling(); - Q_ASSERT(sup != 0); - return sup; -} - -void MmlMsubsupNode::layoutSymbol() -{ - MmlNode *b = base(); - MmlNode *sub = subscript(); - MmlNode *sup = superscript(); - - b->setRelOrigin(QPoint(-b->myRect().width(), 0)); - sub->setRelOrigin(QPoint(0, b->myRect().bottom())); - sup->setRelOrigin(QPoint(0, b->myRect().top())); -} - -int MmlMsubsupNode::scriptlevel(const MmlNode *child) const -{ - int sl = MmlNode::scriptlevel(); - - MmlNode *sub = subscript(); - MmlNode *sup = superscript(); - - if (child != 0 && (child == sup || child == sub)) - return sl + 1; - else - return sl; -} - -QString MmlMoNode::toStr() const -{ - return MmlNode::toStr() + QString(" form=%1").arg((int)form()); -} - -void MmlMoNode::layoutSymbol() -{ - MmlNode *child = firstChild(); - if (child == 0) - return; - - child->setRelOrigin(QPoint(0, 0)); - - if (m_oper_spec == 0) - m_oper_spec = mmlFindOperSpec(text(), form()); -} - -MmlMoNode::MmlMoNode(MmlDocument *document, const MmlAttributeMap &attribute_map) - : MmlTokenNode(MoNode, document, attribute_map) -{ - m_oper_spec = 0; -} - -QString MmlMoNode::dictionaryAttribute(const QString &name) const -{ - const MmlNode *p = this; - for (; p != 0; p = p->parent()) { - if (p == this || p->nodeType() == MstyleNode) { - QString expl_attr = p->explicitAttribute(name); - if (!expl_attr.isNull()) - return expl_attr; - } - } - - return mmlDictAttribute(name, m_oper_spec); -} - -Mml::FormType MmlMoNode::form() const -{ - QString value_str = inheritAttributeFromMrow("form"); - if (!value_str.isNull()) { - bool ok; - FormType value = interpretForm(value_str, &ok); - if (ok) - return value; - else - qWarning("Could not convert %s to form", value_str.toLatin1().data()); - - } - - // Default heuristic. - if (firstSibling() == (MmlNode*)this && lastSibling() != (MmlNode*)this) - return PrefixForm; - else if (lastSibling() == (MmlNode*)this && firstSibling() != (MmlNode*)this) - return PostfixForm; - else return InfixForm; - -} - -void MmlMoNode::stretch() -{ - if (parent() == 0) - return; - - if (m_oper_spec == 0) - return; - - if (m_oper_spec->stretch_dir == OperSpec::HStretch - && parent()->nodeType() == MrowNode - && (nextSibling() != 0 || previousSibling() != 0)) - return; - - QRect pmr = parent()->myRect(); - QRect pr = parentRect(); - - switch (m_oper_spec->stretch_dir) { - case OperSpec::VStretch: - stretchTo(QRect(pr.left(), pmr.top(), pr.width(), pmr.height())); - break; - case OperSpec::HStretch: - stretchTo(QRect(pmr.left(), pr.top(), pmr.width(), pr.height())); - break; - case OperSpec::HVStretch: - stretchTo(pmr); - break; - case OperSpec::NoStretch: - break; - } -} - -int MmlMoNode::lspace() const -{ - Q_ASSERT(m_oper_spec != 0); - if (parent() == 0 - || (parent()->nodeType() != MrowNode - && parent()->nodeType() != MfencedNode - && parent()->nodeType() != UnknownNode) - || (previousSibling() == 0 && nextSibling() == 0)) - return 0; - else - return interpretSpacing(dictionaryAttribute("lspace"), 0); -} - -int MmlMoNode::rspace() const -{ - Q_ASSERT(m_oper_spec != 0); - if (parent() == 0 - || (parent()->nodeType() != MrowNode - && parent()->nodeType() != MfencedNode - && parent()->nodeType() != UnknownNode) - || (previousSibling() == 0 && nextSibling() == 0)) - return 0; - else - return interpretSpacing(dictionaryAttribute("rspace"), 0); -} - -QRect MmlMoNode::symbolRect() const -{ - const MmlNode *child = firstChild(); - - if (child == 0) - return QRect(0, 0, 0, 0); - - QRect cmr = child->myRect(); - - return QRect(-lspace(), cmr.top(), - cmr.width() + lspace() + rspace(), cmr.height()); -} - -int MmlMtableNode::rowspacing() const -{ - QString value = explicitAttribute("rowspacing"); - if (value.isNull()) - return ex(); - bool ok; - int r = interpretSpacing(value, &ok); - - if (ok) - return r; - else - return ex(); -} - -int MmlMtableNode::columnspacing() const -{ - QString value = explicitAttribute("columnspacing"); - if (value.isNull()) - return (int)(0.8*em()); - bool ok; - int r = interpretSpacing(value, &ok); - - if (ok) - return r; - else - return (int)(0.8*em()); -} - -uint MmlMtableNode::CellSizeData::colWidthSum() const -{ - uint w = 0; - for (int i = 0; i < col_widths.count(); ++i) - w += col_widths[i]; - return w; -} - -uint MmlMtableNode::CellSizeData::rowHeightSum() const -{ - uint h = 0; - for (int i = 0; i < row_heights.count(); ++i) - h += row_heights[i]; - return h; -} - -void MmlMtableNode::CellSizeData::init(const MmlNode *first_row) -{ - col_widths.clear(); - row_heights.clear(); - - const MmlNode *mtr = first_row; - for (; mtr != 0; mtr = mtr->nextSibling()) { - - Q_ASSERT(mtr->nodeType() == MtrNode); - - int col_cnt = 0; - const MmlNode *mtd = mtr->firstChild(); - for (; mtd != 0; mtd = mtd->nextSibling(), ++col_cnt) { - - Q_ASSERT(mtd->nodeType() == MtdNode); - - QRect mtdmr = mtd->myRect(); - - if (col_cnt == col_widths.count()) - col_widths.append(mtdmr.width()); - else - col_widths[col_cnt] = qMax(col_widths[col_cnt], mtdmr.width()); - } - - row_heights.append(mtr->myRect().height()); - } -} - -void MmlMtableNode::layoutSymbol() -{ - // Obtain natural widths of columns - m_cell_size_data.init(firstChild()); - - int col_spc = columnspacing(); - int row_spc = rowspacing(); - int frame_spc_hor = framespacing_hor(); - QString columnwidth_attr = explicitAttribute("columnwidth", "auto"); - - // Is table width set by user? If so, set col_width_sum and never ever change it. - int col_width_sum = m_cell_size_data.colWidthSum(); - bool width_set_by_user = false; - QString width_str = explicitAttribute("width", "auto"); - if (width_str != "auto") { - bool ok; - - int w = interpretSpacing(width_str, &ok); - if (ok) { - col_width_sum = w - - col_spc*(m_cell_size_data.numCols() - 1) - - frame_spc_hor*2; - width_set_by_user = true; - } - } - - // Find out what kind of columns we are dealing with and set the widths of - // statically sized columns. - int fixed_width_sum = 0; // sum of widths of statically sized set columns - int auto_width_sum = 0; // sum of natural widths of auto sized columns - int relative_width_sum = 0; // sum of natural widths of relatively sized columns - double relative_fraction_sum = 0; // total fraction of width taken by relatively - // sized columns - int i; - for (i = 0; i < m_cell_size_data.numCols(); ++i) { - QString value = interpretListAttr(columnwidth_attr, i, "auto"); - - // Is it an auto sized column? - if (value == "auto" || value == "fit") { - auto_width_sum += m_cell_size_data.col_widths[i]; - continue; - } - - // Is it a statically sized column? - bool ok; - int w = interpretSpacing(value, &ok); - if (ok) { - // Yup, sets its width to the user specified value - m_cell_size_data.col_widths[i] = w; - fixed_width_sum += w; - continue; - } - - // Is it a relatively sized column? - if (value.endsWith("%")) { - value.truncate(value.length() - 1); - double factor = value.toFloat(&ok); - if (ok && !value.isEmpty()) { - factor /= 100.0; - relative_width_sum += m_cell_size_data.col_widths[i]; - relative_fraction_sum += factor; - if (!width_set_by_user) { - // If the table width was not set by the user, we are free to increase - // it so that the width of this column will be >= than its natural width - int min_col_width_sum = ROUND(m_cell_size_data.col_widths[i]/factor); - if (min_col_width_sum > col_width_sum) - col_width_sum = min_col_width_sum; - } - continue; - } - else - qWarning("MmlMtableNode::layoutSymbol(): could not parse value %s%%", value.toLatin1().data()); - } - - // Relatively sized column, but we failed to parse the factor. Treat is like an auto - // column. - auto_width_sum += m_cell_size_data.col_widths[i]; - } - - // Work out how much space remains for the auto olumns, after allocating - // the statically sized and the relatively sized columns. - int required_auto_width_sum = col_width_sum - - ROUND(relative_fraction_sum*col_width_sum) - - fixed_width_sum; - - if (!width_set_by_user && required_auto_width_sum < auto_width_sum) { - if (relative_fraction_sum < 1) - col_width_sum = ROUND((fixed_width_sum + auto_width_sum)/(1 - relative_fraction_sum)); - else - col_width_sum = fixed_width_sum + auto_width_sum + relative_width_sum; - required_auto_width_sum = auto_width_sum; - } - - // Ratio by which we have to shring/grow all auto sized columns to make it all fit - double auto_width_scale = 1; - if (auto_width_sum > 0) - auto_width_scale = (float)required_auto_width_sum/auto_width_sum; - - // Set correct sizes for the auto sized and the relatively sized columns. - for (i = 0; i < m_cell_size_data.numCols(); ++i) { - QString value = interpretListAttr(columnwidth_attr, i, "auto"); - - // Is it a relatively sized column? - if (value.endsWith("%")) { - bool ok; - int w = interpretPercentSpacing(value, col_width_sum, &ok); - if (ok) - m_cell_size_data.col_widths[i] = w; - else - // We're treating parsing errors here as auto sized columns - m_cell_size_data.col_widths[i] - = ROUND(auto_width_scale*m_cell_size_data.col_widths[i]); - } - // Is it an auto sized column? - else if (value == "auto") { - m_cell_size_data.col_widths[i] - = ROUND(auto_width_scale*m_cell_size_data.col_widths[i]); - } - } - - QString s; - QList &col_widths = m_cell_size_data.col_widths; - for (i = 0; i < col_widths.count(); ++i) { - s += QString("[w=%1 %2%%]") - .arg(col_widths[i]) - .arg(100*col_widths[i]/m_cell_size_data.colWidthSum()); - } -// qWarning(s); - - m_content_width = m_cell_size_data.colWidthSum() - + col_spc*(m_cell_size_data.numCols() - 1); - m_content_height = m_cell_size_data.rowHeightSum() - + row_spc*(m_cell_size_data.numRows() - 1); - - int bottom = -m_content_height/2; - MmlNode *child = firstChild(); - for (; child != 0; child = child->nextSibling()) { - Q_ASSERT(child->nodeType() == MtrNode); - MmlMtrNode *row = (MmlMtrNode*) child; - - row->layoutCells(m_cell_size_data.col_widths, col_spc); - QRect rmr = row->myRect(); - row->setRelOrigin(QPoint(0, bottom - rmr.top())); - bottom += rmr.height() + row_spc; - } -} - -QRect MmlMtableNode::symbolRect() const -{ - int frame_spc_hor = framespacing_hor(); - int frame_spc_ver = framespacing_ver(); - - return QRect(-frame_spc_hor, - -m_content_height/2 - frame_spc_ver, - m_content_width + 2*frame_spc_hor, - m_content_height + 2*frame_spc_ver); -} - -Mml::FrameType MmlMtableNode::frame() const -{ - QString value = explicitAttribute("frame", "none"); - return interpretFrameType(value, 0, 0); -} - -Mml::FrameType MmlMtableNode::columnlines(int idx) const -{ - QString value = explicitAttribute("columnlines", "none"); - return interpretFrameType(value, idx, 0); -} - -Mml::FrameType MmlMtableNode::rowlines(int idx) const -{ - QString value = explicitAttribute("rowlines", "none"); - return interpretFrameType(value, idx, 0); -} - -void MmlMtableNode::paintSymbol(QPainter *p) const -{ - FrameType f = frame(); - if (f != FrameNone) { - p->save(); - - QPen pen = p->pen(); - if (f == FrameDashed) - pen.setStyle(Qt::DashLine); - else - pen.setStyle(Qt::SolidLine); - p->setPen(pen); - p->drawRect(myRect()); - - p->restore(); - } - - p->save(); - - int col_spc = columnspacing(); - int row_spc = rowspacing(); - - QPen pen = p->pen(); - int col_offset = 0; - int i; - for (i = 0; i < m_cell_size_data.numCols() - 1; ++i) { - FrameType f = columnlines(i); - col_offset += m_cell_size_data.col_widths[i]; - - if (f != FrameNone) { - if (f == FrameDashed) - pen.setStyle(Qt::DashLine); - else if (f == FrameSolid) - pen.setStyle(Qt::SolidLine); - - p->setPen(pen); - int x = col_offset + col_spc/2; - p->drawLine(x, -m_content_height/2, x, m_content_height/2 ); - } - col_offset += col_spc; - } - - int row_offset = 0; - for (i = 0; i < m_cell_size_data.numRows() - 1; ++i) { - FrameType f = rowlines(i); - row_offset += m_cell_size_data.row_heights[i]; - - if (f != FrameNone) { - if (f == FrameDashed) - pen.setStyle(Qt::DashLine); - else if (f == FrameSolid) - pen.setStyle(Qt::SolidLine); - - p->setPen(pen); - int y = row_offset + row_spc/2 - m_content_height/2; - p->drawLine(0, y, m_content_width, y); - } - row_offset += row_spc; - } - - p->restore(); -} - -int MmlMtableNode::framespacing_ver() const -{ - if (frame() == FrameNone) - return (int)(0.2*em()); - - QString value = explicitAttribute("framespacing", "0.4em 0.5ex"); - - bool ok; - FrameSpacing fs = interpretFrameSpacing(value, em(), ex(), &ok); - if (ok) - return fs.m_ver; - else - return (int)(0.5*ex()); -} - -int MmlMtableNode::framespacing_hor() const -{ - if (frame() == FrameNone) - return (int)(0.2*em()); - - QString value = explicitAttribute("framespacing", "0.4em 0.5ex"); - - bool ok; - FrameSpacing fs = interpretFrameSpacing(value, em(), ex(), &ok); - if (ok) - return fs.m_hor; - else - return (int)(0.4*em()); -} - -void MmlMtrNode::layoutCells(const QList &col_widths, - int col_spc) -{ - QRect mr = myRect(); - - MmlNode *child = firstChild(); - int col_offset = 0; - uint colnum = 0; - for (; child != 0; child = child->nextSibling(), ++colnum) { - Q_ASSERT(child->nodeType() == MtdNode); - MmlMtdNode *mtd = (MmlMtdNode*) child; - - QRect r = QRect(0, mr.top(), col_widths[colnum], mr.height()); - mtd->setMyRect(r); - mtd->setRelOrigin(QPoint(col_offset, 0)); - col_offset += col_widths[colnum] + col_spc; - } - - updateMyRect(); -} - -int MmlMtdNode::scriptlevel(const MmlNode *child) const -{ - int sl = MmlNode::scriptlevel(); - if (child != 0 && child == firstChild()) - return sl + m_scriptlevel_adjust; - else - return sl; -} - -void MmlMtdNode::setMyRect(const QRect &rect) -{ - MmlNode::setMyRect(rect); - MmlNode *child = firstChild(); - if (child == 0) - return; - - if (rect.width() < child->myRect().width()) { - while (rect.width() < child->myRect().width() - && child->font().pointSize() > g_min_font_point_size) { - -// qWarning("MmlMtdNode::setMyRect(): rect.width()=%d, child()->myRect().width=%d sl=%d", -// rect.width(), child->myRect().width(), m_scriptlevel_adjust); - - ++m_scriptlevel_adjust; - child->layout(); - } - -// qWarning("MmlMtdNode::setMyRect(): rect.width()=%d, child()->myRect().width=%d sl=%d", -// rect.width(), child->myRect().width(), m_scriptlevel_adjust); - } - - QRect mr = myRect(); - QRect cmr = child->myRect(); - - QPoint child_rel_origin; - - switch (columnalign()) { - case ColAlignLeft: - child_rel_origin.setX(0); - break; - case ColAlignCenter: - child_rel_origin.setX(mr.left() + (mr.width() - cmr.width())/2); - break; - case ColAlignRight: - child_rel_origin.setX(mr.right() - cmr.width()); - break; - } - - switch (rowalign()) { - case RowAlignTop: - child_rel_origin.setY(mr.top() - cmr.top()); - break; - case RowAlignCenter: - case RowAlignBaseline: - child_rel_origin.setY(mr.top() -cmr.top() + (mr.height() - cmr.height())/2); - break; - case RowAlignBottom: - child_rel_origin.setY(mr.bottom() - cmr.bottom()); - break; - case RowAlignAxis: - child_rel_origin.setY(0); - break; - } - - child->setRelOrigin(child_rel_origin); -} - -uint MmlMtdNode::colNum() -{ - MmlNode *syb = previousSibling(); - - uint i = 0; - for (; syb != 0; syb = syb->previousSibling()) - ++i; - - return i; -} - -uint MmlMtdNode::rowNum() -{ - MmlNode *row = parent()->previousSibling(); - - uint i = 0; - for (; row != 0; row = row->previousSibling()) - ++i; - - return i; -} - -MmlMtdNode::ColAlign MmlMtdNode::columnalign() -{ - QString val = explicitAttribute("columnalign"); - if (!val.isNull()) - return interpretColAlign(val, 0, 0); - - MmlNode *node = parent(); // - if (node == 0) - return ColAlignCenter; - - uint colnum = colNum(); - val = node->explicitAttribute("columnalign"); - if (!val.isNull()) - return interpretColAlign(val, colnum, 0); - - node = node->parent(); // - if (node == 0) - return ColAlignCenter; - - val = node->explicitAttribute("columnalign"); - if (!val.isNull()) - return interpretColAlign(val, colnum, 0); - - return ColAlignCenter; -} - -MmlMtdNode::RowAlign MmlMtdNode::rowalign() -{ - QString val = explicitAttribute("rowalign"); - if (!val.isNull()) - return interpretRowAlign(val, 0, 0); - - MmlNode *node = parent(); // - if (node == 0) - return RowAlignAxis; - - uint rownum = rowNum(); - val = node->explicitAttribute("rowalign"); - if (!val.isNull()) - return interpretRowAlign(val, rownum, 0); - - node = node->parent(); // - if (node == 0) - return RowAlignAxis; - - val = node->explicitAttribute("rowalign"); - if (!val.isNull()) - return interpretRowAlign(val, rownum, 0); - - return RowAlignAxis; -} - -void MmlMoverNode::layoutSymbol() -{ - MmlNode *base = firstChild(); - Q_ASSERT(base != 0); - MmlNode *over = base->nextSibling(); - Q_ASSERT(over != 0); - - QRect base_rect = base->myRect(); - QRect over_rect = over->myRect(); - - int spacing = (int)(g_mfrac_spacing*(over_rect.height() - + base_rect.height())); - - base->setRelOrigin(QPoint(-base_rect.width()/2, 0)); - over->setRelOrigin(QPoint(-over_rect.width()/2, - base_rect.top() - spacing - over_rect.bottom())); -} - -int MmlMoverNode::scriptlevel(const MmlNode *node) const -{ - MmlNode *base = firstChild(); - Q_ASSERT(base != 0); - MmlNode *over = base->nextSibling(); - Q_ASSERT(over != 0); - - int sl = MmlNode::scriptlevel(); - if (node != 0 && node == over) - return sl + 1; - else - return sl; -} - -void MmlMunderNode::layoutSymbol() -{ - MmlNode *base = firstChild(); - Q_ASSERT(base != 0); - MmlNode *under = base->nextSibling(); - Q_ASSERT(under != 0); - - QRect base_rect = base->myRect(); - QRect under_rect = under->myRect(); - - int spacing = (int)(g_mfrac_spacing*(under_rect.height() + base_rect.height())); - - base->setRelOrigin(QPoint(-base_rect.width()/2, 0)); - under->setRelOrigin(QPoint(-under_rect.width()/2, base_rect.bottom() + spacing - under_rect.top())); -} - -int MmlMunderNode::scriptlevel(const MmlNode *node) const -{ - MmlNode *base = firstChild(); - Q_ASSERT(base != 0); - MmlNode *under = base->nextSibling(); - Q_ASSERT(under != 0); - - int sl = MmlNode::scriptlevel(); - if (node != 0 && node == under) - return sl + 1; - else - return sl; -} - -void MmlMunderoverNode::layoutSymbol() -{ - MmlNode *base = firstChild(); - Q_ASSERT(base != 0); - MmlNode *under = base->nextSibling(); - Q_ASSERT(under != 0); - MmlNode *over = under->nextSibling(); - Q_ASSERT(over != 0); - - QRect base_rect = base->myRect(); - QRect under_rect = under->myRect(); - QRect over_rect = over->myRect(); - - int spacing = (int)(g_mfrac_spacing*( base_rect.height() - + under_rect.height() - + over_rect.height()) ); - - base->setRelOrigin(QPoint(-base_rect.width()/2, 0)); - under->setRelOrigin(QPoint(-under_rect.width()/2, base_rect.bottom() + spacing - under_rect.top())); - over->setRelOrigin(QPoint(-over_rect.width()/2, base_rect.top() - spacing - under_rect.bottom())); -} - -int MmlMunderoverNode::scriptlevel(const MmlNode *node) const -{ - MmlNode *base = firstChild(); - Q_ASSERT(base != 0); - MmlNode *under = base->nextSibling(); - Q_ASSERT(under != 0); - MmlNode *over = under->nextSibling(); - Q_ASSERT(over != 0); - - int sl = MmlNode::scriptlevel(); - if (node != 0 && (node == under || node == over)) - return sl + 1; - else - return sl; -} - -int MmlMpaddedNode::interpretSpacing(QString value, int base_value, bool *ok) const -{ - if (ok != 0) - *ok = false; - - value.replace(' ', ""); - - QString sign, factor_str, pseudo_unit; - bool percent = false; - - // extract the sign - int idx = 0; - if (idx < value.length() && (value.at(idx) == '+' || value.at(idx) == '-')) - sign = value.at(idx++); - - // extract the factor - while (idx < value.length() && (value.at(idx).isDigit() || value.at(idx) == '.')) - factor_str.append(value.at(idx++)); - - // extract the % sign - if (idx < value.length() && value.at(idx) == '%') { - percent = true; - ++idx; - } - - // extract the pseudo-unit - pseudo_unit = value.mid(idx); - - bool float_ok; - double factor = factor_str.toFloat(&float_ok); - if (!float_ok || factor < 0) { - qWarning("MmlMpaddedNode::interpretSpacing(): could not parse \"%s\"", value.toLatin1().data()); - return 0; - } - - if (percent) - factor /= 100.0; - - QRect cr; - if (firstChild() == 0) - cr = QRect(0, 0, 0, 0); - else - cr = firstChild()->myRect(); - - int unit_size; - - if (pseudo_unit.isEmpty()) - unit_size = base_value; - else if (pseudo_unit == "width") - unit_size = cr.width(); - else if (pseudo_unit == "height") - unit_size = -cr.top(); - else if (pseudo_unit == "depth") - unit_size = cr.bottom(); - else { - bool unit_ok; - unit_size = MmlNode::interpretSpacing("1" + pseudo_unit, &unit_ok); - if (!unit_ok) { - qWarning("MmlMpaddedNode::interpretSpacing(): could not parse \"%s\"", value.toLatin1().data()); - return 0; - } - } - - if (ok != 0) - *ok = true; - - if (sign.isNull()) - return (int)(factor*unit_size); - else if (sign == "+") - return base_value + (int)(factor*unit_size); - else // sign == "-" - return base_value - (int)(factor*unit_size); -} - -int MmlMpaddedNode::lspace() const -{ - QString value = explicitAttribute("lspace"); - - if (value.isNull()) - return 0; - - bool ok; - int lspace = interpretSpacing(value, 0, &ok); - - if (ok) - return lspace; - - return 0; -} - -int MmlMpaddedNode::width() const -{ - int child_width = 0; - if (firstChild() != 0) - child_width = firstChild()->myRect().width(); - - QString value = explicitAttribute("width"); - if (value.isNull()) - return child_width; - - bool ok; - int w = interpretSpacing(value, child_width, &ok); - if (ok) - return w; - - return child_width; -} - -int MmlMpaddedNode::height() const -{ - QRect cr; - if (firstChild() == 0) - cr = QRect(0, 0, 0, 0); - else - cr = firstChild()->myRect(); - - QString value = explicitAttribute("height"); - if (value.isNull()) - return -cr.top(); - - bool ok; - int h = interpretSpacing(value, -cr.top(), &ok); - if (ok) - return h; - - return -cr.top(); -} - -int MmlMpaddedNode::depth() const -{ - QRect cr; - if (firstChild() == 0) - cr = QRect(0, 0, 0, 0); - else - cr = firstChild()->myRect(); - - QString value = explicitAttribute("depth"); - if (value.isNull()) - return cr.bottom(); - - bool ok; - int h = interpretSpacing(value, cr.bottom(), &ok); - if (ok) - return h; - - return cr.bottom(); -} - -void MmlMpaddedNode::layoutSymbol() -{ - MmlNode *child = firstChild(); - if (child == 0) - return; - - child->setRelOrigin(QPoint(0, 0)); -} - - -QRect MmlMpaddedNode::symbolRect() const -{ - return QRect(-lspace(), -height(), lspace() + width(), height() + depth()); -} - -// ******************************************************************* -// QtMmlWidget -// ******************************************************************* - -/*! - \class QtMmlWidget - - \brief The QtMmlWidget class renders mathematical formulas written in MathML 2.0. - - QtMmlWidget implements the Presentation Markup subset of the - MathML 2.0 specification, with a few \link overview.html exceptions\endlink. - - \code - QtMmlWidget *mmlWidget = new QtMmlWidget(this); - QString errorMsg; - int errorLine; - int errorColumn; - bool ok = mmlWidget->setContent(mmlText, &errorMsg, &errorLine, &errorColumn); - if (!ok) { - qWarning("MathML error: %s, Line: %d, Column: %d", - errorMsg.latin1(), errorLine, errorColumn); - } - \endcode - -*/ - - -/*! - \enum QtMmlWidget::MmlFont - - This ennumerated type is used in fontName() and setFontName() to - specify a font type. - - \value NormalFont The default font type, used to render - expressions for which no mathvariant or fontfamily is specified, - or for which the "normal" mathvariant is specified. - - \value FrakturFont The font type used to render expressions for - which the "fraktur" mathvariant is specified. - - \value SansSerifFont The font type used to render expressions - for which the "sans-serif" mathvariant is specified. - - \value ScriptFont The font type used to render expressions - for which the "script" mathvariant is specified. - - \value MonospaceFont The font type used to render expressions - for which the "monospace" mathvariant is specified. - - \value DoublestruckFont The font type used to render expressions - for which the "doublestruck" mathvariant is specified. - - \sa setFontName() fontName() setBaseFontPointSize() baseFontPointSize() -*/ - -/*! - Constructs a QtMmlWidget object. The \a parent - parameter is passed to QFrame's constructor. -*/ - -QtMmlWidget::QtMmlWidget(QWidget *parent) - : QFrame(parent) -{ - m_doc = new MmlDocument; -} - -/*! - Destructs a QtMmlWidget object. -*/ - -QtMmlWidget::~QtMmlWidget() -{ - delete m_doc; -} - -/*! - Returns the name of the font used to render the font \a type. - - \sa setFontName() setBaseFontPointSize() baseFontPointSize() QtMmlWidget::MmlFont -*/ - -QString QtMmlWidget::fontName(MmlFont type) const -{ - return m_doc->fontName(type); -} - -/*! - Sets the name of the font used to render the font \a type to \a name. - - \sa fontName() setBaseFontPointSize() baseFontPointSize() QtMmlWidget::MmlFont -*/ - -void QtMmlWidget::setFontName(MmlFont type, const QString &name) -{ - m_doc->setFontName(type, name); - m_doc->layout(); - update(); -} - -/*! - If \a b is true, draws a red bounding rectangle around each - expression; if \a b is false, no such rectangle is drawn. - This is mostly useful for debugging MathML expressions. - - \sa drawFrames() -*/ - -void QtMmlWidget::setDrawFrames(bool b) -{ - g_draw_frames = b; - update(); -} - -/*! - Returns true if each expression should be drawn with a red - bounding rectangle; otherwise returns false. - This is mostly useful for debugging MathML expressions. - - \sa setDrawFrames() -*/ - -bool QtMmlWidget::drawFrames() const -{ - return g_draw_frames; -} - -/*! - Clears the contents of this widget. -*/ -void QtMmlWidget::clear() -{ - m_doc->clear(); -} - -/*! - Returns the point size of the font used to render expressions - whose scriptlevel is 0. - - \sa setBaseFontPointSize() fontName() setFontName() -*/ - -int QtMmlWidget::baseFontPointSize() const -{ - return m_doc->baseFontPointSize(); -} - -/*! - Sets the point \a size of the font used to render expressions - whose scriptlevel is 0. - - \sa baseFontPointSize() fontName() setFontName() -*/ - -void QtMmlWidget::setBaseFontPointSize(int size) -{ - if (size < g_min_font_point_size) - return; - - m_doc->setBaseFontPointSize(size); - m_doc->layout(); - update(); -} - -/*! - Returns the size of the formula in pixels. -*/ - -QSize QtMmlWidget::sizeHint() const -{ - QSize size = m_doc->size(); - if (size == QSize(0, 0)) - return QSize(100, 50); - return m_doc->size(); -} - -/*! - Sets the MathML expression to be rendered. The expression is given - in the string \a text. If the expression is successfully parsed, - this method returns true; otherwise it returns false. If an error - occured \a errorMsg is set to a diagnostic message, while \a - errorLine and \a errorColumn contain the location of the error. - Any of \a errorMsg, \a errorLine and \a errorColumn may be 0, - in which case they are not set. - - \a text should contain MathML 2.0 presentation markup elements enclosed - in a element. -*/ - -bool QtMmlWidget::setContent(const QString &text, QString *errorMsg, - int *errorLine, int *errorColumn) -{ - bool result = m_doc->setContent(text, errorMsg, errorLine, errorColumn); - if (result) - update(); - return result; -} - -/*! \internal */ - -void QtMmlWidget::paintEvent(QPaintEvent *e) -{ - QFrame::paintEvent(e); - QPainter p(this); - if (e->rect().intersects(contentsRect())) - p.setClipRegion(e->region().intersect(contentsRect())); - - QSize s = m_doc->size(); - int x = (width() - s.width())/2; - int y = (height() - s.height())/2; - m_doc->paint(&p, QPoint(x, y)); -} - -/*! \internal */ - -void QtMmlWidget::dump() const -{ - m_doc->dump(); -} - -// ******************************************************************* -// Static helper functions -// ******************************************************************* - -static QString entityDeclarations() -{ - QString result = "name != 0; ++ent) { - result += "\tname) + " \"" + ent->value + "\">\n"; - } - - result += "]>\n"; - - return result; -} - -static int interpretSpacing(QString value, int em, int ex, bool *ok) -{ - if (ok != 0) - *ok = true; - - if (value == "thin") - return 1; - - if (value == "medium") - return 2; - - if (value == "thick") - return 3; - - struct HSpacingValue { - const char *name; - float factor; - }; - - static const HSpacingValue g_h_spacing_data[] = - { - { "veryverythinmathspace", (float) 0.0555556 }, - { "verythinmathspace", (float) 0.111111 }, - { "thinmathspace", (float) 0.166667 }, - { "mediummathspace", (float) 0.222222 }, - { "thickmathspace", (float) 0.277778 }, - { "verythickmathspace", (float) 0.333333 }, - { "veryverythickmathspace", (float) 0.388889 }, - { 0, (float) 0 } - }; - - const HSpacingValue *v = g_h_spacing_data; - for (; v->name != 0; ++v) { - if (value == v->name) - return (int)(em*v->factor); - } - - if (value.endsWith("em")) { - value.truncate(value.length() - 2); - bool float_ok; - float factor = value.toFloat(&float_ok); - if (float_ok && factor >= 0) - return (int)(em*factor); - else { - qWarning("interpretSpacing(): could not parse \"%sem\"", value.toLatin1().data()); - if (ok != 0) - *ok = false; - return 0; - } - } - - if (value.endsWith("ex")) { - value.truncate(value.length() - 2); - bool float_ok; - float factor = value.toFloat(&float_ok); - if (float_ok && factor >= 0) - return (int)(ex*factor); - else { - qWarning("interpretSpacing(): could not parse \"%sex\"", value.toLatin1().data()); - if (ok != 0) - *ok = false; - return 0; - } - } - - if (value.endsWith("cm")) { - value.truncate(value.length() - 2); - bool float_ok; - float factor = value.toFloat(&float_ok); - if (float_ok && factor >= 0) { - Q_ASSERT(qApp->desktop() != 0); - QDesktopWidget *dw = qApp->desktop(); - Q_ASSERT(dw->width() != 0); - Q_ASSERT(dw->widthMM() != 0); - return (int)(factor*10*dw->width()/dw->widthMM()); - } - else { - qWarning("interpretSpacing(): could not parse \"%scm\"", value.toLatin1().data()); - if (ok != 0) - *ok = false; - return 0; - } - } - - if (value.endsWith("mm")) { - value.truncate(value.length() - 2); - bool float_ok; - float factor = value.toFloat(&float_ok); - if (float_ok && factor >= 0) { - Q_ASSERT(qApp->desktop() != 0); - QDesktopWidget *dw = qApp->desktop(); - Q_ASSERT(dw->width() != 0); - Q_ASSERT(dw->widthMM() != 0); - return (int)(factor*dw->width()/dw->widthMM()); - } - else { - qWarning("interpretSpacing(): could not parse \"%smm\"", value.toLatin1().data()); - if (ok != 0) - *ok = false; - return 0; - } - } - - if (value.endsWith("in")) { - value.truncate(value.length() - 2); - bool float_ok; - float factor = value.toFloat(&float_ok); - if (float_ok && factor >= 0) { - Q_ASSERT(qApp->desktop() != 0); - QDesktopWidget *dw = qApp->desktop(); - Q_ASSERT(dw->width() != 0); - Q_ASSERT(dw->widthMM() != 0); - return (int)(factor*10*dw->width()/(2.54*dw->widthMM())); - } - else { - qWarning("interpretSpacing(): could not parse \"%sin\"", value.toLatin1().data()); - if (ok != 0) - *ok = false; - return 0; - } - } - - if (value.endsWith("px")) { - value.truncate(value.length() - 2); - bool float_ok; - int i = (int) value.toFloat(&float_ok); - if (float_ok && i >= 0) - return i; - else { - qWarning("interpretSpacing(): could not parse \"%spx\"", value.toLatin1().data()); - if (ok != 0) - *ok = false; - return 0; - } - } - - bool float_ok; - int i = (int)value.toFloat(&float_ok); - if (float_ok && i >= 0) - return i; - - qWarning("interpretSpacing(): could not parse \"%s\"", value.toLatin1().data()); - if (ok != 0) - *ok = false; - return 0; -} - -static int interpretPercentSpacing(QString value, int base, bool *ok) -{ - if (!value.endsWith("%")) { - if (ok != 0) - *ok = false; - return 0; - } - - value.truncate(value.length() - 1); - bool float_ok; - float factor = value.toFloat(&float_ok); - if (float_ok && factor >= 0) { - if (ok != 0) - *ok = true; - return (int)(base*factor/100.0); - } - - qWarning("interpretPercentSpacing(): could not parse \"%s%%\"", value.toLatin1().data()); - if (ok != 0) - *ok = false; - return 0; -} - -static int interpretPointSize(QString value, bool *ok) -{ - if (!value.endsWith("pt")) { - if (ok != 0) - *ok = false; - return 0; - } - - value.truncate(value.length() - 2); - bool float_ok; - int pt_size = (int) value.toFloat(&float_ok); - if (float_ok && pt_size > 0) { - if (ok != 0) - *ok = true; - return pt_size; - } - - qWarning("interpretPointSize(): could not parse \"%spt\"", value.toLatin1().data()); - if (ok != 0) - *ok = false; - return 0; -} - -static const NodeSpec *mmlFindNodeSpec(Mml::NodeType type) -{ - const NodeSpec *spec = g_node_spec_data; - for (; spec->type != Mml::NoNode; ++spec) { - if (type == spec->type) return spec; - } - return 0; -} - -static const NodeSpec *mmlFindNodeSpec(const QString &tag) -{ - const NodeSpec *spec = g_node_spec_data; - for (; spec->type != Mml::NoNode; ++spec) { - if (tag == spec->tag) return spec; - } - return 0; -} - -static bool mmlCheckChildType(Mml::NodeType parent_type, Mml::NodeType child_type, - QString *error_str) -{ - if (parent_type == Mml::UnknownNode || child_type == Mml::UnknownNode) - return true; - - const NodeSpec *child_spec = mmlFindNodeSpec(child_type); - const NodeSpec *parent_spec = mmlFindNodeSpec(parent_type); - - Q_ASSERT(parent_spec != 0); - Q_ASSERT(child_spec != 0); - - QString allowed_child_types(parent_spec->child_types); - // null list means any child type is valid - if (allowed_child_types.isNull()) - return true; - - QString child_type_str = QString(" ") + child_spec->type_str + " "; - if (!allowed_child_types.contains(child_type_str)) { - if (error_str != 0) - *error_str = QString("illegal child ") - + child_spec->type_str - + " for parent " - + parent_spec->type_str; - return false; - } - - return true; -} - -static bool mmlCheckAttributes(Mml::NodeType child_type, const MmlAttributeMap &attr, - QString *error_str) -{ - const NodeSpec *spec = mmlFindNodeSpec(child_type); - Q_ASSERT(spec != 0); - - QString allowed_attr(spec->attributes); - // empty list means any attr is valid - if (allowed_attr.isEmpty()) - return true; - - MmlAttributeMap::const_iterator it = attr.begin(), end = attr.end(); - for (; it != end; ++it) { - QString name = it.key(); - - if (name.indexOf(':') != -1) - continue; - - QString padded_name = " " + name + " "; - if (!allowed_attr.contains(padded_name)) { - if (error_str != 0) - *error_str = QString("illegal attribute ") - + name - + " in " - + spec->type_str; - return false; - } - } - - return true; -} - -static int attributeIndex(const QString &name) -{ - for (unsigned i = 0; i < g_oper_spec_rows; ++i) { - if (name == g_oper_spec_names[i]) - return i; - } - return -1; -} - -static QString decodeEntityValue(QString literal) -{ - QString result; - - while (!literal.isEmpty()) { - - if (!literal.startsWith("&#")) { - qWarning("decodeEntityValue(): bad entity literal: \"%s\"", qPrintable(literal)); - return QString::null; - } - - literal = literal.right(literal.length() - 2); - - int i = literal.indexOf(';'); - if (i == -1) { - qWarning("decodeEntityValue(): bad entity literal: \"%s\"", qPrintable(literal)); - return QString::null; - } - - QString char_code = literal.left(i); - literal = literal.right(literal.length() - i - 1); - - if (char_code.isEmpty()) { - qWarning("decodeEntityValue(): bad entity literal: \"%s\"", qPrintable(literal)); - return QString::null; - } - - if (char_code.at(0) == 'x') { - char_code = char_code.right(char_code.length() - 1); - bool ok; - unsigned c = char_code.toUInt(&ok, 16); - if (!ok) { - qWarning("decodeEntityValue(): bad entity literal: \"%s\"", qPrintable(literal)); - return QString::null; - } - result += QChar(c); - } - else { - bool ok; - unsigned c = char_code.toUInt(&ok, 10); - if (!ok) { - qWarning("decodeEntityValue(): bad entity literal: \"%s\"", qPrintable(literal)); - return QString::null; - } - result += QChar(c); - } - } - - return result; -} - -static const EntitySpec *searchEntitySpecData(const QString &value, const EntitySpec *from = 0) -{ - const EntitySpec *ent = from; - if (ent == 0) - ent = g_xml_entity_data; - for (; ent->name != 0; ++ent) { - QString ent_value = decodeEntityValue(ent->value); - if (value == ent_value) - return ent; - } - return 0; -} - -struct OperSpecSearchResult -{ - OperSpecSearchResult() { prefix_form = infix_form = postfix_form = 0; } - - const OperSpec *prefix_form, - *infix_form, - *postfix_form; - - const OperSpec *&getForm(Mml::FormType f); - bool haveForm(Mml::FormType f) - { return getForm(f) != 0; } - void addForm(const OperSpec *spec) - { getForm(spec->form) = spec; } -}; - -const OperSpec *&OperSpecSearchResult::getForm(Mml::FormType f) -{ - switch (f) { - case Mml::PrefixForm: - return prefix_form; - case Mml::InfixForm: - return infix_form; - case Mml::PostfixForm: - return postfix_form; - } - return postfix_form; // just to avoid warning -} - -/* - Searches g_oper_spec_data and returns any instance of operator name. There may - be more instances, but since the list is sorted, they will be next to each other. -*/ -static const OperSpec *searchOperSpecData(const QString &name) -{ - QByteArray name_latin1_array = name.toLatin1(); - const char *name_latin1 = name_latin1_array.data(); - - // binary search - // establish invariant g_oper_spec_data[begin].name < name < g_oper_spec_data[end].name - - int cmp = qstrcmp(name_latin1, g_oper_spec_data[0].name); - if (cmp < 0) - return 0; - - if (cmp == 0) - return g_oper_spec_data; - - uint begin = 0; - uint end = g_oper_spec_count; - - // invariant holds - while (end - begin > 1) { - uint mid = (begin + end)/2; - - const OperSpec *spec = g_oper_spec_data + mid; - int cmp = qstrcmp(name_latin1, spec->name); - if (cmp < 0) - end = mid; - else if (cmp > 0) - begin = mid; - else - return spec; - } - - return 0; -} - -/* - This searches g_oper_spec_data until at least one name in name_list is found with FormType form, - or until name_list is exhausted. The idea here is that if we don't find the operator in the - specified form, we still want to use some other available form of that operator. -*/ -static OperSpecSearchResult _mmlFindOperSpec(const QStringList &name_list, Mml::FormType form) -{ - OperSpecSearchResult result; - - QStringList::const_iterator it = name_list.begin(); - for (; it != name_list.end(); ++it) { - const QString &name = *it; - - const OperSpec *spec = searchOperSpecData(name); - - if (spec == 0) - continue; - - QByteArray name_latin1_array = name.toLatin1(); - const char *name_latin1 = name_latin1_array.data(); - - // backtrack to the first instance of name - while (spec > g_oper_spec_data && qstrcmp((spec - 1)->name, name_latin1) == 0) - --spec; - - // iterate over instances of name until the instances are exhausted or until we - // find an instance in the specified form. - do { - result.addForm(spec++); - if (result.haveForm(form)) - break; - } while (qstrcmp(spec->name, name_latin1) == 0); - - if (result.haveForm(form)) - break; - } - - return result; -} - -/* - text is a string between and . It can be a character ('+'), an - entity reference ("∞") or a character reference ("∞"). Our - job is to find an operator spec in the operator dictionary (g_oper_spec_data) - that matches text. Things are further complicated by the fact, that many - operators come in several forms (prefix, infix, postfix). - - If available, this function returns an operator spec matching text in the specified - form. If such operator is not available, returns an operator spec that matches - text, but of some other form in the preference order specified by the MathML spec. - If that's not available either, returns the default operator spec. -*/ -static const OperSpec *mmlFindOperSpec(const QString &text, Mml::FormType form) -{ - QStringList name_list; - name_list.append(text); - - // First, just try to find text in the operator dictionary. - OperSpecSearchResult result = _mmlFindOperSpec(name_list, form); - - if (!result.haveForm(form)) { - // Try to find other names for the operator represented by text. - - const EntitySpec *ent = 0; - for (;;) { - ent = searchEntitySpecData(text, ent); - if (ent == 0) - break; - name_list.append('&' + QString(ent->name) + ';'); - ++ent; - } - - result = _mmlFindOperSpec(name_list, form); - } - - const OperSpec *spec = result.getForm(form); - if (spec != 0) - return spec; - - spec = result.getForm(Mml::InfixForm); - if (spec != 0) - return spec; - - spec = result.getForm(Mml::PostfixForm); - if (spec != 0) - return spec; - - spec = result.getForm(Mml::PrefixForm); - if (spec != 0) - return spec; - - return &g_oper_spec_defaults; -} - -static QString mmlDictAttribute(const QString &name, const OperSpec *spec) -{ - int i = attributeIndex(name); - if (i == -1) - return QString::null; - else - return spec->attributes[i]; -} - -static uint interpretMathVariant(const QString &value, bool *ok) -{ - struct MathVariantValue { - const char *value; - uint mv; - }; - - static const MathVariantValue g_mv_data[] = - { - { "normal", Mml::NormalMV }, - { "bold", Mml::BoldMV }, - { "italic", Mml::ItalicMV }, - { "bold-italic", Mml::BoldMV | Mml::ItalicMV }, - { "double-struck", Mml::DoubleStruckMV }, - { "bold-fraktur", Mml::BoldMV | Mml::FrakturMV }, - { "script", Mml::ScriptMV }, - { "bold-script", Mml::BoldMV | Mml::ScriptMV }, - { "fraktur", Mml::FrakturMV }, - { "sans-serif", Mml::SansSerifMV }, - { "bold-sans-serif", Mml::BoldMV | Mml::SansSerifMV }, - { "sans-serif-italic", Mml::SansSerifMV | Mml::ItalicMV }, - { "sans-serif-bold-italic", Mml::SansSerifMV | Mml::ItalicMV | Mml::BoldMV }, - { "monospace", Mml::MonospaceMV }, - { 0, 0 } - }; - - const MathVariantValue *v = g_mv_data; - for (; v->value != 0; ++v) { - if (value == v->value) { - if (ok != 0) - *ok = true; - return v->mv; - } - } - - if (ok != 0) - *ok = false; - - qWarning("interpretMathVariant(): could not parse value: \"%s\"", value.toLatin1().data()); - - return Mml::NormalMV; -} - -static Mml::FormType interpretForm(const QString &value, bool *ok) -{ - if (ok != 0) - *ok = true; - - if (value == "prefix") - return Mml::PrefixForm; - if (value == "infix") - return Mml::InfixForm; - if (value == "postfix") - return Mml::PostfixForm; - - if (ok != 0) - *ok = false; - - qWarning("interpretForm(): could not parse value \"%s\"", value.toLatin1().data()); - return Mml::InfixForm; -} - -static Mml::ColAlign interpretColAlign(const QString &value_list, uint colnum, bool *ok) -{ - QString value = interpretListAttr(value_list, colnum, "center"); - - if (ok != 0) - *ok = true; - - if (value == "left") - return Mml::ColAlignLeft; - if (value == "right") - return Mml::ColAlignRight; - if (value == "center") - return Mml::ColAlignCenter; - - if (ok != 0) - *ok = false; - - qWarning("interpretColAlign(): could not parse value \"%s\"", value.toLatin1().data()); - return Mml::ColAlignCenter; -} - -static Mml::RowAlign interpretRowAlign(const QString &value_list, uint rownum, bool *ok) -{ - QString value = interpretListAttr(value_list, rownum, "axis"); - - if (ok != 0) - *ok = true; - - if (value == "top") - return Mml::RowAlignTop; - if (value == "center") - return Mml::RowAlignCenter; - if (value == "bottom") - return Mml::RowAlignBottom; - if (value == "baseline") - return Mml::RowAlignBaseline; - if (value == "axis") - return Mml::RowAlignAxis; - - if (ok != 0) - *ok = false; - - qWarning("interpretRowAlign(): could not parse value \"%s\"", value.toLatin1().data()); - return Mml::RowAlignAxis; -} - -static QString interpretListAttr(const QString &value_list, int idx, const QString &def) -{ - QStringList l = value_list.split(' '); - - if (l.count() == 0) - return def; - - if (l.count() <= idx) - return l[l.count() - 1]; - else - return l[idx]; -} - -static Mml::FrameType interpretFrameType(const QString &value_list, uint idx, bool *ok) -{ - if (ok != 0) - *ok = true; - - QString value = interpretListAttr(value_list, idx, "none"); - - if (value == "none") - return Mml::FrameNone; - if (value == "solid") - return Mml::FrameSolid; - if (value == "dashed") - return Mml::FrameDashed; - - if (ok != 0) - *ok = false; - - qWarning("interpretFrameType(): could not parse value \"%s\"", value.toLatin1().data()); - return Mml::FrameNone; -} - - -static Mml::FrameSpacing interpretFrameSpacing(const QString &value_list, int em, int ex, bool *ok) -{ - Mml::FrameSpacing fs; - - QStringList l = value_list.split(' '); - if (l.count() != 2) { - qWarning("interpretFrameSpacing: could not parse value \"%s\"", value_list.toLatin1().data()); - if (ok != 0) - *ok = false; - return Mml::FrameSpacing((int)(0.4*em), (int)(0.5*ex)); - } - - bool hor_ok, ver_ok; - fs.m_hor = interpretSpacing(l[0], em, ex, &hor_ok); - fs.m_ver = interpretSpacing(l[1], em, ex, &ver_ok); - - if (ok != 0) - *ok = hor_ok && ver_ok; - - return fs; -} - -static QFont interpretDepreciatedFontAttr(const MmlAttributeMap &font_attr, QFont &fn, int em, int ex) -{ - if (font_attr.contains("fontsize")) { - QString value = font_attr["fontsize"]; - - for (;;) { - - bool ok; - int ptsize = interpretPointSize(value, &ok); - if (ok) { - fn.setPointSize(ptsize); - break; - } - - ptsize = interpretPercentSpacing(value, fn.pointSize(), &ok); - if (ok) { - fn.setPointSize(ptsize); - break; - } - - int size = interpretSpacing(value, em, ex, &ok); - if (ok) { - fn.setPixelSize(size); - break; - } - - break; - } - } - - if (font_attr.contains("fontweight")) { - QString value = font_attr["fontweight"]; - if (value == "normal") - fn.setBold(false); - else if (value == "bold") - fn.setBold(true); - else - qWarning("interpretDepreciatedFontAttr(): could not parse fontweight \"%s\"", value.toLatin1().data()); - } - - if (font_attr.contains("fontstyle")) { - QString value = font_attr["fontstyle"]; - if (value == "normal") - fn.setItalic(false); - else if (value == "italic") - fn.setItalic(true); - else - qWarning("interpretDepreciatedFontAttr(): could not parse fontstyle \"%s\"", value.toLatin1().data()); - } - - if (font_attr.contains("fontfamily")) { - QString value = font_attr["fontfamily"]; - fn.setFamily(value); - } - - return fn; -} - -static QFont interpretMathSize(QString value, QFont &fn, int em, int ex, bool *ok) -{ - if (ok != 0) - *ok = true; - - if (value == "small") { - fn.setPointSize((int)(fn.pointSize()*0.7)); - return fn; - } - - if (value == "normal") - return fn; - - if (value == "big") { - fn.setPointSize((int)(fn.pointSize()*1.5)); - return fn; - } - - bool size_ok; - - int ptsize = interpretPointSize(value, &size_ok); - if (size_ok) { - fn.setPointSize(ptsize); - return fn; - } - - int size = interpretSpacing(value, em, ex, &size_ok); - if (size_ok) { - fn.setPixelSize(size); - return fn; - } - - if (ok != 0) - *ok = false; - qWarning("interpretMathSize(): could not parse mathsize \"%s\"", value.toLatin1().data()); - return fn; -} - -/*! - \class QtMmlDocument - - \brief The QtMmlDocument class renders mathematical formulas written in MathML 2.0. - - This class provides a direct API to the rendering engine used by - QtMmlWidget. It can be used to paint MathML inside other widgets. - - All methods work the same as the corresponding methods in QtMmlWidget. -*/ - -/*! - Constructs an empty MML document. -*/ -QtMmlDocument::QtMmlDocument() -{ - m_doc = new MmlDocument; -} - -/*! - Destroys the MML document. -*/ -QtMmlDocument::~QtMmlDocument() -{ - delete m_doc; -} - -/*! - Clears the contents of this MML document. -*/ -void QtMmlDocument::clear() -{ - m_doc->clear(); -} - -/*! - Sets the MathML expression to be rendered. The expression is given - in the string \a text. If the expression is successfully parsed, - this method returns true; otherwise it returns false. If an error - occured \a errorMsg is set to a diagnostic message, while \a - errorLine and \a errorColumn contain the location of the error. - Any of \a errorMsg, \a errorLine and \a errorColumn may be 0, - in which case they are not set. - - \a text should contain MathML 2.0 presentation markup elements enclosed - in a element. -*/ -bool QtMmlDocument::setContent(QString text, QString *errorMsg, - int *errorLine, int *errorColumn) -{ - return m_doc->setContent(text, errorMsg, errorLine, errorColumn); -} - -/*! - Renders this MML document with the painter \a p at position \a pos. -*/ -void QtMmlDocument::paint(QPainter *p, const QPoint &pos) const -{ - m_doc->paint(p, pos); -} - -/*! - Returns the size of this MML document, as rendered, in pixels. -*/ -QSize QtMmlDocument::size() const -{ - return m_doc->size(); -} - -/*! - Returns the name of the font used to render the font \a type. - - \sa setFontName() setBaseFontPointSize() baseFontPointSize() QtMmlWidget::MmlFont -*/ -QString QtMmlDocument::fontName(QtMmlWidget::MmlFont type) const -{ - return m_doc->fontName(type); -} - -/*! - Sets the name of the font used to render the font \a type to \a name. - - \sa fontName() setBaseFontPointSize() baseFontPointSize() QtMmlWidget::MmlFont -*/ -void QtMmlDocument::setFontName(QtMmlWidget::MmlFont type, const QString &name) -{ - m_doc->setFontName(type, name); -} - -/*! - Returns the point size of the font used to render expressions - whose scriptlevel is 0. - - \sa setBaseFontPointSize() fontName() setFontName() -*/ -int QtMmlDocument::baseFontPointSize() const -{ - return m_doc->baseFontPointSize(); -} - -/*! - Sets the point \a size of the font used to render expressions - whose scriptlevel is 0. - - \sa baseFontPointSize() fontName() setFontName() -*/ -void QtMmlDocument::setBaseFontPointSize(int size) -{ - m_doc->setBaseFontPointSize(size); -} diff --git a/qtmmlwidget/qtmmlwidget.h b/qtmmlwidget/qtmmlwidget.h deleted file mode 100644 index 2c9b1c6..0000000 --- a/qtmmlwidget/qtmmlwidget.h +++ /dev/null @@ -1,124 +0,0 @@ -/**************************************************************************** -** -** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of a Qt Solutions component. -** -** Commercial Usage -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Solutions Commercial License Agreement provided -** with the Software or, alternatively, in accordance with the terms -** contained in a written agreement between you and Nokia. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain -** additional rights. These rights are described in the Nokia Qt LGPL -** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this -** package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** Please note Third Party Software included with Qt Solutions may impose -** additional restrictions and it is the user's responsibility to ensure -** that they have met the licensing requirements of the GPL, LGPL, or Qt -** Solutions Commercial license and the relevant license of the Third -** Party Software they are using. -** -** If you are unsure which license is appropriate for your use, please -** contact Nokia at qt-info@nokia.com. -** -****************************************************************************/ - -#ifndef QTMMLWIDGET_H -#define QTMMLWIDGET_H - -#include -#include - -class MmlDocument; - -#if defined(Q_WS_WIN) -# if !defined(QT_QTMMLWIDGET_EXPORT) && !defined(QT_QTMMLWIDGET_IMPORT) -# define QT_QTMMLWIDGET_EXPORT -# elif defined(QT_QTMMLWIDGET_IMPORT) -# if defined(QT_QTMMLWIDGET_EXPORT) -# undef QT_QTMMLWIDGET_EXPORT -# endif -# define QT_QTMMLWIDGET_EXPORT __declspec(dllimport) -# elif defined(QT_QTMMLWIDGET_EXPORT) -# undef QT_QTMMLWIDGET_EXPORT -# define QT_QTMMLWIDGET_EXPORT __declspec(dllexport) -# endif -#else -# define QT_QTMMLWIDGET_EXPORT -#endif - -class QT_QTMMLWIDGET_EXPORT QtMmlWidget : public QFrame -{ - public: - enum MmlFont { NormalFont, FrakturFont, SansSerifFont, ScriptFont, - MonospaceFont, DoublestruckFont }; - - QtMmlWidget(QWidget *parent = 0); - ~QtMmlWidget(); - - QString fontName(MmlFont type) const; - void setFontName(MmlFont type, const QString &name); - int baseFontPointSize() const; - void setBaseFontPointSize(int size); - - bool setContent(const QString &text, QString *errorMsg = 0, - int *errorLine = 0, int *errorColumn = 0); - void dump() const; - virtual QSize sizeHint() const; - - void setDrawFrames(bool b); - bool drawFrames() const; - - void clear(); - - protected: - virtual void paintEvent(QPaintEvent *e); - - private: - MmlDocument *m_doc; -}; - - -class QT_QTMMLWIDGET_EXPORT QtMmlDocument -{ -public: - QtMmlDocument(); - ~QtMmlDocument(); - void clear(); - - bool setContent(QString text, QString *errorMsg = 0, - int *errorLine = 0, int *errorColumn = 0); - void paint(QPainter *p, const QPoint &pos) const; - QSize size() const; - - QString fontName(QtMmlWidget::MmlFont type) const; - void setFontName(QtMmlWidget::MmlFont type, const QString &name); - - int baseFontPointSize() const; - void setBaseFontPointSize(int size); -private: - MmlDocument *m_doc; -}; - -#endif diff --git a/keduvocdocument/sharedkvtmlfiles.cpp b/sharedkvtmlfiles.cpp similarity index 100% rename from keduvocdocument/sharedkvtmlfiles.cpp rename to sharedkvtmlfiles.cpp diff --git a/keduvocdocument/sharedkvtmlfiles.h b/sharedkvtmlfiles.h similarity index 100% rename from keduvocdocument/sharedkvtmlfiles.h rename to sharedkvtmlfiles.h diff --git a/widgets/CMakeLists.txt b/widgets/CMakeLists.txt deleted file mode 100644 index 7d531c1..0000000 --- a/widgets/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ - - -########### next target ############### - -set(kdeeduwidgets_PART_SRCS - ${CMAKE_CURRENT_BINARY_DIR}/kdeeduwidgets.cpp -) - -KDE4_ADD_WIDGET_FILES(kdeeduwidgets_PART_SRCS kdeedu.widgets) - -kde4_add_plugin(kdeeduwidgets ${kdeeduwidgets_PART_SRCS}) - - - -target_link_libraries(kdeeduwidgets ${KDE4_KDEUI_LIBS}) - -install(TARGETS kdeeduwidgets DESTINATION ${PLUGIN_INSTALL_DIR}/plugins/designer ) - diff --git a/widgets/kdeedu.widgets b/widgets/kdeedu.widgets deleted file mode 100644 index 2d3b6ce..0000000 --- a/widgets/kdeedu.widgets +++ /dev/null @@ -1,4 +0,0 @@ -[Global] -PluginName=KDEEduWidgets -Includes=kcomponentdata.h -Init=new KComponentData("kdeeduwidgets"); -- 2.47.3